2013-09-23 1 views
1

La documentation gradle (ainsi que beaucoup SO ressources que je vois) suggèrent:Android Gradle: Création d'un projet de bibliothèque et de l'utiliser dans un projet

« Une configuration multi-projet fonctionne généralement en ayant tous les projets sous-dossiers d'un projet racine donné. "

Dans ma situation, j'ai la structure de dossier suivant:

AndroidDev /* this is my root dir where I keep all my projects and libraries */ 
    | 
    |- MyProject1 
    |  |- MyProject1Module 
    | 
    |- MyProject2 
    |  |- MyProject2Module 
    | 
    |- MyLibrary 
     |- MyLibraryModule 

Maintenant, je veux utiliser MyLibraryModule et l'ajouter comme une dépendance à MyProject1 ainsi que MyProject2. Je veux ouvrir MyProject1 et MyProject2 dans des fenêtres Android Studio distinctes et être capable de les compiler avec la dépendance de la bibliothèque. Il n'ont rien en commun.

Comment puis-je y parvenir. Je ne suis pas capable de trouver une bonne ressource pour m'aider à comprendre cela.

EDIT: Pour être clair, je veux utiliser ceci avec le nouveau système de construction gradle. Donc, tout pointeur sur l'importation de modules et la configuration des dépendances de modules serait utile. Merci.

Répondre

0

Si je comprends bien votre question, la seule chose que vous devez faire est:

Eclipse sélectionnez votre projet MyLibraryModule -> clic droit -> Propriétés -> Android Ici, vous verrez une case à cocher « Est-ce Bibliothèque ', activer cela et appliquer.

Maintenant dans Workspace1 avec MyProject1, importez MyLibraryModule comme application android existante. Cliquez avec le bouton droit sur MyProject1 -> Properties -> Android -> Add. Dans la boîte de dialogue maintenant ouverte, vous devriez voir MyLibraryModule. Ajoutez-le, appliquez et OK.

Le même processus exact va pour Workspace2 avec MyProject2 ...

Cela fait effectivement la même chose que si vous avez ajouté un pot dans le dossier libs, vous êtes seulement maintenant en mesure de changer le code MyLibraryModule sans avoir à l'exportation etc. Et les deux projets vivent indépendamment l'un de l'autre mais dépendent du MyLibraryModule.

+0

Je suis conscient de la structure du projet IntelliJ et ce que vous avez dit semble être juste. Ma question est de l'utiliser avec le nouveau système de construction gradle. Configuration des dépendances dans le fichier build.gradle etc ... – advantej

+0

Oh, c'est vrai, ça m'a manqué. Je n'ai aucune expérience avec Gradle (sons bien nets). Une recherche google m'a conduit à http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup et autant que j'ai compris, les bibliothèques Android régulières (MyLibraryModule as défini dans ma réponse) devrait également fonctionner pour ce but. – cYrixmorten

0

Je n'utilise pas Android Studio, et je n'ai pas fait de développement Android, mais cela semble être une question qui nécessite seulement des connaissances de Gradle, alors je vais essayer. Tout d'abord, jetez un oeil à ceci: Having difficulty setting up Gradle multiproject build for existing repository layout à partir de quand j'ai posé une question similaire il y a quelque temps. La réponse de Peter Niederwieser a corrigé toute une série d'idées fausses que j'avais à propos de la prise en charge multiprojet de Gradle.

Vous aurez besoin d'un settings.gradle dans le répertoire racine de la structure, ce qui dans votre cas regardera plutôt comme ceci:

include 'MyProject1', 'MyProject2', 'MyLibrary' 

Gardez à l'esprit que Gradle utilise ce fichier pour configurer un objet Paramètres . Vous pouvez voir ce qui est possible en regardant le DSL pour cette ici: http://www.gradle.org/docs/current/dsl/org.gradle.api.initialization.Settings.html

Maintenant, vous pouvez déclarer une dépendance à l'égard MyLibrary dans chacun des autres projets comme celui-ci:

dependencies { 
    compile(
     ':MyLibrary' 
    ) 
} 

J'espère que cela répond à la question que vous demandaient - n'hésitez pas à poster à nouveau si j'ai mal compris.

+0

C'est presque correct, mais la dépendance devrait être: compiler ': MyLibrary: MyLibraryModule' – Krylez

Questions connexes