Externe Android-Bibliotheksprojekte mit Gradle
Ich versuche ein Android Projekt mit Gradle und dem zu erstellenAndroid Gradle-Plugin. Ich möchte mich auf Bibliotheksprojekte verlassen, die sich in externen (Maven-) Repositorys befinden, z. ActionBarSherlock.
Dies scheint nach dem möglichoffizielle Seite:
Das Verwenden einer Bibliothek erfolgt auf eine der folgenden Arten:
Multiprojekt-Setup. Lies hier:http://www.gradle.org/docs/current/userguide/multi_project_builds.html
Abhängigkeiten durch ein Repo wie Maven oder Ivy.
Der aktuelle Inhalt meines 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'
}
}
}
}
Ich benutze Gradle 1.2. Wenn ich versuche mit zu bauengradle assemble
Ich erhalte den folgenden Fehler:
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
Es scheint, als würde versucht, die Datei AndroidManifest.xml sowohl aus dem Bibliotheksprojekt als auch aus meinem Projekt einzuschließen. Wenn ich das entfernemanifest
Spezifikation insourceSets
Ich bekomme immer noch den gleichen Fehler.
Die Website erwähnt mitapply plugin: 'android-library'
für Bibliotheksprojekte; Ich vermute, dies ist nur beim Erstellen der eigentlichen Bibliothek (mit einem Multiprojekt-Setup), da dies keine APK erzeugt.
Wie kann ich Abhängigkeiten von externen Android-Bibliotheksprojekten zum Funktionieren bringen?