Android Studio运行时错误存根!在com.amazon.device.messaging.ADMMessageReceiver。<init>()</init>

时间:2014-07-03 18:11:51

标签: gradle android-studio amazon kindle amazon-device-messaging

当我构建Android应用程序的亚马逊(Kindle)风格时,我遇到了此运行时错误:

Caused by: java.lang.RuntimeException: Stub!
at com.amazon.device.messaging.ADMMessageReceiver.<init>()

我需要本地amazon-device-messaging.jar文件来编译我的应用程序,但是我不需要在运行时包含它,因为amazon设备将具有必要的类和方法。如何更新我的Android Studio build.gradle文件来执行此操作?

3 个答案:

答案 0 :(得分:5)

为了解决这个问题,我使用了provided类型的依赖项。

在我的项目模块 build.gradle 文件中,在dependencies关闭之前,我包含以下内容:

configurations {
    provided
}

sourceSets {
    main {
        compileClasspath += configurations.provided
    }
}

然后,在我的依赖关系中,我包括以下内容:

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

这确保了.jar仅用于编译时而不是运行时。我对Android Studio很陌生,这花了我一段时间才弄明白;希望这也可以帮助您切换到Android Studio。

答案 1 :(得分:5)

我也遇到过这个问题。将Amazon Device Messaging jar添加为库时,Android Studio会自动生成

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

我只需将其切换为

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

这对我有用。我推荐你的回答@Clu,但我没有足够的声誉。

答案 2 :(得分:1)

  1. 在Maven本地存储库中添加ADM jar。
  2. 命令:

                mvn install:install-file "-Dfile=amazon-device-messaging-1.0.1.jar" "-DgroupId=com.amazon.device.messaging" "-DartifactId=amazondevicemessaging" "-Dversion=1.0.1" "-Dpackaging=jar"
    
    1. 将本地maven存储库包含为项目依赖项:
    2. 在主Gradle构建脚本中添加“mavenLocal()”:

                  allprojects {
                  repositories {
                                  mavenCentral()
                                  mavenLocal()
                   }
      
      1. 在ADM项目中链接Maven工件。
      2. 添加以下行ADMWrapperLib Gradle脚本(::)。

                    provided 'com.amazon.device.messaging:amazondevicemessaging:1.0.1'