Unity 6安卓游戏集成Branch SDK时出现ClassNotFoundException问题求助
Unity 6安卓游戏集成Branch SDK时出现ClassNotFoundException问题求助
看起来你遇到了挺闹心的问题——之前好好跑的Branch SDK突然罢工,打包安卓后抛出了ClassNotFoundException,找不到io.branch.unity.BranchUnityWrapper,还定位到是Branch.initSession(CallbackWithBranchUniversalObject)这行初始化代码出的问题对吧?结合你给出的信息,我整理了几个大概率能解决问题的方向:
1. 优先排查代码混淆(Minify)的问题
你开启了Debug和Release模式的Minify,但没有自定义ProGuard规则,Unity的默认混淆逻辑很可能把Branch SDK的关键类给移除或者重命名了,导致运行时找不到对应类。解决步骤如下:
- 在Unity项目的
Assets/Plugins/Android目录下(没有的话就新建这个目录)创建proguard-user.txt文件 - 在文件里添加Branch官方要求的混淆规则:
-keep class io.branch.** { *; } -keep class com.android.installreferrer.** { *; } -dontwarn io.branch.** - 回到Unity的Player Settings -> Publishing Settings -> Minify,确认Debug和Release模式下ProGuard的配置文件指向这个
proguard-user.txt(Unity一般会自动识别,要是没识别可以手动指定路径)
2. 检查Branch SDK的插件文件是否损坏/缺失
有时候Unity的插件会因为项目同步、打包缓存异常等原因出现文件损坏或丢失,之前能用突然失效大概率和这个有关:
- 先彻底移除现有Branch SDK:删除
Assets/Branch目录,以及Assets/Plugins/Android下所有和Branch相关的.aar文件 - 重新下载并导入对应版本(v5.12.0)的Branch Unity SDK,确保导入过程没有报错
- 清理Unity的打包缓存:点击File -> Build Settings -> Clean Build Folder,之后重新打包测试
3. 排查Gradle依赖配置异常
你提到mainTemplate.gradle里指定了io.branch.sdk.android:library:5.12.0,但可能存在依赖冲突或者同步异常:
- 打开Unity的Player Settings -> Publishing Settings,勾选Custom Main Gradle Template和Custom Base Gradle Template,确保gradle模板是自定义可编辑的
- 检查
mainTemplate.gradle里的Branch依赖是否正确,有没有重复引入的依赖项 - 打包前点击Assets -> Refresh,让Unity重新同步安卓依赖
- 如果还是有问题,可以尝试删除
Library目录(记得先备份项目),然后重新打开Unity让它重新生成所有缓存文件
快速验证小技巧
你可以先暂时关闭Minify(取消Debug和Release的Minify勾选),然后打包测试。如果此时错误消失,那就能100%确认是混淆规则的问题,再回到第一步配置混淆规则即可。
内容来源于stack exchange
相关产品推荐
相关产品推荐

