Comment créer un projet de bibliothèque dans Android Studio et un projet d’application utilisant le projet de bibliothèque

Je suis nouveau dans le système de construction graduelle et IntelliJ.

Alors, comment créer un projet de bibliothèque Android (par exemple, com.myapp.lib1) et le projet d’application (par exemple, com.myapp.app) et faire en sorte que le système de génération inclue com.myapp.lib1 dans le projet d’application?

Je suis allé au projet Structure -> Modules -> Mon projet d’application et ajouté une dépendance au projet lib. IntelliJ peut désormais reconnaître les classes du projet lib lorsqu’il est utilisé dans le projet d’application, mais lorsque je lance le projet d’application, il existe des erreurs telles que:

Gradle: error: package com.myapp.lib1 does not exist 

Pour créer une bibliothèque:

Fichier> Nouveau module

sélectionnez la bibliothèque Android

Lib

Pour utiliser la bibliothèque, ajoutez-la en tant que dépendance:

Fichier> Structure du projet> Modules> Dépendances

dep

Ajoutez ensuite le module (bibliothèque Android) en tant que dépendance de module.

ajouter un module

Exécutez votre projet. Ça marchera

Je me demande pourquoi il n’y a pas d’exemple de projet de pot autonome.

En éclipse, nous vérifions simplement la case “Is Library” dans la boîte de dialog de paramétrage du projet.
En studio Android, j’ai suivi ces étapes et obtenu un fichier jar.

  1. Créer un projet

  2. ouvrir le fichier dans le menu gauche du projet. (app / build.gradle): Scripts Gradle> build.gradle (Module: XXX)

  3. changer une ligne: apply plugin: 'com.android.application' -> 'apply plugin: com.android.library'

  4. supprimer applicationId dans le fichier: applicationId "com.mycompany.testproject"

  5. projet de construction: Build> Rebuild Project

  6. alors vous pouvez obtenir un fichier aar: app> build> output> aar folder

  7. changer le nom de l’extension de fichier aar en zip

  8. décompressez, et vous pouvez voir classes.jar dans le dossier. renommer et utiliser!

Quoi qu’il en soit, je ne sais pas pourquoi Google rend la création de pots si gênante dans le studio Android.

Si vous avez plusieurs projets en fonction d’un projet de bibliothèque, cet article explique brièvement la configuration recommandée par Google, ses faiblesses et recommande une méthode différente pour configurer vos fichiers de graduation. prendre en charge les configurations multi-projets dans Android Studio:

Une configuration multiprojet alternative pour Android studio

Une manière différente:

Il s’avère qu’il existe un meilleur moyen de gérer plusieurs projets dans Android Studio. L’astuce consiste à créer des projets Android Studio distincts pour vos bibliothèques et à dire que le module de la bibliothèque dont dépend votre application se trouve dans le répertoire du projet de la bibliothèque. Si vous souhaitez utiliser cette méthode avec la structure de projet décrite ci-dessus, procédez comme suit:

  1. Créer un projet Android Studio pour la bibliothèque StickyListHeaders
  2. Créer un projet Android Studio pour App2
  3. Créer un projet Android Studio pour App1
  4. Configurez App1 et App2 pour générer les modules dans le projet StickyListHeaders.

La 4ème étape est la partie difficile, c’est donc la seule étape que je décrirai en détail. Vous pouvez référencer des modules externes au répertoire de votre projet en ajoutant une instruction de projet dans votre fichier settings.gradle et en définissant la propriété projectDir sur l’object ProjectDescriptor renvoyé par cette déclaration de projet:

entrer la description de l'image ici

Le code à mettre dans settings.gradle :

 include ':library1' project(':library1').projectDir = new File('../StickyListHeader/library1') 

Si vous avez fait cela correctement, vous remarquerez que les modules référencés par votre projet apparaîtront dans le navigateur de projet, même si ces modules sont externes au répertoire du projet:

entrer la description de l'image ici

Cela vous permet de travailler simultanément sur le code de la bibliothèque et le code de l’application. L’intégration du contrôle de version fonctionne également très bien lorsque vous référencez des modules de manière externe. Vous pouvez valider et pousser vos modifications dans le code de la bibliothèque, tout comme vous pouvez le faire et apporter des modifications à votre code d’application.

Cette manière de configurer plusieurs projets évite les difficultés qui affectent la configuration recommandée par Google. Comme nous faisons référence à un module situé en dehors du répertoire du projet, nous n’avons pas besoin de faire des copies supplémentaires du module de bibliothèque pour chaque application qui en dépend et nous pouvons mettre à jour nos bibliothèques sans aucune sorte de non-sens.

