J'ai téléchargé des sources de bibliothèque et je souhaite l'exporter sous forme de fichier Jar à l'aide d'Android Studio. Existe-t-il un moyen d'exporter vers un fichier JAR en utilisant Android Studio?
Éditer:
La bibliothèque que je souhaite exporter en tant que jar est une bibliothèque Android. Il s'appelle "StandOut" et peut être téléchargé depuis GitHub. https://github.com/pingpongboss/StandOut
android
android-studio
Sauge Pourpre
la source
la source
Réponses:
Il n'est pas possible d'exporter une bibliothèque Android sous forme de fichier jar. Il est cependant possible de l'exporter sous forme de
aar
fichier.Aar
fichiers étant le nouveau format binaire pour les bibliothèques Android. Il y a des informations à leur sujet dans Google I / O, la vidéo New Build System .Commencez par créer la bibliothèque dans Android Studio ou à partir de la ligne de commande issue
gradle build
du répertoire racine de votre bibliothèque.Cela entraînera un
<yourlibroot>/libs/build/yourlib.aar
fichier.Ce fichier aar est une représentation binaire de votre bibliothèque et peut être ajouté à votre projet au lieu de la bibliothèque en tant que projet de dépendance.
Pour ajouter un fichier aar en tant que dépendance, vous devez le publier dans le maven central ou dans votre référentiel maven local, puis référencer le fichier aar dans le fichier de votre projet
gradle.build
.Cependant, cette étape est un peu compliquée. J'ai trouvé une bonne explication sur la façon de procéder ici:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
la source
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/1002054Voici 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// If your module is a library project, this is needed //to properly recognize 'android-library' plugin buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.3' } } apply plugin: 'android-library' android { compileSdkVersion 17 buildToolsVersion = 17 sourceSets { main { // Here is the path to your source code java { srcDir 'src' } } } } // This is the actual solution, as in https://stackoverflow.com/a/19037807/1002054 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 lesgradle
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 lebuild\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é dansbuild.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
la source
res
dossier, un fichier AAR est exactement cela - un fichier JAR avecres
prise en charge de dossier.Depuis Android Studio V1.0, le fichier jar est disponible dans le lien de projet suivant:
debug ver: "votre_app" \ build \ intermediates \ bundles \ debug \ classes.jar
version ver: "votre_app" \ build \ intermediates \ bundles \ release \ classes.jar
Le fichier JAR est créé sur la procédure de construction, dans l'interface graphique d'Android Studio, c'est à partir de Build-> Make Project et à partir de la ligne CMD, c'est "gradlew build".
la source
Incluez les éléments suivants dans build.gradle:
android.libraryVariants.all { variant -> task("generate${variant.name}Javadoc", type: Javadoc) { description "Generates Javadoc for $variant.name." source = variant.javaCompile.source ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) } task("javadoc${variant.name}", type: Jar) { classifier = "javadoc" description "Bundles Javadoc into a JAR file for $variant.name." from tasks["generate${variant.name}Javadoc"] } task("jar${variant.name}", type: Jar) { description "Bundles compiled .class files into a JAR file for $variant.name." dependsOn variant.javaCompile from variant.javaCompile.destinationDir exclude '**/R.class', '**/R$*.class', '**/R.html', '**/R.*.html' } }
Vous pouvez ensuite exécuter gradle avec:
./gradlew clean javadocRelease jarRelease
qui vous construira votre Jar et également un jar javadoc dans lebuild/libs/
dossier.EDIT: Avec les outils Android Gradle 1.10. + Obtenir le répertoire du SDK Android est différent qu'avant. Vous devez modifier ce qui suit (merci Vishal!):
android.sdkDirectory
au lieu de
android.plugin.sdkDirectory
la source
J'ai pu exporter un fichier jar dans Android Studio à l'aide de ce tutoriel: https://www.youtube.com/watch?v=1i4I-Nph-Cw "Comment exporter un fichier Jar à partir d'Android Studio"
J'ai mis à jour ma réponse pour inclure toutes les étapes d'exportation d'un JAR dans Android Studio:
1) Créez un projet d'application Android, accédez à app-> build.gradle
2) Modifiez les éléments suivants dans ce fichier:
modifier appliquer le plugin: 'com.android.application' pour appliquer le plugin: 'com.android.library'
supprimez les éléments suivants: applicationId, versionCode et versionName
Ajoutez le code suivant:
// task to export contents as jar task exportJar(type: Copy) { from ('build/intermediates/bundles/release/') into ('release/') include ('classes.jar') rename('classes.jar', 'AndroidPlugin2.jar') } exportJar.dependsOn(deleteOldJar, build)
3) N'oubliez pas de cliquer sur synchroniser maintenant dans ce fichier (en haut à droite ou utilisez le bouton de synchronisation).
4) Cliquez sur l'onglet Gradle (généralement au milieu à droite) et faites défiler vers le bas jusqu'à exportjar
5) Une fois que vous voyez le message de construction réussie dans la fenêtre d'exécution, à l'aide de l'explorateur de fichiers normal, accédez au fichier jar exporté en utilisant le chemin: C: \ Users \ name \ AndroidStudioProjects \ ProjectName \ app \ release, vous devriez voir dans ce répertoire votre fichier jar.
Bonne chance :)
la source
Voici encore une autre réponse légèrement différente avec quelques améliorations.
Ce code sort le .jar du .aar. Personnellement, cela me donne un peu plus confiance que les bits expédiés via .jar sont les mêmes que ceux expédiés via .aar. Cela signifie également que si vous utilisez ProGuard, le fichier jar de sortie sera obscurci comme vous le souhaitez.
J'ai également ajouté une tâche super "makeJar", qui crée des fichiers JAR pour toutes les variantes de construction.
task(makeJar) << { // Empty. We'll add dependencies for this task below } // Generate jar creation tasks for all build variants android.libraryVariants.all { variant -> String taskName = "makeJar${variant.name.capitalize()}" // Create a jar by extracting it from the assembled .aar // This ensures that products distributed via .aar and .jar exactly the same bits task (taskName, type: Copy) { String archiveName = "${project.name}-${variant.name}" String outputDir = "${buildDir.getPath()}/outputs" dependsOn "assemble${variant.name.capitalize()}" from(zipTree("${outputDir}/aar/${archiveName}.aar")) into("${outputDir}/jar/") include('classes.jar') rename ('classes.jar', "${archiveName}-${variant.mergedFlavor.versionName}.jar") } makeJar.dependsOn tasks[taskName] }
Pour le lecteur curieux, j'ai eu du mal à déterminer les variables et les paramètres corrects que le plugin com.android.library utilise pour nommer les fichiers .aar. Je les ai finalement trouvés dans le projet Open Source Android ici .
la source
Nous pouvons exporter un fichier jar pour un projet de bibliothèque Android sans fichiers de ressources par le studio Android. C'est aussi l'exigence de ce que j'ai rencontré récemment.
1. Configurez votre fichier build.gradle
// Task to delete old jar task clearJar(type: Delete){ delete 'release/lunademo.jar' } // task to export contents as jar task makeJar(type: Copy) { from ('build/intermediates/bundles/release/') into ('build/libs/') include ('classes.jar') rename('classes.jar', 'lunademo.jar') } makeJar.dependsOn(clearJar, build)
2. Exécutez gradlew makeJar sous la racine de votre projet
Vous verrez vos bibliothèques sous dir comme build / libs / si vous êtes heureusement.
=================================================== ==========
Si vous rencontrez un problème en tant qu '«exception de délai d'expiration du socket» sur la ligne de commande comme ci-dessous,
Vous pouvez suivre ces étapes pour ouvrir la fenêtre Gradle dans la partie droite et cliquer sur "makeJar" sur le studio Android comme ceci,
Ensuite, allez dans le répertoire build / libs, vous verrez votre fichier jar.
J'espère que cela vous sera utile.
Bonne chance @.@
Luna
la source