1、基本流程
上传:手机端点按钮生成内存快照,自动上传到服务器
下载:Jenkins定时触发下载程序,从服务器获取最新的内存快照文件名称,并下载,并通知服务器删除该文件。
分析:下载程序下载内存快照文件到本地后,调用Unity编辑器模式下的静态函数,分析该内存快照,生成.json文件。
2、Jenkins配置相关
安装好Jenkins后(https://jenkins.io/zh/doc/pipeline/tour/getting-started/),新建Item,类型为Freestyle Project。
点这个project的“配置”,
在“构建触发器”部分,勾选“Build periodically”,填“日程表”为“H/2 * * * *”,表示每2分钟触发一次(已经是最小时间间隔),也可以配置为其他数字。
在“构建”部分,点“增加构建步骤”,“Execute Windows Batch Command”,填写downloader.bat的完整路径,保存。
3、服务器部分
使用xampp,打开xampp-control.exe控制面板,点start Apache,其他不用开。
根据配置的端口号,把防火墙的该端口号打开。
把php.ini里的upload_max_filesize和post_max_size的值改大一些。这里设置了upload_max_filesize=1024M,post_max_size=1024M。
设置虚拟目录snapshot,用来存放快照文件,方法见搜索引擎。
期间可能还会遇到其他问题,搜索引擎解决。
三个php文件:
SnapshotUpload.php:用来接收手机端上传的快照文件。可以通过类似 http://61.129.46.203:8081/SnapshotUpload.php 格式的URL进行访问。
$_REQUEST['Name']、$_REQUEST['OperatingSystem']、$_REQUEST['Version']分别用来获取手机端程序里的WWWForm.AddField()添加的三个字段,name是快照文件名,另外再生成.info文件用来保存OperatingSystem、Version等信息。
GetLatestSnapshotName.php:通过它可以获取最新的快照文件名。有个小细节是,限定了要同时有xx.snap和xx.info存在。
DeleteSnapshot.php:删除指定的快照文件。
4、处理下载和分析的程序
downloader.bat:
用于下载的批处理文件。
其中,“D:\aa\profiler.exe -batchmode -localPath D:\bb -analyzeOutputPath D:\cc”,D:\aa是profiler.exe所在目录,D:\bb是下载的快照文件存放的目录,D:\cc是分析快照文件后输出的.json文件存放的目录。
profiler.exe:
用Unity API写的下载程序,下载完快照文件后,会触发snapshotAnalyze.bat(需要把它放在profiler.exe所在的目录下),用于分析内存快照。
snapshotAnalyze.bat:
其中,“D:\cc\unity.exe -projectPath D:\dd -batchmode -executeMethod "CustomProfiler.Editor.Menu.LoadSnapshotCMD" -quit -snapshotPath %1 -outputPath %2”,
D:\cc是unity.exe所在目录,D:\dd是分析内存快照的Unity工程目录(内存快照分析只能在编辑器模式下执行,所以采用这种方式);CustomProfiler.Editor.Menu.LoadSnapshotCMD是执行快照分析的静态函数;
%1表示从调用者profiler.exe传入的内存快照文件路径,%2表示表示从调用者profiler.exe传入的即将要输出的分析结果.json文件路径。
把上面提到的4个路径(D:\aa,D:\bb,D:\cc,D:\dd)修改为实际路径即可。
网友评论