2016-11-03 1 views
0

In meinem aktuellen Projekt verwende ich FCM für Benachrichtigungen. Es ist gut und es funktioniert gut, aber wenn ich versuche, die Anwendung in einem Gerät weniger als lolypop, d. H. Version 21 zu öffnen, stürzt es am Anfang ab.Firebase-Bibliothek funktioniert nicht in <= Lolypop-Geräten

Ich habe viele SO-Posts ausgecheckt, aber nie jemanden gesehen, der es als Antwort repariert hat.

Ich verwende die neueste Version Bibliotheken wie unten

compile 'com.google.android.gms:play-services:9.8.0' 
compile 'com.google.android.gms:play-services-auth:9.8.0' 
compile 'com.google.firebase:firebase-core:9.8.0' 
compile 'com.google.firebase:firebase-messaging:9.8.0' 

Bitte helfen Sie, ich brauche Unterstützung bis jellybean Geräte atleast zur Verfügung zu stellen.

Crashlog:

FATAL EXCEPTION: main 
Process: com.arpaul.geocare, PID: 3127 
java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.arpaul.geocare-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.arpaul.geocare-2, /vendor/lib, /system/lib]] 
    at android.app.ActivityThread.installProvider(ActivityThread.java:4793) 
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4385) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4325) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    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:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.arpaul.geocare-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.arpaul.geocare-2, /vendor/lib, /system/lib]] 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
    at android.app.ActivityThread.installProvider(ActivityThread.java:4778) 
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4385)  
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4325)  
    at android.app.ActivityThread.access$1500(ActivityThread.java:135)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop 
+1

Können Sie bitte das Unfallprotokoll posten? –

Antwort

1

Ihre Abhängigkeit von com.google.android.gms:play-services:9.8.0 einschließlich wird, um alle Google APIs Play-Dienste, von denen die meisten die Sie nicht benötigen. Dies erhöht unnötigerweise die Größe Ihrer APK und Build-Zeit. Es verursacht auch wahrscheinlich, dass die App mehr als 64K Methodenverweise hat, was auf älteren Geräten Multidex erfordert, wie .

Stattdessen sollten Sie die Abhängigkeit für com.google.android.gms:play-services:9.8.0 entfernen und durch die spezifischen APIs ersetzen, die Sie benötigen. Anweisungen dafür sind provided here im Abschnitt Selektiv kompilieren APIs in Ihre ausführbare Datei.

+0

Ja, das ist in Ordnung, aber ich brauche sowieso Firebase und das ist, was das Problem verursacht. – Ari

+0

Die Einbeziehung der Firebase-Bibliotheken verursacht das Problem nicht. Die Gesamtzahl der enthaltenen Bibliotheken ist zu groß, sodass die Firebase-Methoden nicht gefunden werden. –

+0

Ok, werde das auch ausprobieren. Ich werde ab sofort Karten und Auth und Firebase benötigen, wird es funktionieren, wenn ich Karten und Auth habe, weil ich keine Play Services für Messaging finden kann? – Ari

Verwandte Themen