【问题标题】:Android Studio runtime error Stub! at com.amazon.device.messaging.ADMMessageReceiver.<init>()Android Studio 运行时错误存根!在 com.amazon.device.messaging.ADMMessageReceiver.<init>()
【发布时间】:2014-08-24 23:40:31
【问题描述】:

当我构建我的 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 文件以执行此操作?

【问题讨论】:

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


    【解决方案1】:

    我也遇到了这个问题。将 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,我会为你的答案投票,但我的声望不够高。

    【讨论】:

    • 谢谢!也许我不需要额外的配置细节。我会尝试删除它,看看它是否仍然有效。
    • 看起来您的简单答案是正确的方法,谢谢!
    • 我在 android-library 项目中有 ADM jar,尽管我已经提到了在 android-library 项目的 build.grade 文件中提供的 ADM jar 的依赖关系。它仍然收到此错误。有什么帮助吗?
    • @sanath01 你有没有想过这个问题。这对我也不起作用?
    • 对我来说都不管用!你找到什么了吗?
    【解决方案2】:

    为了解决这个问题,我使用了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。

    【讨论】:

    • 如果库和对库的调用在不同的包中,'provided' 将被忽略,而存根的库将被编译到 APK 中。这可以通过将库放在 Maven 存储库中来解决。
    【解决方案3】:
    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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多