Android Gradle l'ajout d'une bibliothèque externe et imbriquées les bibliothèques externes à un projet

StackOverflow https://stackoverflow.com//questions/21001232

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

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?

Était-ce utile?

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'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top