Unity构建的Android应用因Firebase AAR文件NoClassDefFoundError崩溃
Unity Firebase Android构建启动崩溃问题排查与解决
问题现象
构建后的Android应用启动即崩溃,抛出类找不到异常:
Exception java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/appcheck/interop/InternalAppCheckTokenProvider; at com.google.firebase.database.DatabaseRegistrar.getComponents (DatabaseRegistrar.java:41) at com.google.firebase.tracing.ComponentMonitor.processRegistrar (ComponentMonitor.java:28) at com.google.firebase.components.ComponentRuntime.discoverComponents (ComponentRuntime.java:117) at com.google.firebase.components.ComponentRuntime.<init> (ComponentRuntime.java:99) at com.google.firebase.components.ComponentRuntime.<init> (ComponentRuntime.java:46) at com.google.firebase.components.ComponentRuntime$Builder.build (ComponentRuntime.java:387) at com.google.firebase.FirebaseApp.<init> (FirebaseApp.java:438) at com.google.firebase.FirebaseApp.initializeApp (FirebaseApp.java:295) at com.google.firebase.FirebaseApp.initializeApp (FirebaseApp.java:263) at com.google.firebase.FirebaseApp.initializeApp (FirebaseApp.java:248) ...
环境信息:
- Unity版本:2021.3.11f1
- Firebase Unity插件版本:10.7.0(已尝试.unitypackage和Package Manager两种安装方式)
依赖检查结果:
- Android依赖解析器下载的AAR包含:
- com.google.firebase.firebase-database-20.2.0.aar
- com.google.firebase.firebase-appcheck-interop-17.0.0.aar
- 查看firebase-appcheck-interop-17.0.0.aar,仅存在
InteropAppCheckTokenProvider类,不存在报错中要求的InternalAppCheckTokenProvider类
问题原因
这是Firebase Android SDK依赖版本不兼容导致的:
Firebase Database 20.2.0版本依赖的InternalAppCheckTokenProvider类,在firebase-appcheck-interop 17.0.0版本中已被重命名为InteropAppCheckTokenProvider,而Firebase Unity插件10.7.0的依赖映射逻辑出现错误,拉取了不匹配的appcheck-interop版本,最终引发类找不到异常。
解决步骤
强制指定兼容的appcheck-interop版本
在Unity项目中,打开Player Settings > Android > Publishing Settings,勾选Custom Main Gradle Template生成Assets/Plugins/Android/mainTemplate.gradle文件,然后在该文件的dependencies块中添加强制依赖配置:dependencies { // 指定与firebase-database 20.2.0兼容的版本 implementation 'com.google.firebase:firebase-appcheck-interop:16.1.2' }清理缓存后重新构建
- 删除项目根目录下的
Library、Temp文件夹 - 删除
Assets/Plugins/Android目录下的缓存AAR文件 - 重启Unity后重新执行Android构建
- 删除项目根目录下的
降级Firebase Unity插件版本
如果上述方法无效,可尝试降级到Firebase Unity插件10.6.0或更早版本,这些版本的依赖映射逻辑已修复该版本冲突问题。
是否需要提交Bug?
需要。该问题属于Firebase Unity插件的依赖版本映射错误,建议通过Firebase官方反馈渠道提交Bug,提交时需包含:
- Unity版本和Firebase插件版本
- 完整报错日志
- 已确认的依赖AAR版本信息
- 已尝试的解决方法
内容的提问来源于stack exchange,提问作者LAmiSolah
相关产品推荐
相关产品推荐