Malheureusement, cette autre façon de mettre en place plusieurs projets est très difficile à trouver. De toute évidence, ce n’est pas quelque chose que vous découvrirez en consultant le guide de Google, et à ce stade, il n’y a aucun moyen de configurer vos projets de cette manière en utilisant l’interface utilisateur d’Android Studio.

Découvrez ce lien sur les configurations multi-projets .

Quelques points à souligner, assurez-vous que vos settings.gradle sont mis à jour pour référencer à la fois les modules d’application et de bibliothèque.

settings.gradle: include ':app', ':libraries:lib1', ':libraries:lib2'

Assurez-vous également que le build.gradle de l’application comporte les éléments suivants:

 dependencies { comstack project(':libraries:lib1') } 

Vous devriez avoir la structure suivante:

  MyProject/ | settings.gradle + app/ | build.gradle + libraries/ + lib1/ | build.gradle + lib2/ | build.gradle 

Le build.gradle de l’application doit utiliser le plugin com.android.application alors que toutes les bibliothèques doivent utiliser le plugin com.android.library .

Android Studio IDE doit être mis à jour si vous êtes capable de créer à partir de la ligne de commande avec cette configuration.

Pour Intellij IDEA (et Android Studio), chaque bibliothèque est un module. Pensez à un module dans Android Studio comme équivalent à projeter dans Eclipse. Project dans Android Studio est une collection de modules. Les modules peuvent être des applications exécutables ou des modules de bibliothèque.

Donc, pour append un nouveau projet de bibliothèque Android, vous devez créer un module de type “Bibliothèque Android”. Ajoutez ensuite ce module de bibliothèque à la liste des dépendances de votre module principal (module Application).

Le moyen le plus simple pour moi de créer et de réutiliser un projet de bibliothèque:

  1. Sur un file > new > new module projet ouvert file > new > new module (et répondez aux questions de l’interface utilisateur)

entrer la description de l'image ici

  1. vérifier / ou append si dans le fichier settings.gradle : include ':myLibrary'
  2. Vérifiez / ou ajoutez si dans le fichier build.gradle :

    dependencies { ... comstack project(':myLibrary') }

  3. Pour réutiliser ce module de bibliothèque dans un autre projet, copiez son dossier dans le projet au lieu de l’étape 1 et suivez les étapes 2 et 3.

Vous pouvez également créer un nouveau projet d’application de studio. Vous pouvez facilement changer un module d’application existant en un module de bibliothèque en modifiant l’atsortingbution de plug-in dans le fichier build.gradle à com.android.library.

 apply plugin: 'com.android.application' android {...} 

à

 apply plugin: 'com.android.library' android {...} 

plus ici

Vous pouvez append un nouveau module à n’importe quelle application, comme le dit Blundell sur sa réponse, puis le référencer à partir de toute autre application.

Si vous voulez déplacer le module vers n’importe quel endroit de votre ordinateur, déplacez simplement le dossier du module (les modules sont complètement indépendants), vous devrez alors référencer le module.

Pour référencer ce module, vous devez:

  • Dans le fichier build.gradle de votre application, ajoutez:

     dependencies { ... comstack project(':myandroidlib') } 
  • Sur le fichier settings.gradle, ajoutez ce qui suit:

      include ':app', ':myandroidlib' project(':myandroidlib').projectDir = new File(PATH_TO_YOUR_MODULE) 

N’oubliez pas d’utiliser le apply plugin: 'com.android.library' dans votre build.gradle au lieu d’appliquer le plugin: 'com.android.application'

Eu la même question et résolu le problème de la manière suivante:

Situation de départ :

 FrigoShare (root) |-Modules: frigoshare, frigoShare-backend 

Cible : vouloir append un module nommé dataformats

  1. Ajouter un nouveau module (ex: Java Library )
  2. Assurez-vous que votre settings.gradle ressemble à ceci (normalement automatiquement):

    include ':frigoshare', ':frigoShare-backend', ':dataformats'

  3. Assurez-vous ( manuellement ) que les fichiers build.gradle des modules devant utiliser votre bibliothèque ont la dépendance suivante:

    dependencies { ... comstack project(':dataformats') }

But: Bibliothèque Android à un seul endroit – Partager sur plusieurs projets http://raevilman.blogspot.com/2016/02/android-library-project-using-android.html

