【问题标题】:NoClassDefFoundError Amazon ADM integration on kindleKindle 上的 NoClassDefFoundError Amazon ADM 集成
【发布时间】:2013-06-03 23:28:07
【问题描述】:

我正在尝试 Amazon Device Messaging 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。

【问题讨论】:

    标签: java android kindle amazon-device-messaging


    【解决方案1】:

    请检查您的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')
    }
    

    谢谢!

    【讨论】:

    • Jignesh 我也遇到了同样的问题。实际上,我在安装了亚马逊应用商店的 android 手机(不是 kindle 标签)上运行相同的应用程序。我在应用程序中集成了 ADM。它在kindle模拟器上运行良好。如果您需要任何其他信息,请告诉我。
    • 我无法理解您的问题
    • 好的,让我解释一下我的问题:我有一个应用程序,目前在 Play 商店和亚马逊应用商店上运行(未针对 kindle 进行优化)。现在我想添加推送通知功能,因为我添加了 ADM 代码。现在,当我在 kindle 模拟器上测试它时,我工作得很好,但是当我在 android 设备上运行它时,它崩溃了,它与所提供的@dcanh121 相同的堆栈跟踪。这很明显。我无法将 jar 文件添加到订单和导出中,因为它会导致存根错误。那么有什么解决办法呢?
    • 您应该先删除 jar 文件,然后再从 lib 目录中删除,然后转到 Libraries 选项卡并单击 Add External Jars..(第二个按钮)并从其他目录中选择 jar 文件(在项目)。希望它会奏效。
    • @JigneshAnsodariya 即使使用相同的标签,它在 android studio 中也会出现相同的错误。有什么想法吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      Manifest 中缺少以下行

      <!-- 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>
      

      【讨论】:

        猜你喜欢
        • 2014-10-06
        • 1970-01-01
        • 1970-01-01
        • 2014-08-06
        • 2019-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多