Unity Plugin 常见问题

1. 集成SDK后,编译报错ld: symbol(s) not found for architecture arm64,是什么原因,如何解决?

如果集成后编译报如下错误:

则说明没有成功集成并链接静态库libBuglyBridge.a

开发者需检查Xcode工程的Link Binary With Libraries配置中是否已添加静态库libBuglyBridge.a

2. 初始化SDK后,为什么仍然无法捕获上报C#异常?

如果无法捕获上报C#异常,可以可以按照下面方式进行排查:

  1. 检查是否有其他存在注册Application.RegisterLogCallback(LogCallback)的逻辑,由于系统默认的LogCallback是单播实现, 所以只能维持一个回调实例,你可以调用 BuglyAgent.RegisterLogCallback(BuglyAgent.LogCallbackDelegate)方法来替代日志回调的注册。

  2. 检查对应平台的SDK组件是否已集成到项目。

3. 为什么发生C#异常后,应用直接崩溃?

如果遇到此场景,可以把脚本中InitWithAppId注释,保留EnableExceptionHandler方法调用,并在对应的Android或iOS工程中初始化SDK的组件。

4. Unity 4.x 的 Android项目没有上报,是什么原因?

Unity 4.x 的 Android项目需要BuglyPlugin/libs目录下的内容剪切到plugin/android目录下。 因为4.x只识别plugin目录下的jar包和so文件。

5. Unity android项目需要配置符号表吗?

1) Unity项目的Android工程生成的Java代码只有几个入口类,没有proguard混淆必要,所以无需配置符号表(即mapping信息)

2) Unity项目的Android工程中默认加载的几个Native库(libmono.so,libunity.so等)没有的debug版本,所以开发者也无法获得对应的符号信息进行配置。

注意:

如果开发者有自己开发独立的功能组件(.jar或.so)集成到Unity项目中,需配置相应的符号表信息(开启了“Development Build”选项,development文件夹里面的就是debug版本的so,可以用Bugly的符号表工具生成符号表文件并上传到版本管理)