J'ai pu créer un code source de bibliothèque dans un .jar
fichier compilé , en utilisant l'approche de cette solution:
https://stackoverflow.com/a/19037807/1002054
Voici le détail de ce que j'ai fait:
1. Archiver le référentiel de la bibliothèque
En mai, c'était une bibliothèque Volley
2. Importez la bibliothèque dans Android Studio.
J'ai utilisé Android Studio 0.3.7. J'ai rencontré des problèmes au cours de cette étape, à savoir que j'ai dû copier le gradle
dossier d'un nouveau projet Android avant de pouvoir importer le code source de la bibliothèque Volley, cela peut varier en fonction du code source que vous utilisez.
3. Modifiez votre build.gradle
fichier
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.3'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 17
buildToolsVersion = 17
sourceSets {
main {
java {
srcDir 'src'
}
}
}
}
task clearJar(type: Delete) {
delete 'build/libs/myCompiledLibrary.jar'
}
task makeJar(type: Copy) {
from('build/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'myCompiledLibrary.jar')
}
makeJar.dependsOn(clearJar, build)
4. Exécutez la gradlew makeJar
commande à partir de la racine de votre projet.
Dans mon cas, je devais copier gradlew.bat
et les gradle
fichiers du nouveau projet Android dans la racine de mon projet de bibliothèque. Vous devriez trouver votre fichier de bibliothèque compilé myCompiledLibrary.jar
dans le build\libs
répertoire.
J'espère que quelqu'un trouvera cela utile.
Éditer:
Caveat
Bien que cela fonctionne, vous rencontrerez une exception de bibliothèque en double lors de la compilation d'un projet avec plusieurs modules, où plus d'un module (y compris le module d'application) dépend du même jar
fichier (par exemple, les modules ont leur propre répertoire de bibliothèque, qui est référencé dans build.gradle
un module donné) .
Au cas où vous auriez besoin d'utiliser une seule bibliothèque dans plus d'un module, je recommanderais d'utiliser cette approche:
Android gradle build et la bibliothèque de support