Intereting Posts
Как распространять и удаленно обновлять частное приложение Android на сотнях устройств, которые у вас есть? Ошибка HTTP POST для Android HTTP – сбой сокета EACCES (отказ от прав) Robolectric 3.0, не удалось проверить функцию, которая запускает HandlerThread Просмотр не подключен к оконному менеджеру (что такое решение?) Работает ли BluetoothLeAdvertiser на Nexus 5 с Android 5.0? Заменить каждое слово тегом Рисование границы с помощью пользовательского вида Android Android ListView's setOnItemClickListener из PopupWindow не вызывается Как вы программным образом начинаете выбранный вами Daydream? Показать контекстное меню из кода Android-просмотр загружаемых данных Android очень медленный Как подсчитать скорость, основанную на шагах Ресурсы Android – какие разрешения следует использовать в каталогах hdpi, ldpi, mdpi и xhdpi Тестирование приложения Android с помощью Android Studio Что такое надгробный камень в андроиде?

Gradle: как включить локальную банку из зависимого Java-проекта в сборке Android?

В моем приложении для Android я получаю java.lang.NoClassDefFoundError когда выполняется код, который ссылается на код в зависимом .jar. Мой проект включает в себя модуль Android, а также библиотечный модуль только для Java, в котором находится зависимость jar. Я использую gradle 1.10 для создания проекта. Вот мой макет проекта:

 myProject - app (Android) - src - build.gradle - lib (java) - src - libs - local-dependency.jar - build.gradle - build.gradle - settings.gradle 

Основной проект build.gradle пуст, а основные settings.gradle build.gradle выглядят так:

 include ':app', ':lib' 

Приложение Android build.gradle выглядит так:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.8.+' } } apply plugin: 'android' repositories { mavenCentral() } android { compileSdkVersion 18 buildToolsVersion "19.0.2" defaultConfig { minSdkVersion 18 targetSdkVersion 18 versionCode 1 versionName "1.0" } } dependencies { compile project(':lib') } 

Библиотека build.gradle :

 apply plugin: 'java' repositories { mavenCentral() } dependencies { compile <some-dependency-in-maven> compile files('libs/local-dependency.jar') } 

Все компилируется и пакеты без ошибок, и я не вижу ошибок в IDE (IntelliJ 13). По какой-то причине моя local-dependency.jar не добавляется в процесс dex-ing во время компиляции Android. Любые зависимости maven, указанные в проекте lib добавляются в Android .apk просто отлично; Это всего лишь моя локальная зависимость. Есть что-то, что мне не хватает?

Благодаря!

Solutions Collecting From Web of "Gradle: как включить локальную банку из зависимого Java-проекта в сборке Android?"

Это невозможно, так как локальные банки не объявляются транзитивными зависимостями в Gradle.

У вас есть два варианта:

  • Объедините две банки в вашей java-библиотеке, чтобы выход содержал локальную банку.
  • Создайте другой проект без источника, только банку и заставьте проект зависеть от него.

Второй вариант дает вам возможность напрямую управлять несколькими проектами непосредственно на локальном банке (в то же время он становится транзитивной зависимостью). Чтобы сделать это, создайте новый проект градиента и просто build.gradle его в build.gradle :

 configurations.create("default") artifacts.add("default", file('somelib.jar')) по configurations.create("default") artifacts.add("default", file('somelib.jar')) 

Это просто регистрирует вашу банку как артефакт по умолчанию, опубликованный проектом, и это будет поглощено другими проектами.