Projets de bibliothèque Android externe avec Gradle
Je suis en train de construire un projet Android avec Gradle et la Android plugin Gradle. Je voudrais dépendent de projets de bibliothèque trouvé en externe (maven) référentiels, par exemple ActionBarSherlock.
Cela semble possible en fonction de la site officiel:
L'aide d'une bibliothèque est fait de la manière suivante:
Multi-projet d'installation. Lire ici: http://www.gradle.org/docs/current/userguide/multi_project_builds.html
Dépendances par le biais de pensions de titres tels que maven ou de lierre.
Le contenu actuel de mon 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'
}
}
}
}
Je suis à l'aide de Gradle 1.2. Lorsque j'essaie de construire avec gradle assemble
j'obtiens l'erreur suivante:
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
Il me semble qu'il est en train d'essayer d'inclure le AndroidManifest.xml à partir de la bibliothèque de projet et de mon projet. Si je supprime le manifest
spécification dans sourceSets
j'obtiens toujours la même erreur.
Le site mentionne l'utilisation de apply plugin: 'android-library'
pour les projets de bibliothèque; je devine que ce n'est que lors de la construction de la bibliothèque réelle (avec un multi-projet d'installation), car il ne produit pas un APK.
Comment puis-je obtenir externes Android bibliothèque les dépendances d'un projet de travaux?
source d'informationauteur antonyt
Vous devez vous connecter pour publier un commentaire.
Alors qu'il est possible d'obtenir des dépendances par l'intermédiaire d'un Maven ou Ivy référentiel, ceux qui ne sont pas emballés dans une norme Jar archive. Il y a un nouveau format spécialement conçu pour ce système de construction. Le type est 'aar'
Android Bibliothèques disponibles sur Maven Central ont été créés en utilisant le plugin Maven qui utilisent un autre format d'archive ('apklib') de sorte qu'ils ne sont pas compatibles.
Si vous regardez com.actionbarsherlock:actionbacksherlock (qui est le nouvel emplacement de la bibliothèque), vous voyez son format est apklib.
http://search.maven.org/#artifactdetails%7Ccom.actionbarsherlock%7Cactionbarsherlock%7C4.2.0%7Capklib
Regardant le code source, nous avons la case à cocher de l'aar' emballage et de revenir pour le traitement de tous les autres "pot", qui est évidemment un problème ici. Nous devons détecter apklib et de fournir un meilleur message d'erreur.
Vous pouvez intégrer le ActionBarSherlock comme un aar maintenant.
Juste ajouter ceci à votre dépendance à la définition dans votre construction.gradle fichier:
Jake Wharton a publié un exemple de projet qui montre comment utiliser ActionBarSherlock avec Gradle
Vous utilisez une ancienne version de l'android plugin gradle.
Dans la dernière version 0.3 beaucoup a été amélioré dans ce domaine.
Je vous conseille de upstep à la version 0.3 de ce plugin. Soyez aussi conscient que vous devez utiliser une version plus récente de gradle (1.3 ou 1.4).
Plus d'informations sur la façon les bibliothèques externes peut être utilisé avec ce plugin.