unity-Profiler调试 Android 、ios 的正确姿势
使用 unity 自带的 Profiler 调试 打出来的 Android 、ios 包
Android 使用 夜神模拟器 作为安卓设备,当然你也可以用真机
ios 使用真机
官网文档 - https://docs.unity3d.com/2018.4/Documentation/Manual/profiler-profiling-applications.html
Android 平台
1. 前置条件
- 安卓的相关环境
- java、ant、sdk、ndk 什么的都装好(其实这里只需要 sdk 里面的 adb),配好 adb 工具的环境变量(意思就是 cmd 里直接输 adb 命令即可)
打包 Android 包是,勾选 如下几个选项
Developmemnt Build
Autoconnect Profiler

代码中则是
1
2BuildOptions opts = BuildOptions.Development | BuildOptions.ConnectWithProfiler;
BuildPipeline.BuildPlayer(GetBuildScenes(), path, mPackArg.target, opts);
2. 步骤
- unity编辑器设置为 Android 平台,如上图所示(这里被坑了有点久,一直在 PC平台 上写代码,忘了设置这个导致一直连不上 Profiler)
- File -> Build settings -> Switch Platform(Android)
运行游戏
adb 调试设备
- (这里使用 夜神模拟器,所以需要使用 命令连接端口,真机的话需要安装对应的驱动,并打开 Android设备的 调试模式 - 传输照片模式-PTP )
- adb连接模拟器:
adb connect 127.0.0.1:62001
- 连接unity和游戏:
adb forward tcp:34999 localabstract:Unity-com.xxxx.yyy
,com.xxxx.yyy 为游戏的包名,也就是 Bundle Identifier ( unity2018.3.11f1 端口换成了 34999 )
- adb连接模拟器:
- 下面是py偷懒脚本,双击一下就好了,相关命令也在里面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#!/usr/bin/env python
import os
import sys
Cmd_kill = "adb kill-server"
Cmd_start = "adb start-server"
Cmd_connect = "adb connect 127.0.0.1:62001"
Cmd_devices = "adb devices"
Cmd_profiler = "adb forward tcp:34999 localabstract:Unity-com.xxxx.yyy"
def conn2Nox():
os.system(Cmd_kill)
os.system(Cmd_start)
os.system(Cmd_connect)
os.system(Cmd_devices)
os.system(Cmd_profiler)
os.system("pause")
pass
def main():
conn2Nox()
pass
if __name__ == "__main__":
main()
- (这里使用 夜神模拟器,所以需要使用 命令连接端口,真机的话需要安装对应的驱动,并打开 Android设备的 调试模式 - 传输照片模式-PTP )
unity编辑器打开Profiler, Windows -> Profiler(ctrl + 7)
Active Profiler -> AndroidPlayer(ADB@127.0.0.1:34999)
3. 顺便看看数据
看这个 SerializedFile,其实就是 AssetBundle 的序列化文件在内存的占用,当前有 107 个AB, 107 * 512 也超不多就是 50m+ 了
常见问题
Q: 连不上夜神模拟器?
现在(20180523)链接使用输入ip 127.0.0.1 才能链接
Q: adb 连不上 夜神模拟器, 报错: could not read ok from ADB Server
杀掉adb进程, 命令:
taskkill /f /im adb.exe
参考: adb socket not working and daemon - https://stackoverflow.com/questions/38845579/adb-socket-not-working-and-daemon
IOS 平台
相比 Android 简单很多
1. 前置条件
mac 操作系统环境(打包及profile都在该环境下)
勾选以下选项 及 debug 模式
- Symlink Unity libraries 可以不勾选
2. 打包
直接打出包就可以链接profile调试