5

Wenn ich die Amazon (Kindle) Geschmack meiner Android App bauen betreibe ich in diesem Laufzeitfehler:Android Studio Laufzeitfehler Stub! unter com.amazon.device.messaging.ADMMessageReceiver. (<init>)

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

Ich brauche die lokale amazon-device-messaging.jar Datei meine app zu kompilieren, aber Ich muss es nicht zur Laufzeit hinzufügen, da das Amazon Gerät die notwendigen Klassen und Methoden hat. Wie aktualisiere ich meine Android Studio build.gradle-Datei, um dies zu tun?

Antwort

4

Ich lief auch in dieses Problem. Wenn das Gerät anschließend Messaging jar als Bibliothek Amazon hinzufügen, erzeugte Android Studio automatisch

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

Ich brauche nur, dass wechseln

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

, die den Trick für mich getan haben. Ich stimme deine Antwort ab, @Clu, aber ich habe keinen ausreichend guten Ruf.

+0

Danke! Vielleicht brauche ich die zusätzlichen Konfigurationsdetails nicht. Ich werde versuchen, es zu entfernen, um zu sehen, ob es noch funktioniert. – clu

+0

Sieht aus wie Ihre einfachere Antwort ist der richtige Weg, dies zu tun, danke! – clu

+0

Ich habe das ADM-Jar in einem android-library-Projekt, obwohl ich die Abhängigkeit des ADM-Jar als in der build.grade-Datei des Android-Bibliotheksprojekts angegeben erwähnt habe. Es ist immer noch dieser Fehler. Irgendeine Hilfe? – sanath01

5

Um dies zu lösen, habe ich die provided Art der Abhängigkeit verwendet.

In meinem Projektmodule build.gradle Datei, direkt vor meinen dependencies Schließung eingeschlossen ich folgendes:

configurations { 
    provided 
} 

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

Und dann, in meiner Abhängigkeiten Schließung eingeschlossen ich folgendes:

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

Dadurch wurde sichergestellt, dass die .jar nur für die Kompilierzeit und nicht für die Laufzeit verwendet wurde. Ich bin ziemlich neu in Android Studio, und das hat eine Weile gedauert, bis ich herausgefunden habe; hoffentlich hilft dir das auch beim Wechsel zu Android Studio.

+1

Wenn sich die Bibliothek und der Aufruf der Bibliothek in verschiedenen Paketen befinden, wird das 'Zur Verfügung gestellte' ignoriert und stattdessen die Stubbed-Bibliothek in die APK kompiliert. Dies kann gelöst werden, indem die Bibliothek in ein Maven Repo gestellt wird. –

1
  1. Fügen Sie das ADM-Jar im lokalen Maven-Repository hinzu.

Befehl:

  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. Fügen lokale Maven-Repository als Projektabhängigkeit:

hinzufügen „mavenLocal()“ in Haupt Gradle bauen Skript:

  allprojects { 
      repositories { 
          mavenCentral() 
          mavenLocal() 
      } 
  1. Link zu dem Maven-Artefakt im ADM-Projekt.

Unter Zeile ADMWrapperLib Gradle Skript (: :) hinzufügen.