2017-02-17 14 views
2

我正在開發使用Android Studio的Android應用,並且今天收到了有關Google Play服務的新版本的消息。將PlayServices/Firebase從10.0.1更新到10.2.0的問題

我正在使用Google Play服務分析,廣告和標籤管理器。以及Firebase分析/消息/崩潰。

我在我的build.gradle版本是10.0.1,新版本是10.2.0 但是,當我改變它,在啓動應用程序崩潰與:

E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.sega.segaid, PID: 15749 
java.lang.NoSuchMethodError: com.google.android.gms.internal.zzaac.zza 
    at com.google.firebase.FirebaseApp.zzcl(Unknown Source) 
    at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
    at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
    at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
    at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1591) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1562) 
    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) 
    at android.app.ActivityThread.installProvider(ActivityThread.java:4964) 
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4559) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4499) 
    at android.app.ActivityThread.access$1600(ActivityThread.java:153) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5191) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:810) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    at dalvik.system.NativeStart.main(Native Method) 

這是一個錯誤在我身邊?它甚至在應用程序啓動之前崩潰。我改變的唯一事情是更新播放服務和firebase的使用依賴關係。

上次發生這種情況時,這是Firebase中的一個錯誤,它在幾天後由Google修復。

編輯: 的build.gradle依賴

compile 'com.android.support:appcompat-v7:25.1.1' 
compile 'com.android.support:support-v13:25.1.1' 
compile 'com.android.support:design:25.1.1' 

compile 'com.google.android.gms:play-services-base:10.2.0' 
compile 'com.google.android.gms:play-services-tagmanager:10.2.0' 
compile 'com.google.android.gms:play-services-ads:10.2.0' 
compile 'com.google.android.gms:play-services-analytics:10.2.0' 
compile 'com.google.firebase:firebase-core:10.2.0' 
compile 'com.google.firebase:firebase-analytics:10.2.0' 
compile 'com.google.firebase:firebase-messaging:10.2.0' 
compile 'com.google.firebase:firebase-crash:10.2.0' 

SOLUTION: 我清除所有的緩存,也加入版本DEF,而是如果每次都寫了出來。它現在有效。謝謝大家。

我選擇了rencsaridogan作爲解決方案的答案,因爲我覺得我忘了在第一次嘗試時更新其中一個庫,而def在那裏確實很有幫助。但是我也需要清除緩存(按照Avi的建議,在下面的評論中)。

+0

請添加你的gradle文件。也嘗試清理和同步項目。 –

+1

嘗試使用乾淨和重建項目。 – Avi

+2

確保您的所有Google play服務和firebase版本在gradle文件中均爲「10.2.0」。 –

回答

2

official documentation所述,Google Play服務和Firebase使用有兩件重要的事情。

您需要聲明的谷歌最新的類路徑播放服務在您的根級別gradle這個,例如,從給定的文件引用:

buildscript { 
    // ... 
    dependencies { 
     // ... 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

此外,作爲註釋項目中的每一個谷歌Play服務的建議Firebase包裝必須具有相同的版本,以確保您可以按照以下給出的方式(這將變得更容易,您只需要更新定義的版本號)

def googlePlayLibVersion = "10.2.0" 
def googleFirebaseLibVersion = "10.2.0" 

ext { 
    annotations = "com.android.support:support-annotations:${supportLibVersion}" 
    firebaseAnalytics = "com.google.firebase:firebase-core:${googleFirebaseLibVersion}" 
    firebaseCrash = "com.google.firebase:firebase-crash:${googleFirebaseLibVersion}" 
    googlePlayAds = "com.google.android.gms:play-services-ads:${googlePlayLibVersion}" 
    googlePlayGcm = "com.google.android.gms:play-services-gcm:${googlePlayLibVersion}" 
    googlePlayAnalytics = "com.google.android.gms:play-services-analytics:${googlePlayLibVersion}" 
} 
+0

我已將它包含在我的根級gradle中。 def看起來像個不錯的主意,我會試一試。 – Cubicle257

+0

@ Cubicle257高興分享!希望這可以幫助你。 – rencsaridogan

+0

雖然我還需要清除緩存,但我選擇了答案作爲解決方案,因爲def肯定會有幫助。 – Cubicle257