Android Gradle l'ajout d'une bibliothèque externe et imbriquées les bibliothèques externes à un projet
-
20-12-2019 - |
Question
Comment puis-je ajouter une bibliothèque externe et imbriqués les bibliothèques externes à un projet android?
Mon projet de la structure (Pas le droit de les modifier)
- Apps/
- App1/
- construire.gradle
- les paramètres.gradle
- les bibliothèques/
- 1/
- construire.grade
- les paramètres.gradle
- library2/
- construire.grade
- les paramètres.gradle
- library3/
- construire.grade
- les paramètres.gradle
- library4/
- construire.grade
- les paramètres.gradle
- 1/
- App1/
App1
App1/build.gradle
buildscript {
...
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':..:libraries:library1')
compile project(':..:libraries:library2')
compile project(':..:libraries:library3')
compile project(':..:libraries:library4')
}
android {
...
}
App1 ne dépend pas directement de library3
ou library4
, cependant, il va se plaindre si je ne les inclut pas dans les dépendances du build.gradle
fichier et le settings.gradle
fichier.Donc, je les ai inclus juste pour arrêter de se plaindre.
App1/paramètres.gradle
include ':'
include '..:libraries:library1'
include '..:libraries:library2'
include '..:libraries:library3'
include '..:libraries:library4'
1
1/construire.gradle
buildscript {
...
}
apply plugin: 'android-library'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':..:library3')
compile project(':..:library4')
}
android {
...
}
1/paramètres.gradle
include ':'
include '..:library3'
include '..:library4'
library2..4
library2..4/construire.gradle
buildscript {
...
}
apply plugin: 'android-library'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
...
}
library2..4/paramètres.gradle
include ':'
Lorsque vous essayez d' gradlew clean build
sur App1
j'obtiens l'erreur suivante:
FAILURE: Build failed with an exception.
* Where:
Build file '/home/user/projects/branches/branch1/Apps/libraries/library1/build.gradle' line: 15
* What went wrong:
A problem occurred evaluating project ':..:library:library1'.
> Project with path ':..:library3' could not be found in project ':..:library:library1'.
La ligne 15 est compile project(':..:library3')
dans le library1/build.gradle
fichier.
Comment puis-je ajouter une bibliothèque externe et imbriqués les bibliothèques externes à un projet android?
La solution
Dans vos paramètres de niveau supérieur.gradle (App1/paramètres.gradle) fichier faire quelque chose comme cela pour chaque bibliothèque
include ':library1'
include ':library2'
include ':library3'
include ':library4'
project(':library1').projectDir = new File(rootProject.projectDir, '../libraries/library1')
project(':library2').projectDir = new File(rootProject.projectDir, '../libraries/library2')
project(':library3').projectDir = new File(rootProject.projectDir, '../libraries/library3')
project(':library4').projectDir = new File(rootProject.projectDir, '../libraries/library4')
Supprimer les autres paramètres.gradle fichiers, vous n'avez pas besoin d'eux
puis dans chaque script de build vous avez seulement besoin d'utiliser
compile project (':library1')
compile project (':library2')
etc....
comme indiqué ci-dessus il suffit d'utiliser un seul des paramètres.gradle fichier à la racine du projet (App1).
Puis, à partir de votre App1 dossier d'exécution gradlew clean :library1:build
pour valider que le 1 est de construire correctement.
Comme pour la question sur App1 se plaindre des bibliothèques manquantes 3 & 4, êtes-vous sûr que vous n'avez pas de code dans l'application directement le référencement de ces bibliothèques, ou les bibliothèques ne sont pas être trouvé lors de la compilation 1.La construction de chaque bibliothèque individuellement afin de valider qu'ils se construire ok.
Autres conseils
Une seule question.Avez-vous besoin de cette dépendance de l'arbre?
--- App
|--- Library 2
|--- Library 1
|--- Library 3
|--- Library 4
Si oui, votre Application n'a pas besoin d'importer les bibliothèques 3 et 4.Ces dépendances sont disponibles sur la Bibliothèque de 1.
À propos des paramètres.gradle fichiers.Pourquoi un dans chaque module?Ce fichier n'est utilisé que dans la racine du projet (comme Eclipse espace de travail) pour faire référence à vos modules (App, la Bibliothèque de 1, la Bibliothèque 2, etc...)
Cela vous aider?
Je suis en train de faire ce pour les chemins relatifs:
include '..:ambilWarna'
include '..:excel'
include '..:pdfjet'
include '..:commons'
include '..:volley'
include ':odb2'
include ':azure'
include ':carBase'
include ':fuelTrackerLib'
include ':comsourcecastlelogbook'