我的build.gradle是:
// for facebook account kit
compile 'com.facebook.android:account-kit-sdk:4.+'
// for google firebase database
compile 'com.google.firebase:firebase-database:9.6.0'
// for google firebase cloud messaging
compile 'com.google.firebase:firebase-messaging:9.6.0'
重建项目后,发生错误。
错误:(74,27)错误:无法访问AbstractSafeParcelable 找不到 com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable class
============================================== < / p>
分辨率:
原因是在重建项目后,将最新版本的“account-kit-sdk”下载到4.25.0,新版本更改了一些关于gms的内容,因此与firebase消息传递发生冲突,
所以我降级了account-kit-sdk版本,将导入版本从“account-kit-sdk:4. +”更改为“account-kit-sdk:4.24.0”
然后问题就解决了。
但我认为这不是解决这个问题的最佳解决方案。
欢迎朋友添加一些新方法来解决此问题。
感谢。
答案 0 :(得分:1)
版本4.25.0 com.facebook.android:account-kit-sdk
依赖于com.google.android.gms:play-services-auth-api-phone:11.0.1
版本4.24.0中不存在。 com.google.android.gms:play-services-auth-api-phone
在其他com.google.android.gms
模块上添加了许多传递依赖项,包括base
,basement
,tasks
,auth
和auth-base
。
Firebase库还对许多com.google.android.gms
模块具有传递依赖性。如果构建中的所有Firebase和Play服务模块的版本号不相同,则会出现此类问题。
一个简单的解决方案是使用您在gradle依赖项中列出的所有Firebase和Play服务库的版本11.0.1:
// for google firebase database
compile 'com.google.firebase:firebase-database:11.0.1'
// for google firebase cloud messaging
compile 'com.google.firebase:firebase-messaging:11.0.1'
您还应该为Facebook库指定固定版本号,以使您的构建可预测且可重复:
compile 'com.facebook.android:account-kit-sdk:4.25.0'
将版本指定为“4. +”的风险是,当发布新版本的Play服务库的新版本具有传递依赖性时,新的Facebook lib版本将自动使用,您的构建将再次休息。
要调试此类问题,您可以在Android Studio中打开Gradle窗口,然后双击:app - &gt;任务 - &gt; android - &gt; androidDependencies 生成依赖树。然后可以检查树以找到版本不匹配。