升级Firebase.Crashlytics后Xamarin.Android应用运行时崩溃如何解决
Xamarin.Android升级Firebase v118.x后运行时类缺失解决方案
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.datatransport.Transformer" on path: DexPathList[[zip file "/data/app/11-17 15:25:15.884 E/AndroidRuntime( 5560): at com.google.firebase.FirebaseApp.initializeAllApis(FirebaseApp.java:584) [AndroidRuntime] at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:303) [AndroidRuntime] at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:267) [AndroidRuntime] at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:252) [AndroidRuntime] at com.google.firebase.provider.FirebaseInitProvider.onCreate(FirebaseInitProvider.java:51)
该报错根因为高版本Firebase依赖的Google数据传输核心包未被自动安装,属于Xamarin.Android Firebase包的依赖传递缺失问题,可按以下步骤解决:
- 手动安装缺失的核心依赖包
打开NuGet包管理器,为Android项目安装以下两个稳定版NuGet包:Xamarin.Google.Android.DataTransport.TransportRuntimeXamarin.Google.Android.DataTransport.TransportBackendCct
安装时优先选择最新稳定版,确保和当前项目中Firebase、AndroidX包版本适配。
- 全量清理项目缓存后重建
Xamarin旧构建缓存会导致新依赖不生效,需执行以下操作:- 关闭IDE,删除解决方案根目录、Android项目目录下的所有
bin、obj文件夹 - 清空本地NuGet缓存,可通过VS工具选项中的NuGet包管理器功能执行,或运行命令
nuget locals all -clear - 重新打开解决方案,还原所有NuGet包后重新编译部署
- 关闭IDE,删除解决方案根目录、Android项目目录下的所有
- 检查MultiDex配置正确性
若项目开启了MultiDex,需确认配置无误避免类被排除:- minSdkVersion < 21的项目,需在
AndroidManifest.xml的application节点添加属性android:name="androidx.multidex.MultiDexApplication",或自定义Application类继承MultiDexApplication - 确认Android项目属性的打包设置中,「启用Multi-Dex」已勾选,Dex编译器选择d8
- minSdkVersion < 21的项目,需在
- 排查依赖版本冲突
检查所有已安装的Firebase系列包、AndroidX系列包的版本是否统一,避免同一依赖存在多个不同版本共存。同时确认所有旧Fabric相关包(包括Xamarin.Android.Fabric、Xamarin.Crashlytics以及低于118版本的Firebase Crashlytics包)已完全移除。
内容的提问来源于stack exchange,提问作者slprog1
相关产品推荐
相关产品推荐

