3

我正在尝试亚马逊设备消息 API

我按照亚马逊的建议使用导入添加了 jar 文件。当我部署到设备上时,出现错误,

06-03 16:24:13.680: E/AndroidRuntime(11038): java.lang.NoClassDefFoundError: com.amazon.device.messaging.ADM
06-03 16:24:13.680: E/AndroidRuntime(11038):    at com.myapp.MainActivity.onCreate(MainActivity.java:74)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at android.app.Activity.performCreate(Activity.java:4635)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2031)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2092)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at android.app.ActivityThread.access$600(ActivityThread.java:126)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1172)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at android.os.Looper.loop(Looper.java:137)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at android.app.ActivityThread.main(ActivityThread.java:4586)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at java.lang.reflect.Method.invokeNative(Native Method)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at java.lang.reflect.Method.invoke(Method.java:511)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-03 16:24:13.680: E/AndroidRuntime(11038):    at dalvik.system.NativeStart.main(Native Method)

我无法将 jar 文件添加到订单和导出中,因为它会导致存根错误并且亚马逊不推荐。

他们说安装应用程序时,它应该从设备中选择 api,而不是在应用程序中搜索导致此问题的类文件。

我尝试从 Eclipse IDE 构建并手动使用 ANT。

4

3 回答 3

2

请检查您的manifeat文件,您可能已将以下代码放在application标签之外

  <amazon:enable-feature
        android:name="com.amazon.device.messaging"
        android:required="true" />

此行必须在application标签内。

如果您使用的是 Android Studio,那么您应该记住这一点

从此改变:

dependencies {
    compile files('libs/amazon-device-messaging-1.0.1.jar')
}

对此:

dependencies {
    provided files('libs/amazon-device-messaging-1.0.1.jar')
}

谢谢!

于 2013-06-07T07:30:27.393 回答
0

我只想补充一点,导致此错误的一个原因可能是您尝试在非 Kindle/Fire 设备上设置 ADM。我来到这里的假设是所有亚马逊商店应用程序都可以使用 ADM,但不,只有亚马逊设备。

于 2015-12-09T21:29:57.247 回答
0

您在清单中缺少以下行

<!-- Your application's API Key -->
<meta-data android:name="AmazonAPIKey" android:value=""/>

<!--  Declare your ADMMessageHandlerBase implementation as a service -->
<service android:name="com.cbsnews.ott.adm.ADMMessageHandler"
    android:exported="false" />

<!-- You must explicitly enable ADM. You must also declare whether your application will run with or without ADM.
If you specify android:required="false", your app must degrade gracefully when ADM is unavailable. -->
<amazon:enable-feature android:name="com.amazon.device.messaging"
    android:required="true" />

<receiver android:name="com.cbsnews.ott.adm.ADMMessageHandler$MessageAlertReceiver"
    android:permission="com.amazon.device.messaging.permission.SEND">
    <intent-filter>
        <action android:name="com.amazon.device.messaging.intent.REGISTRATION" />
        <action android:name="com.amazon.device.messaging.intent.RECEIVE" />
        <category android:name="com.amazonaws.kindletest"/>
    </intent-filter>
</receiver>
于 2017-02-28T21:50:07.280 回答