Manière de la documentation

C’est la méthode recommandée selon les conseils donnés dans la documentation d’Android Studio.

Créer un module de bibliothèque

Créez un nouveau projet pour activer votre bibliothèque. Cliquez sur Fichier> Nouveau> Nouveau module> Bibliothèque Android> Suivant> (choisissez un nom)> Terminer . Ajoutez ensuite les classes et ressources que vous souhaitez à votre bibliothèque.

Lorsque vous construisez le module, un fichier AAR sera créé. Vous pouvez le trouver dans project-name/module-name/build/outputs/aar/ .

Ajoutez votre bibliothèque en tant que dépendance

Vous pouvez append votre bibliothèque en tant que dépendance à un autre projet comme celui-ci:

  1. Importez votre fichier AAR de bibliothèque avec Fichier> Nouveau module> Importer le package .JAR / .AAR> Suivant> (choisissez l’emplacement du fichier)> Terminer . (Ne pas importer le code, sinon il sera éditable à trop d’endroits.)
  2. Dans le fichier settings.gradle, assurez-vous que votre nom de bibliothèque est bien là.

     include ':app', ':my-library-module' 
  3. Dans le fichier build.gradle de l’application, ajoutez la ligne de compilation à la section dépendances:

     dependencies { comstack project(":my-library-module") } 
  4. Vous serez invité à synchroniser votre projet avec gradle. Fais le.

C’est tout. Vous devriez pouvoir utiliser votre bibliothèque maintenant.

Remarques

Si vous souhaitez rendre votre bibliothèque facilement accessible à un public plus large, envisagez d’utiliser JitPac ou JCenter .

Comme commentaire ci-dessus, je cherche sur Gradle Build Varians et j’ai trouvé ce lien: http://code.tutsplus.com/tutorials/using-gradle-build-variants–cms-25005 C’est une solution très simple. Voici ce que j’ai fait: – Dans build.gradle:

 flavorDimensions "version" productFlavors { sortingal{ applicationId "org.de_studio.recentappswitcher.sortingal" flavorDimension "version" } pro{ applicationId "org.de_studio.recentappswitcher.pro" flavorDimension "version" } } 

Ensuite, j’ai 2 version de plus de mon application: pro et version d’essai avec 2 nom de paquet différent qui est 2 applicationId dans le code ci-dessus, donc je peux télécharger les deux sur Google Play. Je code encore dans la section “main” et utilise le getpackageName pour basculer entre les versions. Allez simplement sur le lien que j’ai donné pour plus de détails.

Il y a deux manières les plus simples si l’on ne travaille pas s’il vous plaît essayez l’autre.

  1. Ajoutez la dépendance de la bibliothèque dans la dépendance à l’intérieur du fichier build.gradle de la bibliothèque ur en utilisant et collez la bibliothèque ur dans les bibliothèques externes.

OU

  1. Il suffit d’aller dans votre dossier libs dans le dossier app et de coller tous vos fichiers .jar, par exemple les fichiers de la bibliothèque. Maintenant, l’astuce ici est d’aller dans settings.gradle maintenant append cette ligne “include ‘: app: libs” app ‘”Ca va certainement marcher ……….. 🙂

Dans mon cas, utiliser MAC OS X 10.11 et Android 2.0, et faire exactement ce qu’Aqib Mumtaz a expliqué.

Mais, à chaque fois, j’avais le message suivant: ” Un problème est survenu lors de la configuration du projet ‘: app’.> Impossible d’évaluer le module xxx: la configuration avec le nom” default “est introuvable .”

J’ai trouvé que la raison de ce message est que Android 2.0 ne permet pas de créer une bibliothèque directement. J’ai donc tout d’abord décidé de créer un projet d’application puis de modifier le build.gradle pour le transformer en bibliothèque.

Cette solution ne fonctionne pas, car un projet de bibliothèque est très différent d’un projet d’application.

J’ai donc résolu mon problème comme ceci:

  • Créez d’abord une application standard (si nécessaire);
  • Ensuite, choisissez “Fichier / Créer un module”
  • Allez dans le Finder et déplacez le dossier du module fraîchement créé dans votre répertoire de framework

Continuez ensuite avec la solution proposée par Aqib Mumtaz.

En conséquence, votre source de bibliothèque sera partagée sans avoir à dupliquer les fichiers source à chaque fois (c’était une hérésie pour moi!)

En espérant que cela vous aide.