Dodaj zależności za pomocą stopniowania do zaćmienia w projekcie Android
Mam problem z automatycznym dodawaniem zależności do zaćmienia projektu android za pomocą gradle. Mam tylko trochę doświadczenia z gradle. Do tej pory zbudowałem dwa projekty Java z gradle. Jeden słoik i wykonywalny słoik. Działa to bez problemów. Użyłem wtyczki eclipse do wygenerowania projektu eclipse i dodania zależności do ścieżki budowania. Dodałem nowe zależności do skryptu gradle, uruchomiłem gradle z gradle eclipse, zaktualizowałem mój projekt i zależności istnieją w ścieżce budowania i mogę z nich korzystać. Oto ważna część tego skryptu.
apply plugin: 'java'
apply plugin: 'eclipse'
repositories {
mavenCentral()
}
dependencies {
compile 'commons-io:commons-io:2.4'
}
Teraz wypróbowałem to w połączeniu z wtyczką android. Oto mój skrypt stopniowania dziur.
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')
}
}
Jeśli użyję stopniowego zaćmienia, nic się nie dzieje. Potem dowiedziałem się, że wtyczka java dodaje zależności do ścieżki budowania. Dodałem więc
apply plugin: 'java'
i otrzymałem błąd, że wtyczka java nie jest kompatybilna z wtyczką android. Potem znalazłem rozwiązanie do automatycznego kopiowania słoików do folderu lib projektu.
def libDir = file('libs')
task copyLibs(type: Copy) {
doFirst {
libDir.mkdirs()
}
from configurations.runtime
into libDir
}
Ale to zadanie wymaga także wtyczki java dla konfiguracji.runtime. Potrzebuję wtyczki android, aby utworzyć plik apk, więc nie jest rozwiązaniem, aby usunąć wtyczkę z Androidem. Czy ktoś ma pomysł, czy możliwe jest dodanie zależności do ścieżki budowania lub folderu lib w projekcie ecipse, który jest zgodny z wtyczką android?
EDYCJA: Jednym z moich pomysłów było umieszczenie wtyczki java w wtyczce eclipse, tak aby była stosowana tylko wtedy, gdy wtyczka eclipse zostanie zastosowana. Coś takiego:
apply plugin: 'eclipse'
eclipse{
apply plugin: 'java'
}
Ale nadal pojawia się błąd, że wtyczki java i android nie są kompatybilne. Może rozumiem stopniowe błędne, ale zwykle wtyczka java powinna być stosowana tylko wtedy, gdy uruchomię wtyczkę eclipse, a nie wtyczkę android. Obawiam się, że moje zrozumienie i doświadczenie stopniowania nie jest wystarczająco dobre, aby rozwiązać to w ten sposób lub zrozumieć, dlaczego nie jest to możliwe.