160 votes

Comment créer un projet de bibliothèque dans Android Studio et un projet d'application qui utilise ce projet de bibliothèque ?

Je suis nouveau dans le système de construction gradle 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 construction inclue com.myapp.lib1 sur le projet d'application ?

Je suis allé dans la structure du projet -> Modules -> projet My App et j'ai ajouté une dépendance au projet lib. IntelliJ peut maintenant reconnaître les classes du projet lib lorsqu'elles sont utilisées dans le projet d'application, mais lorsque je lance le projet d'application, il y a des erreurs comme :

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

116voto

Jinbom Heo Points 1301

Je me demande pourquoi il n'y a pas d'exemple de projet jar autonome.

Dans Eclipse, il suffit de cocher la case "Is Library" dans le dialogue de configuration du projet.
Dans Android studio, j'ai suivi ces étapes et j'ai obtenu un fichier jar.

  1. Créez un projet.

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

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

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

  5. construire un projet : Construire > Reconstruire le projet

  6. alors vous pouvez obtenir le fichier aar : app > build > outputs > dossier aar

  7. changement aar dans le nom de l'extension du fichier zip

  8. dézipper, et vous pouvez voir classes.jar dans le dossier. renommez-le et utilisez-le !

De toute façon, je ne sais pas pourquoi google rend la création de jar si difficile dans Android studio.

110voto

Blundell Points 28342

Pour créer une bibliothèque :

Fichier > Nouveau module

sélectionnez Bibliothèque Android

Lib

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

Fichier > Structure du projet > Modules > Dépendances

dep

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

add module

Exécutez votre projet. Il sera travail.

98voto

Aqib Mumtaz Points 214

La méthode recommandée par le plugin Gradle de Google pour configurer vos fichiers gradle afin de construire plusieurs projets présente des lacunes Si vous avez plusieurs projets qui dépendent d'un projet de bibliothèque, cet article explique brièvement la configuration recommandée par Google, ses lacunes, et recommande une méthode différente pour configurer vos fichiers gradle afin de prendre en charge les configurations multi-projets dans Android Studio :

Une autre configuration multi-projets pour Android studio

Un chemin différent :

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 à indiquer à gradle que le module de la bibliothèque dont dépend votre application est situé dans le répertoire de projet de la bibliothèque. Si vous vouliez utiliser cette méthode avec la structure de projet que j'ai décrite ci-dessus, vous feriez ce qui 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. Configurer App1 et App2 pour construire les modules dans le projet StickyListHeaders.

La quatrième étape est la plus difficile, c'est donc la seule que je vais décrire en détail. Vous pouvez référencer des modules qui sont externes au répertoire de votre projet en ajoutant une déclaration de projet dans votre fichier settings.gradle et en définissant la propriété projectDir sur l'objet ProjectDescriptor qui est retourné par cette déclaration de projet :

enter image description here

Le code que l'on doit 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 du projet, même si ces modules sont externes au répertoire du projet :

enter image description here

Cela vous permet de travailler simultanément sur le code de la bibliothèque et sur celui de l'application. L'intégration du contrôle de version fonctionne également très bien lorsque vous référencez des modules en externe de cette manière. Vous pouvez livrer et pousser vos modifications au code de la bibliothèque tout comme vous pouvez livrer et pousser des modifications au code de votre application.

Cette façon de mettre en place plusieurs projets permet d'éviter les difficultés que présente la configuration recommandée par Google. Parce que nous faisons référence à un module qui se trouve en dehors du répertoire du projet, nous n'avons pas besoin de faire des copies supplémentaires du module de la bibliothèque pour chaque application qui en dépend et nous pouvons mettre à jour nos bibliothèques sans aucune sorte d'absurdité de git submodule.

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

45voto

GrkEngineer Points 1253

Regarde ça lien sur les configurations multi-projets .

Quelques points à souligner, assurez-vous que votre settings.gradle a été mis à jour pour référencer à la fois les modules app et library.

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

Assurez-vous également que le fichier build.gradle de l'application contient les éléments suivants :

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

Vous devriez avoir la structure suivante :

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

Le fichier build.gradle de l'application doit utiliser le fichier android tandis que le build.gradle de toute bibliothèque doit utiliser le plugin android-library plugin.

L'IDE Android Studio devrait se mettre à jour si vous êtes en mesure de construire à partir de la ligne de commande avec cette configuration.

13voto

Sime-Droid Points 301

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

Ainsi, afin d'ajouter un nouveau projet de bibliothèque Android, vous devez créer un module de type "Android library". Ajoutez ensuite ce module de bibliothèque à la liste des dépendances de votre module principal (module Application).

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