5

当我构建我的 Android 应用程序的 Amazon (Kindle) 风格时,我遇到了这个运行时错误:

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

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

4

3 回答 3

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。

于 2014-07-03T18:11:50.787 回答
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,我会投票赞成您的回答,但我的声誉不够高。

于 2014-07-03T22:59:46.917 回答
1
  1. 在 Maven 本地存储库中添加 ADM jar。

命令 :

            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 存储库作为项目依赖项:

在主 Gradle 构建脚本中添加“mavenLocal()”:

            allprojects {
            repositories {
                            mavenCentral()
                            mavenLocal()
             }
  1. 在 ADM 项目中链接 Maven 工件。

添加以下行 ADMWrapperLib Gradle 脚本 (::)。

            provided 'com.amazon.device.messaging:amazondevicemessaging:1.0.1'
于 2015-05-04T10:26:04.407 回答