0

我的 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 类

===============================================

解析度:

原因是重建项目后,gradle下载最新版本的“account-kit-sdk”到4.25.0,新版本对gms做了一些改动,所以和firebase消息有些冲突,

所以我降级了 account-kit-sdk 版本,将导入版本从“account-kit-sdk:4.+”更改为“account-kit-sdk:4.24.0”

然后问题就解决了。

但我认为这不是解决这个问题的最佳方法。

欢迎朋友添加一些新的方法来解决这个问题。

谢谢。

4

1 回答 1

1

版本 4.25.0 对 4.24.0版本中不存在 com.facebook.android:account-kit-sdk的依赖项。在其他模块上添加了许多传递依赖项,包括、、、和.com.google.android.gms:play-services-auth-api-phone:11.0.1com.google.android.gms:play-services-auth-api-phonecom.google.android.gmsbasebasementtasksauthauth-base

com.google.android.gmsFirebase 库还对许多模块具有传递依赖关系。如果一个构建中所有 Firebase 和 Play Services 模块的版本号不同,就会出现类似这样的问题。

一个简单的解决方案是使用您在 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 库版本,并且您的构建将再次中断。

要调试此类问题,您可以在 Android Studio 中打开 Gradle 窗口并双击:app -> Tasks -> android -> androidDependencies以生成依赖关系树。然后可以检查树以查找版本不匹配。

于 2017-07-29T03:42:27.387 回答