जब से मैंने एंड्रॉइड एसडीके टूल्स 25.1.6 और एंड्रॉइड सपोर्ट रिपॉजिटरी 32.0.0 (आज सुबह) को अपडेट किया, मुझे निम्न त्रुटि मिली, मैंने अपने कोड में कुछ भी नहीं बदला और यह अभी भी मेरे सहयोगी कंप्यूटर (एंड्रॉइड एसडीके टूल्स) पर काम कर रहा है 25.1.1 + एंड्रॉइड सपोर्ट रिपॉजिटरी 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)
यहाँ कोड का एक टुकड़ा है जो दुर्घटनाग्रस्त होता है:
InstanceID instanceID = InstanceID.getInstance(this); // <-- crash here
String instanceIDToken = instanceID.getToken(getString(R.string.google_app_id),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
यह तब होता है जब मैं Google क्लाउड मैसेजिंग से टोकन प्राप्त करने का प्रयास करता हूं।
मैं प्ले-प्ले सेवाओं के साथ ग्रैडल में GCM आयात कर रहा हूं:
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'
ईडीआईटी ने जीसीएम को निष्क्रिय करने की समस्या को ठीक कर दिया है, इसलिए मेरा अनुमान है कि मुझे फायरबेस क्लाउड मैसेज को माइग्रेट करना चाहिए
EDIT2 मेरा डिवाइस Google Play Services 9.0 (कल 8.4.x था) प्राप्त करता है। अब यह दुर्घटना नहीं करता है, लेकिन मॉड्यूल डिस्क्रिप्टर के बारे में शिकायत करता है
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.
क्या किसी के पास समान त्रुटि है, और इसे कैसे ठीक किया जाए?
FIXED के लिए
विशेष धन्यवाद @stegranet।
./gradlew -q app:dependencies --configuration compile
एसडीके 24.x में कौन सी निर्भरताएं शामिल हैं, यह पहचानने में आपकी मदद करता है
मुख्य मुद्दा कुछ लाइब्रेरी है जो नवीनतम समर्थन लाइब्रेरी को +
संस्करण के बजाय साइन का उपयोग करके आयात करती है । यह नवीनतम उपलब्ध संस्करण को शामिल करके समस्या का कारण बनता है।
तो +
निर्भरता में संकेत से बचें ;)