Sdk Amazon设备通讯(ADM)1.1.0不兼容ClassChangeError异常
在我将1.1.0 adm应用于我们的应用程序后,一些设备因异常“java.lang.CompatibleClassChangeError”而崩溃 我无法在一些消防设备上重现这个错误 但坠机报告是这样说的 我应用了手册中的渐变设置。 所以adm jar没有包含在apk中,我想是的Sdk Amazon设备通讯(ADM)1.1.0不兼容ClassChangeError异常,sdk,amazon,kindle-fire,kindle,Sdk,Amazon,Kindle Fire,Kindle,在我将1.1.0 adm应用于我们的应用程序后,一些设备因异常“java.lang.CompatibleClassChangeError”而崩溃 我无法在一些消防设备上重现这个错误 但坠机报告是这样说的 我应用了手册中的渐变设置。 所以adm jar没有包含在apk中,我想是的 compileOnly files('libs/amazon-device-messaging-1.1.0.jar') 不是所有的设备,但特别是2019年的Fire 7、2018年的Fire hd 8是主要的崩溃设备
compileOnly files('libs/amazon-device-messaging-1.1.0.jar')
不是所有的设备,但特别是2019年的Fire 7、2018年的Fire hd 8是主要的崩溃设备
这是详细的崩溃日志
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)
致命异常:java.lang.CompatibleClassChangeError:com.amazon.device.messaging.ADMMessageReceiver的结构更改是危险的(/data/app/com.xxxx-1/oat/arm/base.odex在编译时,/system/priv-app/devicemessageandroiddk/oat/arm/devicemessageandroiddk.odex在运行时):实例字段计数:0对3
Lcom/amazon/device/messaging/ADMMessageReceiver;(编译时):
静态字段:
实例字段:
直接方法:
()V
(Ljava/lang/Class;)V
(Ljava/lang/Class;I)V
虚拟方法:
onReceive(Landroid/content/Context;Landroid/content/Intent;)V
registerIntentServiceClass(Ljava/lang/Class;)V
registerJobServiceClass(Ljava/lang/Class;I)V
Lcom/amazon/device/messaging/ADMMessageReceiver;(运行时):
静态字段:
实例字段:
我是乔比德
Z mServiceClassIsJob
Ljava/lang/String;mServiceClassName
直接方法:
()V
(Ljava/lang/Class;)V
(Ljava/lang/Class;I)V
虚拟方法:
onReceive(Landroid/content/Context;Landroid/content/Intent;)V
registerIntentServiceClass(Ljava/lang/Class;)V
registerJobServiceClass(Ljava/lang/Class;I)V
(声明'com.xxxx.adm.ADMReceiver'出现在/data/app/com.xxxx-1/base.apk中)
我们已经解决了这个问题
这是因为build.gradle中缺少配置
compile fileTree(include: ['*.jar'], dir: 'libs')
...
compileOnly files('libs/amazon-device-messaging-1.1.0.jar')
我们对ADM使用了相同的libs目录,
因此,短梗罐子包含在游戏apk中
配置编译文件树(包括:['*.jar'],dir:'libs')
导致了该问题
我们将adm jar的目录从
libs
更改为libs2
,这就解决了问题。我们已经解决了问题
这是因为build.gradle中缺少配置
compile fileTree(include: ['*.jar'], dir: 'libs')
...
compileOnly files('libs/amazon-device-messaging-1.1.0.jar')
我们对ADM使用了相同的libs目录,
因此,短梗罐子包含在游戏apk中
配置编译文件树(包括:['*.jar'],dir:'libs')
导致了该问题
我们将adm jar的目录从libs
更改为libs2
,这就解决了问题