更新到Android Build Tools 25.1.6 GCM / FCM

自从我更新到Android SDK Tools 25.1.6和Android Support Repository 32.0.0(今天上午)以来,出现以下错误,我没有更改代码中的任何内容,并且仍在我的同事计算机上正常工作(Android SDK Tools 25.1.1 + Android支持存储库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 Cloud Messaging获取令牌的时候。


禁用GCM的EDIT解决了该问题,所以我的猜测是我应该迁移到Firebase Cloud Message


EDIT2 我的设备收到了Google Play服务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.

有没有人有类似的错误,以及如何解决?


已修复, 特别感谢@stegranet。 ./gradlew -q app:dependencies --configuration compile帮助您确定哪些依赖项包括SDK 24.x


主要问题是某些库使用+符号(而不是版本)导入最新的支持库。通过包括最新的可用版本,这会导致问题。


因此,避免+登录依赖项;)


青春有我
浏览 490回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP