Amazon Device Messeging (ADM) 1.1.0 Исключение IncompatibleClassChangeError - PullRequest
1 голос
/ 20 февраля 2020

После того, как я применил 1.1.0 adm к нашему приложению, некоторые устройства создают sh с исключением "java .lang.IncompatibleClassChangeError"

. Я не могу воспроизвести эту ошибку на некоторых устройствах Fire,

но в отчете cra sh говорится так.

Я применил настройку gradle из руководства. так что adm jar не был включен в apk, я так думаю.

compileOnly files('libs/amazon-device-messaging-1.1.0.jar')

не все устройства, но в особенности Fire 7 2019, Fire hd 8 2018 являются основными сбойными устройствами.

Вот деталь cra sh log

Fatal Exception: java.lang.IncompatibleClassChangeError: Structural change of com.amazon.device.messaging.ADMMessageReceiver is hazardous (/data/app/com.xxxx-1/oat/arm/base.odex at compile time, /system/priv-app/DeviceMessagingAndroidSDK/oat/arm/DeviceMessagingAndroidSDK.odex at runtime): Instance field count off: 0 vs 3

Lcom/amazon/device/messaging/ADMMessageReceiver; (Compile time):

Static fields:

Instance fields:

Direct methods:

<init>()V

<init>(Ljava/lang/Class;)V

<init>(Ljava/lang/Class;I)V

Virtual methods:

onReceive(Landroid/content/Context;Landroid/content/Intent;)V

registerIntentServiceClass(Ljava/lang/Class;)V

registerJobServiceClass(Ljava/lang/Class;I)V

Lcom/amazon/device/messaging/ADMMessageReceiver; (Runtime):

Static fields:

Instance fields:

I mJobId

Z mServiceClassIsJob

Ljava/lang/String; mServiceClassName

Direct methods:

<init>()V

<init>(Ljava/lang/Class;)V

<init>(Ljava/lang/Class;I)V

Virtual methods:

onReceive(Landroid/content/Context;Landroid/content/Intent;)V

registerIntentServiceClass(Ljava/lang/Class;)V

registerJobServiceClass(Ljava/lang/Class;I)V

(declaration of 'com.xxxx.adm.ADMReceiver' appears in /data/app/com.xxxx-1/base.apk)


1 Ответ

0 голосов
/ 03 марта 2020

Мы решили проблему.

Это из-за пропущенной конфигурации в build.gradle.

compile fileTree(include: ['*.jar'], dir: 'libs')
...
compileOnly files('libs/amazon-device-messaging-1.1.0.jar')

Мы использовали один и тот же каталог libs для ADM, поэтому заглушка jar был включен в игру apk.

Конфигурация compile fileTree(include: ['*.jar'], dir: 'libs') вызвала проблему.

Мы изменили каталог adm jar с libs на libs2, и это решило проблему.

...