Próbuję zbudować projekt Android z Gradle i Android Gradle plugin. Chciałbym polegać na projektach bibliotek znalezionych w zewnętrznych (maven) repozytoriach, np. ActionBarSherlock.Zewnętrzne projekty bibliotek Android z Gradle
Wydaje się możliwe według official site:
Using a library is done one of the following way:
Multi-project setup. Read here: http://www.gradle.org/docs/current/userguide/multi_project_builds.html
Dependencies through a repo such as maven or ivy.
Obecne zawartość mojego build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.2'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile 'com.actionbarsherlock:library:4.2.0'
}
android {
target = 'android-16'
sourceSets {
main {
manifest {
srcFile 'AndroidManifest.xml'
}
java {
srcDir 'src'
}
res {
srcDir 'res'
}
assets {
srcDir 'assets'
}
resources {
srcDir 'src'
}
}
}
}
używam Gradle 1.2. Kiedy próbuję zbudować z gradle assemble
, pojawia się następujący błąd:
Error: duplicate files during packaging of APK /[path to project]/build/apk/[project name]-debug-unaligned.apk
Path in archive: AndroidManifest.xml
Origin 1: /[path to project]/build/libs/[apk name]-debug.ap_
Origin 2: /[home directory]/.gradle/caches/artifacts-14/filestore/com.actionbarsherlock/actionbarsherlock/4.2.0/apklib/dd63451a922558005d8c10be1085b488ed731d19/actionbarsherlock-4.2.0.apklib
:packageDebug FAILED
Wydaje się, że stara się zawierać AndroidManifest.xml zarówno z projektu biblioteki i mojego projektu. Jeśli usunę specyfikację manifest
w sourceSets
, nadal otrzymam ten sam błąd.
Strona wspomniana przy użyciu apply plugin: 'android-library'
dla projektów bibliotecznych; Zgaduję, że jest to tylko podczas budowania rzeczywistej biblioteki (z konfiguracją wielu projektów), ponieważ nie tworzy ona pliku APK.
W jaki sposób mogę uzyskać zależności od zewnętrznych bibliotek Androida?
Czy nowy format AAR skompilowany jak dystrybucja słoik lub inny zip źródłowy, taki jak apklib? – yorkw
W wersji 0.3 wtyczki wygląda na to, że budowanie projektu biblioteki Android tworzy AAR (archiwum z skompilowanymi klasami i zasobami). Dopóki nie jest to bardziej rozpowszechnione, czy istnieje sposób, aby wtyczka do systemu Android Gradle działała z istniejącymi bibliotekami apklib znajdującymi się w Maven Central (itp.)? EDYCJA: Byłoby to szczególnie przydatne biorąc pod uwagę aktualny komunikat na stronie: "Binarne opakowanie biblioteki wciąż przechodzi zmiany. Nie przesyłaj bibliotek do maven central (lub innych podobnych repozytoriów) jeszcze". – antonyt
aar jest podobny do apklib, ponieważ jest to plik zip zawierający plik jar + inne pliki. Obsługa apklib nie jest tak naprawdę planowana, ale mógłbym się jej przyjrzeć. –