86 votes

Comment exporter une bibliothèque vers Jar dans Android Studio ?

J'ai téléchargé des sources de bibliothèque et j'aimerais les exporter sous forme de fichier Jar à l'aide de Android Studio. Existe-t-il un moyen d'exporter vers un fichier jar à l'aide d'Android Studio ?

éditer :

La bibliothèque que je souhaite exporter au format jar est une bibliothèque Android. Elle s'appelle "StandOut" et peut être téléchargée depuis GitHub. https://github.com/pingpongboss/StandOut

86voto

Alex Points 15303

Il n'est pas possible d'exporter une bibliothèque Android sous forme de fichier jar. Il est toutefois possible de l'exporter en tant que aar fichier. Aar étant le nouveau format binaire pour les bibliothèques Android. Il y a des informations à ce sujet dans le Google I/O, le Vidéo sur le nouveau système de construction .

Tout d'abord, créez la bibliothèque dans Android Studio ou à partir de la ligne de commande. gradle build dans le répertoire racine de votre bibliothèque.

Il en résultera <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 comme projet de dépendance.

Pour ajouter un fichier aar en tant que dépendance, vous devez le publier dans le dépôt central de maven ou dans votre dépôt local de maven, puis faire référence au fichier aar dans la section gradle.build fichier.

Cependant, cette étape est un peu compliquée. J'ai trouvé une bonne explication ici :

http://www.flexlabs.org/2013/06/using-local-aar-Android-library-packages-in-gradle-builds

44voto

7hny Points 181

J'ai pu construire une bibliothèque dont le code source a été compilé. .jar en utilisant l'approche de cette solution : https://stackoverflow.com/a/19037807/1002054

Voici le détail de ce que j'ai fait :

1. Dépôt de la bibliothèque

Dans certains cas, il s'agissait d'une bibliothèque de volley-ball

2. Importer la bibliothèque dans Android Studio.

J'ai utilisé Android Studio 0.3.7. J'ai rencontré quelques problèmes lors de cette étape, notamment j'ai dû copier gradle du 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écution gradlew makeJar à partir de votre projet Root.

Dans mon cas, j'ai dû copier gradlew.bat y gradle du nouveau projet Android dans ma bibliothèque Root. Vous devriez trouver votre fichier de bibliothèque compilé myCompiledLibrary.jar en build\libs répertoire.

J'espère que cela sera utile à quelqu'un.

Editer :

Mise en garde

Bien que cela fonctionne, vous rencontrerez une exception de bibliothèque dupliquée lors de la compilation d'un projet avec plusieurs modules, où plusieurs modules (y compris le module d'application) dépendent de la même bibliothèque. jar (par exemple, les modules ont leur propre répertoire de bibliothèques, qui est référencé dans le fichier build.gradle d'un module donné).

Dans le cas où vous devez utiliser une seule bibliothèque dans plusieurs modules, je vous recommande d'utiliser cette approche : Android gradle build et la bibliothèque de support

38voto

Avi Levin Points 1457

Depuis Android Studio V1.0, le fichier jar est disponible dans le lien du projet suivant :

déboguer ver : "votre_app" \build\intermediates\bundles\debug\classes.jar

version ver : "votre_app" \build\intermediates\bundles\release\classes.jar

Le fichier JAR est créé lors de la procédure de construction, Dans l'interface graphique d'Android Studio, c'est Build->Make Project et dans la ligne CMD, c'est "gradlew build".

31voto

Walmart_Hobo Points 151

Inclure ce qui suit dans le fichier 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 alors exécuter gradle avec : ./gradlew clean javadocRelease jarRelease qui vous construira votre Jar ainsi qu'un javadoc jar dans le répertoire build/libs/ dossier.

EDITAR: Avec les outils Android gradle 1.10.+ l'obtention du répertoire SDK Android est différente qu'auparavant. Vous devez changer ce qui suit (merci Vishal !):

android.sdkDirectory 

au lieu de

android.plugin.sdkDirectory

12voto

RMDev Points 153

J'ai pu exporter un fichier jar dans Android Studio en utilisant ce tutoriel : https://www.youtube.com/watch?v=1i4I-Nph-Cw "Comment exporter des jarres à partir d'Android Studio "

J'ai mis à jour ma réponse pour inclure toutes les étapes de l'exportation d'un JAR dans Android Studio :

1) Créer un projet d'application Android, aller à app->build.gradle

2) Modifiez les éléments suivants dans ce fichier :

  • modifier appliquer le plugin : 'com.Android.application' a appliquer le plugin : 'com.Android.library'

  • supprimer les éléments suivants : applicationId, versionCode et versionName

  • Ajoutez le code suivant :

// Task to delete old jar
task deleteOldJar(type: Delete){
   delete 'release/AndroidPlugin2.jar'
}
// 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 synchronisation maintenant dans ce fichier (en haut à droite ou en utilisant le bouton de synchronisation).

4) Cliquez sur l'onglet Gradle (généralement au milieu à droite) et descendez jusqu'à exportjar

5) Une fois que vous avez vu le construire avec succès dans la fenêtre d'exécution, en utilisant l'explorateur de fichiers normal, aller dans le 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 :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X