Ошибка выполнения Android Studio Stub! на com.amazon.device.messaging.ADMMessageReceiver.‹init›()

Когда я создаю вариант Amazon (Kindle) для своего приложения для Android, я сталкиваюсь с этой ошибкой времени выполнения:

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

Мне нужен локальный файл amazon-device-messaging.jar для компиляции моего приложения, однако мне не нужно включать его во время выполнения, поскольку устройство amazon будет иметь необходимые классы и методы. Как мне обновить файл build.gradle для Android Studio, чтобы сделать это?


person LyteSpeed    schedule 03.07.2014    source источник


Ответы (3)


Я также столкнулся с этой проблемой. При добавлении jar-файла Amazon Device Messaging в качестве библиотеки 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, но у меня недостаточно высокая репутация.

person theshadowchild    schedule 03.07.2014
comment
Спасибо! Может быть, мне не нужны дополнительные детали конфигурации. Я попробую удалить его, чтобы увидеть, если он все еще работает. - person LyteSpeed; 04.07.2014
comment
Похоже, ваш более простой ответ - правильный способ сделать это, спасибо! - person LyteSpeed; 10.07.2014
comment
У меня есть jar-файл ADM внутри проекта библиотеки Android, хотя я упомянул зависимость jar-файла ADM, как указано в файле build.grade проекта android-library. Я все еще получаю эту ошибку. Любая помощь? - person sanath01; 21.02.2015
comment
@ sanath01 ты когда-нибудь это понимал? Мне это тоже не помогло? - person Jraco11; 16.08.2016

Чтобы решить эту проблему, я использовал тип зависимости 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.

person LyteSpeed    schedule 03.07.2014
comment
Если библиотека и вызов библиотеки находятся в разных пакетах, «предоставленный» пакет будет проигнорирован, а заглушенная библиотека все равно будет скомпилирована в APK. Это можно решить, поместив библиотеку в репозиторий Maven. - person Jason Hartley; 11.07.2014

  1. Добавьте jar ADM в локальный репозиторий 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 в качестве зависимости проекта:

Добавьте «mavenLocal()» в основной скрипт сборки Gradle:

            allprojects {
            repositories {
                            mavenCentral()
                            mavenLocal()
             }
  1. Свяжите артефакт Maven в проекте ADM.

Добавьте ниже строку ADMWrapperLib Gradle script (::).

            provided 'com.amazon.device.messaging:amazondevicemessaging:1.0.1'
person rajkabbur    schedule 04.05.2015