Добавить зависимости через Gradle для затмения в Android-проекте
У меня проблема с добавлением зависимостей автоматически для затмения проекта Android с помощью Gradle. У меня есть только небольшой опыт работы с Gradle. До сих пор я построил два Java-проекта с Gradle. Одна банка и исполняемая банка. Это работает без проблем. Я использовал плагин eclipse для генерации проекта eclipse и добавления зависимостей к пути сборки. Я добавил новые зависимости в скрипт gradle, запустил gradle с помощью gradle eclipse, обновил мой проект, и зависимости существуют в пути сборки, и я могу их использовать. Вот важная часть этого сценария.
apply plugin: 'java'
apply plugin: 'eclipse'
repositories {
mavenCentral()
}
dependencies {
compile 'commons-io:commons-io:2.4'
}
Итак, теперь я попробовал это в сочетании с плагином Android. Вот мой сценарий лунки.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
apply plugin: 'eclipse'
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.commons:commons-lang3:3.1'
}
android {
compileSdkVersion 17
buildToolsVersion "17"
defaultConfig {
minSdkVersion 14
targetSdkVersion 17
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}
Если я использую Gradle Eclipse, ничего не происходит. Затем я узнал, что плагин Java добавляет зависимости к пути сборки. Итак, я добавил
apply plugin: 'java'
к нему и пришла ошибка, что плагин Java не совместим с плагином Android. Затем я нашел решение автоматически скопировать банки в папку lib проекта.
def libDir = file('libs')
task copyLibs(type: Copy) {
doFirst {
libDir.mkdirs()
}
from configurations.runtime
into libDir
}
Но для этой задачи нужен также плагин java для настройки. Мне нужен плагин Android для создания файла apk, так что это не решение, чтобы удалить плагин Android. У кого-нибудь есть идея, возможно ли добавить зависимости в путь сборки или папку lib в проекте ecipse, совместимом с плагином android?
РЕДАКТИРОВАТЬ: Одна из моих идей состояла в том, чтобы добавить плагин java к плагину eclipse, чтобы он применялся только тогда, когда будет применен плагин eclipse. Что-то вроде этого:
apply plugin: 'eclipse'
eclipse{
apply plugin: 'java'
}
Но я все еще получаю ошибку, что плагины Java и Android не совместимы. Может быть, я неправильно понимаю Gradle, но обычно плагин Java следует применять только тогда, когда я запускаю плагин Eclipse, а не плагин Android. Я боюсь, что мое понимание и опыт gradle недостаточно хороши, чтобы решить эту проблему или понять, почему это невозможно.