Seit ich (heute Morgen) auf Android SDK Tools 25.1.6 und Android Support Repository 32.0.0 aktualisiert habe, ist der folgende Fehler aufgetreten. Ich habe nichts an meinem Code geändert und er funktioniert immer noch auf meinem Kollegencomputer (Android SDK Tools) 25.1.1 + Android Support Repository 30.0.0).
java.lang.IncompatibleClassChangeError: The method
'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)'
was expected to be of type virtual but instead was found to be of type direct
(declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)
at com.google.android.gms.iid.zzd.zzeb(Unknown Source)
at com.google.android.gms.iid.zzd.<init>(Unknown Source)
at com.google.android.gms.iid.zzd.<init>(Unknown Source)
at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
at com.xxxxxxx.utils.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:55)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)
Hier ist der Code, der abstürzt:
InstanceID instanceID = InstanceID.getInstance(this); // <-- crash here
String instanceIDToken = instanceID.getToken(getString(R.string.google_app_id),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Es ist, wenn ich versuche, ein Token von Google Cloud Messaging zu erhalten.
Ich importiere GCM in Gradle mit geteilten Spieldiensten:
compile 'com.google.android.gms:play-services-analytics:9.0.0'
compile 'com.google.android.gms:play-services-maps:9.0.0'
compile 'com.google.android.gms:play-services-location:9.0.0'
compile 'com.google.android.gms:play-services-gcm:9.0.0'
compile 'com.google.android.gms:play-services-base:9.0.0'
Das Deaktivieren von GCM durch EDIT hat das Problem behoben. Ich gehe also davon aus, dass ich auf Firebase Cloud Message migrieren sollte
EDIT2 Mein Gerät erhält Google Play Services 9.0 (gestern war 8.4.x). Jetzt stürzt es nicht mehr ab, sondern beschwert sich über den Moduldeskriptor
Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
Firebase API initialization failure.
Hat jemand einen ähnlichen Fehler und wie kann er behoben werden?
FIXED
besonderer Dank an @stegranet.
./gradlew -q app:dependencies --configuration compile
hilft Ihnen zu identifizieren, welche Abhängigkeiten SDK 24.x enthalten
Hauptproblem ist, dass einige Bibliotheken die neueste Supportbibliothek mit +
sign anstelle einer Version importieren . Dies verursacht das Problem, indem die neueste verfügbare Version hinzugefügt wird.
Vermeiden Sie also +
Anmeldeabhängigkeiten;)