NoClassDefFoundError с Android Support Library и Maven

Используя последнюю версию 4.0.0-rc.1 Maven Android Plugin, некоторые классы, кажется, отсутствуют в сборке. Я получаю одно из тех исключений, когда я запускаю приложение (два возможных способа запуска приложения):

  • Java.lang.NoClassDefFoundError: android.support.v4.app.TaskStackBuilderHoneycomb
  • Java.lang.NoClassDefFoundError: android.support.v4.widget.EdgeEffectCompatIcs

Оба отсутствующих класса находятся внутри support-v4-21.0.0.aar / libs / internal_impl-21.0.0.jar.

Определение моей зависимости:

<dependency> <groupId>com.android.support</groupId> <artifactId>support-v4</artifactId> <version>21.0.0</version> <type>aar</type> </dependency> 

Это ошибка конфигурации? Ошибка в плагине Android Maven?

Вам нужно установить следующую конфигурацию в pom:

 <includeLibsJarsFromAar>true</includeLibsJarsFromAar> 

Поэтому он будет выглядеть примерно так:

 <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <extensions>true</extensions> <configuration> //... <includeLibsJarsFromAar>true</includeLibsJarsFromAar> //... rest of config </configuration> </plugin> 

Причиной этого изменения является то, что Google решил поставить банки в aar, что является плохой практикой зависимостей. Если вы хотите заменить версию или что-то еще, то в настоящее время это невозможно. Короче говоря, это затрудняет управление зависимостями.

По умолчанию этот параметр установлен на false, чтобы отменить это поведение при создании aar с jar внутри папки libs.

Обновить:

Используя последний Android-Maven-Plugin (теперь 4.1.1 в скором времени 4.2.0), по умолчанию для этого флага установлено значение true, поэтому вам больше не нужно его добавлять.

Я нашел временное решение:

  • cp support-v4-21.0.0.aar ~/Desktop
  • cd ~/Desktop && mv support-v4-21.0.0.aar support-v4-21.0.0.jar
  • jar xf support-v4-21.0.0.jar

Затем вытащите internal_impl-21.0.0.jar из папки libs и загрузите в свой собственный artifactory, если у вас есть, и измените свой pom-файл, который он должен сработать, если у вас нет собственного artifactory, а затем добавьте его в classpath.

Это работает для меня.

Вы включаете файл jar с «предоставленной» областью для зависимости aar? Думаю, я нашел ту же ошибку и имею ту же проблему.

https://github.com/jayway/maven-android-plugin/issues/485

Intereting Posts
Нет силы тяжести для scrollview. Как сделать контент внутри scrollview как центра Двойная проверка блокировки в Android Компонент чтения PDF для Android Возможно ли добавить два разных шлюза по умолчанию в таблицу маршрутизации для двух разных сетевых адаптеров в Android? Можете ли мы включить или выключить устройство программно? Сканирование подсетей Android Как установить семейство шрифтов по умолчанию для всего приложения Android Android: Где я должен сохранять временные файлы? Создайте файл JSON онлайн и получите URL-адрес Сила приложения закрывается на viewPager.setAdapter (адаптер) Обрабатывать существующий экземпляр корневой активности при повторном запуске корневой активности из фильтра намерений Как получить путь изображения от изображений, хранящихся на SD-карте Ручная фокусировка в camera2, android Android QRCode Scanner Library Java.lang.NumberFormatException: невозможно разобрать строку как целое