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 に答える
1
  1. ADM jar を Maven ローカル リポジトリに追加します。

指示 :

            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. Maven アーティファクトを ADM プロジェクトにリンクします。

行の下に ADMWrapperLib Gradle スクリプト (::) を追加します。

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