Je vais convertir mes projets Android de Ant à Gradle.
Mon espace de travail Eclipse est très simple:
Workspace
MyApp
MyApp-AndroidLibrary
Lorsque j'ajoute un fichier build.gradle dans MyApp, je veux faire référence à mon Android:
apply plugin: 'Android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':MyApp-AndroidLibrary')
}
Lorsque j'exécute la génération de Gradle, il y a une erreur "Projet avec chemin ': MyApp-AndroidLibrary' est introuvable dans le projet racine", j'ai recherché cela sur Google et j'ai besoin de configurer un fichier "settings.gradle" dans mon espace de travail répertoire, pour ajouter
include ":MyApp"
include ":MyApp-AndroidLibrary"
Cela me semble trop mauvais, pourquoi Gradle a besoin d'un fichier settings.gradle, pourquoi ne pas simplement extraire les projets que j'ai définis dans les dépendances?
Et qu'est-ce que include
signifie vraiment? Et si j'ai une autre application et quelques autres bibliothèques partagées dans l'espace de travail, la structure peut ressembler à ceci:
Workspace
App1
App2
Library1(Used by App1 & App2)
Library2(Used only by App1)
Library3(Used only by App2)
Puisqu'il n'y a qu'UN fichier settings.gradle, j'ai dû les ajouter tous dans settings.gradle. Ça ne sent pas bon.
Et oui, je peux réorganiser la structure pour faire de Library2 un répertoire enfant d'App1 et Library3 pour être un répertoire enfant d'App2, mais qu'en est-il de Library1?
Un commentaire à ce sujet?
Vous posez plusieurs questions différentes. Voici quelques conseils:
':MyApp-AndroidLibrary'
est un chemin de projet logique , qui est mappé sur un chemin physique en fonction des informations fournies dans settings.gradle
.settings.gradle
. Pas besoin de déplacer les répertoires, sauf si vous le souhaitez.Pour plus d'informations, consultez le Gradle User Guide , en particulier le chapitre sur les builds multi-projets.
Juste au cas où des gens (comme moi ou Gladman) auraient toujours ce problème et ne trouveraient pas de solution. Avec la version actuelle de Gradle, vous pouvez le faire:
Déplacer le fichier settings.gradle
vers le répertoire My-App
et remplacez le include
par includeFlat 'MyApp-AndroidLibrary'
. Cela devrait résoudre le problème.
Comparez également cette question et voyez cette section dans le guide de l'utilisateur Gradle pour plus de détails.