Unity接入指引
本文是介绍Unity SDK的详细文档,包含了基本的接入流程,和高级的接口使用介绍,以及针对Unity引擎如何更早进行初始化等内容。
如果想快速接入,验证平台和SDK功能,建议查看项目菜单中的“接入指南”。引导中已经按项目具体的信息(平台,引擎,国内/海外,AppID)生成了针对此项目的初始化代码,可以直接复制使用。如下图所示:
项目创建:公司外部项目支持自助创建项目,但有免费试用时长。公司内部项目,企业微信联系“CrashSight小助手”开通。
本文档适用于CrashSight SDK 4.2.x版本。4.3.x版本接入请参考新版Unity SDK开发接入
1 Unity引擎C#接入方案
1.1 下载并导入Unity Plugin到Unity项目工程
在平台成功创建项目后,在侧边栏的“接入指南”中,可以下载到与项目平台和引擎相匹配的SDK。如下图所示:
1.2 初始化CrashSight
选择第一个场景,或者主场景(scene), 在尽可能较早加载的脚本中调用如 下代码进行初始化:
// TODO NOT Required. Enable debug log print, please set false for release version
// Debug开关,Debug模式下会打印更多便于问题定位的Log.
#if DEBUG
CrashSightAgent.ConfigDebugMode (true);
#endif
#if UNITY_IPHONE || UNITY_IOS
// 设置上报的目标域名,请根据项目需求进行填写。(必填)
CrashSightAgent.ConfigCrashServerUrl(CrashSightUploadUrliOS);
// 设置上报所指向的APP ID, 并进行初始化。APP ID可以在管理端更多->产品设置->产品信息中找到。
CrashSightAgent.InitWithAppId(CrashSightAppIDForiOS);
#elif UNITY_ANDROID
CrashSightAgent.ConfigCrashServerUrl(CrashSightUploadUrlAndroid);
CrashSightAgent.InitWithAppId(CrashSightAppIDForAndroid);
#elif UNITY_STANDALONE_WIN
CrashSightAgent.InitContext(UserId, AppVersion, CrashSightAppKeyForWindows);
// UserId和AppVersion可根据需要自行决定,APP Key可以在管理端更多->产品设置->产品信息中找到。
#endif
上报域名
国内公有云:
海外公有云
- Android: https://android.crashsight.wetest.net/pb/async
- iOS: https://ios.crashsight.wetest.net/pb/sync
1.3 iOS集成配置
- 1)在Unity中修改项目的偏好设置(Build Settings) a. 按下 Ctrl+Shift+B打开Build Settings面板, 点击Player Settings切换到Setting for iOS选项卡,选择Other Settings栏,修改Optimization配置项Script Call Optimization的值为Slow and Safe
- 2)修改导出的Xcode工程的编译配置,切换到Build Phases选项卡, 在Link Binary With Libraries栏目下添加如下依赖性:
- libc++.dylib 或 libc++.tdb 用于引入c++标准库
- libz.dylib 或 libz.tdb 用于对上报的数据进行压缩
- Security.framework 用于存储keychain
- SystemConfiguration.framework 用于读取异常发生时的系统信息
- MetricKit.framework 用于获取apple提供的app诊断信息(弱引用,请选择“optional”)
- OSLog.framework 用于获取NSLog日志信息(弱引用,请选择“optional”)
- CFNetwork.framework 用于获取VPN状态
注意:
- i. 如果项目已经添加过这些依赖项,不用重复添加。
- ii. 通过XUPorter集成无需在Xcode中添加配置。
1.4 Windows集成配置
项目打包完成后,找到打包文件路径中_Data\Plugins\x86_64下CrashSight64.dll,在同级目录下创建CrashSightConfig64.dat文件(新建文本文档,然后修改后缀即可) CrashSightConfig64.dat文件需设置三个参数:
1)游戏进程exe名称,即GameName。 2)上报地址,即DomainUrl。 3)项目ID,即文件中的AppId。
<CrashSightConfig __version="1">
<GameName>Test-Game.exe</GameName>
<LobbyName></LobbyName>
<IgnoreDllCnt>2</IgnoreDllCnt>
<IgnoreDlls>TenSLX.dll</IgnoreDlls>
<IgnoreDlls>Tensafe.dll</IgnoreDlls>
<AppId>0620edc732</AppId>
<DomainUrl>pc.crashsight.qq.com</DomainUrl>
<LogOutput>0620edc732</LogOutput>
</CrashSightConfig>
其中<LogOutput>行是debug日志开关,添加后可以在CrashSight64.dll同目录下生成CrashSightLog目录,其中存放着CrashSight的运行日志。正式上线前请去除这一行。
1.5 Unity 接入演示
- 1)双击下载好的插件中的CrashSightPlugin.unitypackage包,在Unity中出现如下界面,导入插件。
- 2)初始化。
private const string CrashSightAppIDForiOS = "685a68759e";
private const string CrashSightAppIDForAndroid = "e6af377f84";
private const string CrashSightUploadUrliOS = "https://ios.crashsight.qq.com/pb/sync";
private const string CrashSightUploadUrlAndroid = "https://android.crashsight.qq.com/pb/async";
private const string CrashSightAppKeyForWindows = "b10d12a8-5769-4467-98b2-4658b2efd847";
CrashSightAgent.ConfigDebugMode (true);
#if UNITY_IPHONE || UNITY_IOS
CrashSightAgent.ConfigCrashServerUrl(CrashSightUploadUrliOS);
CrashSightAgent.InitWithAppId(CrashSightAppIDForiOS);
#elif UNITY_ANDROID
CrashSightAgent.ConfigCrashServerUrl(CrashSightUploadUrlAndroid);
CrashSightAgent.InitWithAppId(CrashSightAppIDForAndroid);
#elif UNITY_STANDALONE_WIN
CrashSightAgent.InitContext("TestUserId", "1.0.1", CrashSightAppKeyForWindows);
#endif
- 3)iOS接入与安卓类似,不过需要将项目打包为xcode项目,然后在xcode项目中进行配置。Windows需要修改CrashSightConfig64.dat中的配置信息。
1.6 接入结果测试
CrashSight测试接口
测试Java崩溃(Android)
static void TestJavaCrash();
测试Object-C崩溃(iOS)
static void TestOcCrash();
测试Native崩溃(Android&iOS)
static void TestNativeCrash();
强制Unity崩溃(Windows可用)
UnityEngine.Diagnostics.Utils.ForceCrash(ForcedCrashCategory.AccessViolation);
1.6.1 iOS测试方法
- a. 开启Debug模式,初始化CrashSight,并给定合适的配置参数
- b. 联网上报:检查测试设备日志中是否打印“begin to upload <CSAnalyticsLogic” 或者 “cmd: 641”
- c. 崩溃捕获:检查测试设备日志中是否打印“Handle the crash scene in callback”
- d. 上报异常:检查测试设备日志中是否打印“begin to upload <CSCrashLogic” 或者 “cmd: 631”
1.6.2 Android测试方法
- a. 开启Debug模式,初始化CrashSight,并给定合适的配置参数
- b. 联网上报:检查logcat日志是否打印“[Upload] Run upload task with cmd: 840”
- c. 崩溃捕获:检查logcat日志是否打印“HandleSignal start”
- d. 上报异常:检查logcat日志是否打印"[Upload] Run upload task with cmd: 830"