unity深度profile(deep-profile)
一、准备工作
我这边用的是Unity2017.4.40,最后一个版本,用的mumu模拟器,有手机可以用手机。
二、打包选项
Development Build,刚需就这一个,不是网上说的还要Autoconnect Profiler,这个选项只是方便你连接机器而已。
Scripting Backend一定要是mono,只有个才能deep(2019i2cpp开始支持),官方文档里面有讲,如果你是没有修改启动的Activity,勾选v7应该是没问题的,如果你是修改的启动的Activity,一定要勾选x86,为了保险起见还是两个都勾选上。
以下三种处理情况
情况1
没有自定义AndroidManifest,就是使用unity自带的方式直接出包,直接安装就行了,对了记录一下包名,使用下面几个命令就能deep了。
1 | #这个命令是连接mumu模拟器,可以查询怎么连接其他模拟器或者手机(自行查错) |
情况2
自定义了AndroidManifest,启动Activity继承了UnityPlayerActivity,可以用情况1去尝试,这里给出更好的处理方式。如果你是2018可以略过,这个应该是2017才需要处理,修改一个onCreate, 增加一个updateUnityCommandLineArguments
1 | protected String updateUnityCommandLineArguments(String cmdLine) |
然后再进行情况1处理基本上就可以解决问题了。
情况3
如果你的启动Activity不是继承UnityPlayerActivity,那么你需要在进入UnityPlayerActivity或者他的子类的时候添加参数,看下面代码。
1 | // 这个UnityPlayerActivity换成你们项目的实现即可了。 |
如果是这种情况,你可以不用从命令行启动,是不是非常方便,不过这个参数需要你们项目控制开关。
三、我碰到的错误
这个是没有勾选x86,直接闪退,勾选x86就行了。
还有unity -deepprofiling 这两个参数是给UnityPlayerActivity这个activity用的,并不是启动activity,要注意分清情况。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment