2017-07-28 95 views
0

我的build.gradle是:找不到com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable類

// 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消息傳遞有些衝突,

所以我從降級的帳戶-KIT-SDK版本,改變進口版 「帳戶-KIT-SDK:4 +」 到 「帳戶-KIT-SDK:4.24.0」

那麼問題一直解決。

但我認爲這不是關於這個問題的最佳解決方案。

歡迎朋友們添加一些新的方法來解決這個問題。

謝謝。

回答

0

版本4.25.0中的com.facebook.android:account-kit-sdkcom.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,authauth-base

Firebase庫還對衆多com.google.android.gms模塊具有傳遞依賴性。如果版本中的所有Firebase和Play服務模塊的版本號不同,則會發生此類問題。

一個簡單的解決方案是使用所有火力地堡的11.0.1版和播放服務庫,你在你的gradle這個依賴列表:

// 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 - > Tasks - > android - > androidDependencies來生成依賴關係樹。然後可以檢查樹來查找版本不匹配。