web-dev-qa-db-fra.com

Comment créer un fichier .jar à partir d'un projet Android Studio

J'utilise AndroidStudio et j'ai ce projet comme indiqué:

enter image description here

Ce qui est à l'intérieur du cercle bleu est myLib. myLib doit également utiliser une bibliothèque externe située à l'intérieur du cercle rouge et un package Apache (cercle vert).

Je souhaite donc que tout cela devienne un fichier .jar unique, afin que je puisse l'utiliser dans d'autres projets.

Un guide étape par étape serait vraiment apprécié. Je suis un débutant dans le monde des développeurs.

Merci!

94
dum4ll3
  • Ouvrez le fichier build.gradle pour le projet de bibliothèque enter image description here

  • Ecrivez deux tâches dans build.gradle - deleteJar et createJar et ajoutez la règle createJar.dependsOn (deleteJar, build) enter image description here

Le code ci-dessus:

task deleteJar(type: Delete) {
    delete 'libs/jars/logmanagementlib.jar'
}           

task createJar(type: Copy) {
    from('build/intermediates/bundles/release/')
    into('libs/jars/')
    include('classes.jar')
    rename('classes.jar', 'logmanagementlib.jar')
}

createJar.dependsOn(deleteJar, build)
  • Développez le panneau de niveaux de droite et ouvrez toutes les tâches de votre bibliothèque-> autres. Vous y verrez deux nouvelles tâches - createJar et deleteJar enter image description here

  • Double-cliquez sur createJar enter image description here

  • Une fois la tâche exécutée avec succès, récupérez votre fichier jar généré à partir du chemin mentionné dans la tâche createJar, à savoir libs/xxxx.jar enter image description here

  • copier le fichier jar nouvellement généré dans le dossier lib de votre projet requis -> clic droit -> sélectionnez "add as library"

131
Abhinav Tyagi

Si vous configurez le code en tant que module brut Java dans Gradle, il est très facile de demander à Gradle de vous fournir un fichier jar contenant le contenu. Ce fichier jar contiendra uniquement votre code, pas les autres bibliothèques Apache dont il dépend. Je recommanderais de le distribuer de cette façon; il est un peu bizarre de regrouper des dépendances dans votre bibliothèque, et il est plus normal que les utilisateurs de ces bibliothèques soient obligés d'inclure ces dépendances eux-mêmes (car sinon, il y a des conflits entre ces projets qui lient déjà des copies de la bibliothèque, peut-être de versions différentes. ) De plus, vous évitez les problèmes de licence potentiels liés à la redistribution du code d'autres personnes si vous publiez votre bibliothèque.

Prenez le code qui doit également être compilé dans un fichier jar et déplacez-le dans un module distinct Java dans Android Studio:

  1. Fichier menu> Nouveau module ... > Bibliothèque java
  2. Configurez la bibliothèque, le nom du package Java et les noms de classe dans l'assistant. (Si vous ne voulez pas qu'il crée une classe pour vous, vous pouvez simplement le supprimer une fois le module créé)
  3. Dans votre code Android, configurez une dépendance sur le nouveau module afin qu'il puisse utiliser le code de votre nouvelle bibliothèque:
  4. Fichier > Structure du projet > Modules > (votre module Android) > Les dépendances > + > Dépendance du module. Voir la capture d'écran ci-dessous: enter image description here
  5. Choisissez votre module dans la liste de la boîte de dialogue suivante: enter image description here

Espérons que votre projet devrait être construit normalement maintenant. Après avoir construit, un fichier jar pour votre bibliothèque Java sera placé dans le répertoire build/libs répertoire dans le répertoire de votre module. Si vous voulez créer le fichier jar à la main, vous pouvez exécuter son jar tâche de création de fichier à partir de la fenêtre Gradle: enter image description here

56
Scott Barta

Gradle a déjà un Task pour cela sous other

enter image description here

Ensuite, faites défiler jusqu'à createFullJarRelease et cliquez dessus.

Gradle Tasks

Ensuite, vous trouverez votre artefact dans ce dossier de votre projet.

Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar

20
Haroun Hajem

Ajoutez simplement ceci à votre build.gradle de votre module Java. Il inclura les bibliothèques dépendantes dans les archives.

mainClassName = "com.company.application.Main"

jar {
  manifest { 
    attributes "Main-Class": "$mainClassName"
  }  

  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
  }
}

Cela se traduira par le fichier [nom_du_module]/build/libs/[nom_du_module] .jar.

10
Bao Le

Le fichier .jar sera automatiquement généré lors de la compilation/exécution de votre application.

Vous pouvez trouver votre fichier class.jar à partir du dossier racine/app/build/intermediates/bundles/debug.

jar file location

0
Sonia John Kavery
task deleteJar(type: Delete) {
    delete 'libs/mylibrary.jar'
}           

task exportjar(type: Copy) {
    from('build/intermediates/compile_library_classes/release/')
    into('libs/')
    include('classes.jar')
    rename('classes.jar', 'mylibrary.jar')
}

exportjar.dependsOn(deleteJar, build)
0

la façon dont j'ai trouvé était de trouver la sortie du compilateur du projet (structure du projet> projet). Recherchez ensuite le dossier conforme du module que vous souhaitez transformer en fichier jar, compressez-le avec Zip et modifiez l'extension de la sortie de Zip en fichier jar.

0
yaniv

Si vous exécutez une tâche de classement à partir d'AndroidStudio

assembleRelease 

ou via terminal

./gradlew <moduleName>:assembleRelease

alors vous pourrez trouver .aar dans <modulePath>/build/outputs/aar/<Name>.aar

Après cela, vous pouvez effectuer des opérations supplémentaires (par exemple, créer un .jar) à l'aide d'outils de ligne de commande.

0
yoAlex5