Je suis nouveau dans le système de construction Gradle et IntelliJ.
Alors, comment puis-je 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 le fichier com.myapp.lib1 dans le projet d'application ?
Je suis allé à la structure de 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'il est utilisé dans le projet d'application, mais lorsque j'exécute le projet d'application, des erreurs telles que:
Gradle: error: package com.myapp.lib1 does not exist
Pour créer une bibliothèque:
Fichier> Nouveau module
sélectionnez Android Library
Pour utiliser la bibliothèque, ajoutez-la en tant que dépendance:
Fichier> Structure du projet> Modules> Dépendances
Ajoutez ensuite le module (bibliothèque Android) en tant que dépendance de module.
Exécutez votre projet. Cela sera travail.
Je me demande pourquoi il n'y a pas d'exemple de projet de bocal autonome.
Dans Eclipse, il suffit de cocher la case "Is Library" dans la boîte de dialogue de configuration du projet.
Dans Android studio, j’ai suivi cette procédure et j’ai obtenu un fichier jar.
Créez un projet.
ouvrir le fichier dans le menu de projet de gauche. (app/build.gradle): Scripts Gradle> build.gradle (Module: XXX)
changer une ligne: apply plugin: 'com.Android.application'
-> 'apply plugin: com.Android.library'
supprimez applicationId dans le fichier: applicationId "com.mycompany.testproject"
projet de construction: Build> Rebuild Project
alors vous pouvez obtenir un fichier aar: app> construire> sorties> un dossier aar
changer le nom de l'extension de fichier aar
en Zip
décompressez et vous pourrez voir classes.jar
dans le dossier. renommer et l'utiliser!
Quoi qu'il en soit, je ne sais pas pourquoi Google rend la création de fichiers JAR si gênante dans Android studio.
Le plugin Gradle de Google recommandé pour la configuration de vos fichiers Gradle afin de générer plusieurs projets présente quelques inconvénients Si vous avez plusieurs projets dépendant d'un projet de bibliothèque, cet article explique brièvement la configuration recommandée par Google, ses insuffisances et vous recommande une méthode différente pour configurer vos fichiers Gradle. prendre en charge les configurations multi-projets dans Android Studio:
ne 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 à indiquer à Gradle 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 que j'ai décrite ci-dessus, procédez comme suit:
La 4ème étape est la partie la plus difficile, c’est la seule étape que je vais décrire 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'objet ProjectDescriptor renvoyé par cette instruction de projet:
Le code à mettre dans settings.gradle
:
include ':library1'
project(':library1').projectDir = new File('../StickyListHeader/library1')
Si vous avez correctement effectué cette opération, 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 de projet:
Cela vous permet de travailler simultanément sur le code de bibliothèque et le code d'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 de cette manière. Vous pouvez valider et appliquer vos modifications au code de la bibliothèque, tout comme vous pouvez valider et modifier le code de votre application.
Cette façon de configurer plusieurs projets évite les difficultés qui affectent la configuration recommandée par Google. Comme nous référençons 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 bibliothèque pour chaque application qui en dépend, et nous pouvons mettre à jour nos bibliothèques sans aucune sorte de non-sens absurde du sous-module git.
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 comprendrez en consultant le guide de Google. Pour l’instant, il n’ya aucun moyen de configurer vos projets de cette manière en utilisant l’interface utilisateur de Android Studio.
Découvrez ceci lien sur les configurations multi-projets .
Certaines choses à souligner, assurez-vous que votre fichier settings.gradle est mis à jour pour faire référence aux modules de l'application et de la bibliothèque.
settings.gradle: include ':app', ':libraries:lib1', ':libraries:lib2'
Assurez-vous également que build.gradle de l'application possède 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 plug-in com.Android.application
, tandis que le fichier build.gradle de toutes les bibliothèques doit utiliser le plug-in com.Android.library
.
Le Android Studio IDE devrait se mettre à jour si vous pouvez 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 à un projet dans Eclipse. Projet dans Android Studio est un ensemble de modules. Les modules peuvent être des applications exécutables ou des modules de bibliothèque.
Ainsi, pour ajouter 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 réutiliser un projet de bibliothèque:
file > new > new module
(et répondez aux questions sur l'interface utilisateur)include ':myLibrary'
vérifier/ou ajouter si dans le fichier build.gradle :
dependencies { ... compile project(':myLibrary') }
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 studio Vous pouvez facilement remplacer un module d'application existant par un module de bibliothèque en modifiant l'affectation du 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 ajouter un nouveau module à n'importe quelle application comme Blundell indique sa réponse, puis la référencer à partir de toute autre application.
Si vous souhaitez déplacer le module à 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 {
...
compile 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 apply plugin: 'com.Android.library'
dans votre build.gradle
au lieu d'appliquer le plugin: 'com.Android.application'
C'est la méthode recommandée, conformément aux conseils donnés dans la documentation de Android Studio.
Créez un nouveau projet pour créer votre bibliothèque. Cliquez sur Fichier> Nouveau> Nouveau module> Android Bibliothèque> Suivant> (choisissez un nom)> Terminer . Ajoutez ensuite les classes et les ressources de votre choix à 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/
.
Vous pouvez ajouter votre bibliothèque en tant que dépendance à un autre projet comme celui-ci:
Dans le fichier settings.gradle, assurez-vous que le nom de votre bibliothèque est présent.
include ':app', ':my-library-module'
Dans le fichier build.gradle de l'application, ajoutez la ligne de compilation à la section dependencies:
dependencies {
compile project(":my-library-module")
}
C'est ça. Vous devriez pouvoir utiliser votre bibliothèque maintenant.
Si vous souhaitez que votre bibliothèque soit facilement accessible à un public plus large, envisagez d'utiliser JitPac ou JCenter .
Avait la même question et résolu de la manière suivante:
Situation de départ:
FrigoShare (root)
|-Modules: frigoshare, frigoShare-backend
Target: vouloir ajouter un module nommé dataformats
Java Library
)Assurez-vous que votre settings.gradle
ressemble à ceci (normalement automatiquement):
include ':frigoshare', ':frigoShare-backend', ':dataformats'
Assurez-vous ( manuellement ) que les fichiers build.gradle
des modules devant utiliser votre bibliothèque ont la dépendance suivante:
dependencies { ... compile project(':dataformats') }
Objet: Android bibliothèque à un seul emplacement - Partage de plusieurs projets http://raevilman.blogspot.com/2016/02/Android-library-project-using-Android.html
Comme le commentaire theczechsensation ci-dessus, j’essaie de chercher à propos de Gradle Build Varians et j’ai trouvé ce lien: http://code.tutsplus.com/tutorials/using-gradle-build-variants--cms-25005 This est une solution très simple. Voici ce que j'ai fait: - Dans build.gradle:
flavorDimensions "version"
productFlavors {
trial{
applicationId "org.de_studio.recentappswitcher.trial"
flavorDimension "version"
}
pro{
applicationId "org.de_studio.recentappswitcher.pro"
flavorDimension "version"
}
}
Ensuite, j'ai 2 autres versions de mon application: pro et version d'évaluation avec 2 nom de paquet différent, ce qui correspond à 2 applicationId dans le code ci-dessus, de sorte que je puisse 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.
Dans mon cas, en utilisant MAC OS X 10.11 et Android 2.0, et en faisant exactement ce que Aqib Mumtaz a expliqué.
Mais à chaque fois, j'ai eu ce message: "n problème est survenu lors de la configuration du projet ': app'.> Impossible d'évaluer le module xxx: Configuration avec le nom 'default' introuvable."
J'ai trouvé que la raison de ce message est que Android 2.0 ne permet pas de créer directement une bibliothèque. J'ai donc d'abord décidé de créer un projet d'application, puis de modifier le build.gradle afin de 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.
Donc, j'ai résolu mon problème comme ceci:
Continuez ensuite avec la solution proposée par Aqib Mumtaz.
En conséquence, la source de votre bibliothèque sera partagée sans qu'il soit nécessaire de dupliquer les fichiers source à chaque fois (c'était une hérésie pour moi!)
En espérant que cela vous aide.
Il y a deux façons les plus simples si l'une ne fonctionne pas, essayez l'autre.
OR