5

當我建立我的Android應用的亞馬遜(Kindle的)的味道,我遇到這樣的運行時錯誤:Android Studio運行時錯誤存根!在com.amazon.device.messaging.ADMMessageReceiver。 <init>()

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

我需要的地方亞馬遜設備messaging.jar文件來編譯我的應用程序,但是我不需要在運行時包含它,因爲亞馬遜設備將具有必要的類和方法。如何更新我的Android Studio build.gradle文件來執行此操作?

回答

4

我也遇到過這個問題。當添加亞馬遜設備消息罐子作爲一個庫,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,但我沒有足夠的聲望。

+0

謝謝!也許我不需要額外的配置細節。我會嘗試刪除它,看它是否仍然有效。 – clu

+0

看起來像你更簡單的答案是正確的方式來做到這一點,謝謝! – clu

+0

我有一個android-library項目中的ADM jar,雖然我已經提到了在android-library項目的build.grade文件中提供的ADM jar的依賴關係。它仍然得到這個錯誤。任何幫助? – sanath01

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

如果庫和對庫的調用位於不同的包中,'provided'將被忽略,而stubed-out庫將被編譯到APK中。這可以通過將庫放入Maven回購庫來解決。 –

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" 
  • 包括本地的倉庫作爲項目依賴關係:
  • 添加「mavenLocal()」中的主要搖籃構建腳本:

      allprojects { 
          repositories { 
              mavenCentral() 
              mavenLocal() 
          } 
    
    1. 鏈接ADM項目中的Maven工件。

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

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