110 votes

Structure de projet Android Studio (v.s. Structure de projet Eclipse)

J'essaie d'apprendre le développement Android et je suis d'abord dérouté par les différentes structures de projet entre Eclipse et Android Studio. Il est donc difficile de suivre les didacticiels conçus pour Eclipse. Quelqu'un pourrait-il me dire pourquoi ces différences existent ? Devraient-elles exister ?

Par exemple, si je devais localiser le fichier R.java dans les deux IDE différents, les chemins ressembleraient à ceci :

Eclipse : application \gen\com.example.app\R.java

Android Studio : application \build\source\r\debug\com.example.app\R.java

Pourquoi ces chemins sont-ils différents ? Pourquoi mon R.java se trouve-t-il dans un dossier de débogage dans Android Studio ? Cela a conduit à quelques erreurs au début, et si quelqu'un a un aperçu de ces différences, je l'apprécierais.

3 votes

J'ai essayé de poster des images dans cette question, mais j'ai besoin d'au moins 10 réputation. Je modifierai le message pour inclure les images une fois que je serai qualifié.

3 votes

Approuvé. À moins que vous n'ayez au moins un an d'expérience dans le développement d'Android, je pense que vous ne devriez pas utiliser Android Studio avant qu'il ne quitte le mode "early access preview".

2 votes

J'ajouterais que vous pouvez utiliser IntelliJ IDEA à la place, car il est très stable. De plus, une fois qu'Android Studio sera plus stable, le passage à celui-ci sera très facile, car il s'agit du même IDE (AS ne fournissant qu'une intégration Android améliorée).

204voto

Dheeraj Bhaskar Points 5244

Le mystère : La structure de projet et le système de construction d'Android Studio

Je ne sais pas si cela est dû au système de construction Gradle (je parie que oui), mais je vais vous dire ce que j'ai compris jusqu'à présent.

Mise à jour 4 : 2014/09/11 Ajouté Aide-mémoire pour BuildTypes , Flavors et Variants (Je me sens enfin en confiance pour écrire ceci :D)
Mise à jour 3 : 2014/09/11 Mise à jour des espaces de travail et des projets de comparaison pour être précis.
Mise à jour 2 : 2014/04/17 Ajout de plus de détails sur la structure du projet AS
Mise à jour 1 : 2013/07/29 Ajout de la structure du projet IntelliJ

La structure du projet d'IntelliJ (montrée à la fin) est pour IntelliJ avec le plugin Android. Le Studio Android, lui, a une structure de projet divisée comme suit :

Structure : Projets et modules

module sur Android Studio est comme un projet sur Eclipse

projet sur Android Studio est comme un espace de travail sur Eclipse (pour être précis, un espace de travail avec des projets interdépendants)

De la documentation (Android Studio est basé sur Intellij IDEA) :

Quoi que vous fassiez dans IntelliJ IDEA, vous le faites dans le contexte d'un projet. Un projet est une unité organisationnelle qui représente une solution logicielle complète.

Votre produit fini peut être décomposé en une série de modules discrets, modules isolés, mais c'est une définition de projet qui les rassemble qui les rassemble et les lie en un tout plus grand.

Pour Android, cela signifie un projet par application, et un module par bibliothèque et par application de test.

Il y a plusieurs problèmes si vous essayez de construire plusieurs applications dans le même projet. C'est possible, mais si vous essayez (comme je l'ai fait), vous verrez que presque tout est conçu pour fonctionner avec une seule application par projet.

Par exemple, il existe une option pour "reconstruire le projet", ce qui n'a aucun sens avec plusieurs applications, de nombreux autres paramètres de projet seraient inutiles, et le système VCS intégré n'est pas génial lorsque vous avez plusieurs dépôts.

Structure : Structure des dossiers

Android Studio Project Structure

Dossiers de niveau supérieur

1. Projet principal

Ce serait l'intégralité contexte du projet ( Eclipse Land : Comme votre espace de travail mais limité à ce qui est pertinent pour votre projet). Ex : HelloWorldProject si le nom de l'application que vous avez donné était HelloWorld

2. .idée

C'est là que les métadonnées spécifiques au projet sont stockées par Android Studio (AS). ( Eclipse Land : project.properties fichier)

3. Module de projet

Voici le projet actuel. ex : HelloWorld si le nom de votre application que vous avez donné était HelloWorld

4. gradle

C'est ici que se trouve le wrapper jar du système de construction gradle, c'est-à-dire que ce jar est la façon dont AS communique avec gradle installé sous Windows (le système d'exploitation dans mon cas).

5. Bibliothèques externes

Il ne s'agit pas réellement d'un dossier mais d'un endroit où les bibliothèques référencées ( Eclipse Land : Bibliothèques référencées) sont indiquées. C'est ici que la plateforme ciblée est indiquée, etc.

[ Note complémentaire : C'est là que beaucoup d'entre nous, au pays d'Eclipse, avaient l'habitude de supprimer les bibliothèques référencées et de fixer les propriétés du projet pour corriger les erreurs de référence, vous vous en souvenez].

Dossier de projet en détail

C'est le numéro 3 de la liste ci-dessus. Il contient les sous-répertoires suivants

1. construire

Il s'agit de toute la production complète de la make c'est-à-dire classes.dex, classes et ressources compilées, etc.

Dans l'interface graphique d'Android Studio, seuls quelques dossiers sont affichés. Ce qui est important, c'est que votre R.java se trouve ici sous build/source/<flavor>/r/<build type(optional)>/<package>/R.java

2. libs

Il s'agit du dossier standard des librairies que vous voyez dans la section terre d'éclipse trop

3. src

Ici, vous ne voyez que le java et res qui correspondent au dossier src et res dans le dossier Terre d'éclipse . Il s'agit d'une simplification bienvenue, à mon avis.

Note sur les modules :

Les modules sont comme Terre d'éclipse projets. Ici, l'idée est que vous avez un projet d'application (Module #3 dans la liste ci-dessus) et plusieurs projets de bibliothèque (en tant que modules séparés sous le dossier de projet global (#1 dans la liste ci-dessus)) dont le projet d'application dépend. Comment ces projets de bibliothèque peuvent être réutilisés dans d'autres applications, je n'ai toujours pas trouvé.

[ Note complémentaire : Toute cette réorganisation présente certains avantages, comme la simplification du dossier src, mais aussi de nombreuses complications. Les complications sont principalement dues TRES TRES documentation fine sur cette nouvelle mise en page du projet].

Le nouveau système de construction

Guide d'utilisation du nouveau système de construction

Explication des saveurs et des buildTypes, etc. - Pourquoi ce brouhaha ?

Aide-mémoire pour les saveurs et les buildTypes

BuildType : debug et release sont buildTypes disponibles par défaut sur tous les projets. Ils servent à construire/compiler le MÊME CODE pour générer différents APKs. Par exemple sur release APK, vous voudrez exécuter proguard (pour l'obscurcissement), le signer avec votre clé (par rapport à la clé de débogage), exécuter des optimisations (peut-être via proguard ou d'autres outils), utiliser des versions légèrement différentes de l packageNames (nous utilisons com.company.product pour release et com.company.product.debug pour debug ), etc. Nous utilisons également un drapeau de débogage ( BuildConfig.DEBUG ) pour désactiver la journalisation vers logcat (car cela ralentit l'application) sur release construit. Cela permet d'accélérer debug pendant le développement, mais aussi une release construire pour mettre sur play store.

Saveur du produit : Il n'y a pas de saveurs par défaut disponibles (ou pour être précis, la saveur par défaut est vide/non nommée). Flavors pourrait être version gratuite ou version payante où ils ont CODE DIFFERENT . Ils partagent le même Main Code mais versions différentes (ou pas de versions) de quelques fichiers ou ressources de code source.

BuildVariant : A buildVariant est ce à quoi correspond réellement un APK généré. Ils sont nommés comme suit (dans l'ordre) Product Flavor + Build Type = Build Variant .
Exemple 1 : si vous avez free et paid en deux variantes. Les variantes de construction que vous obtiendrez sont :
Gratuit - débogage
Gratuit - sortie
Paid - débogage
Paid - release
Cela fait donc 4 configurations APK possibles. Quelques configurations peuvent ne pas avoir de sens dans un projet particulier, mais elles sont disponible.

Exemple 2 : (pour les nouveaux projets/ sans saveurs) Vous avez 2 buildVariants ou APKs disponibles, puisque la saveur par défaut est sans nom/blank :
déboguer
libérer

Comparez cela avec La structure de projet d'Intellij si cela peut aider :

Intellij Project Structure Snapshot

L'idée (1) contient un certain nombre de sous-dossiers, principalement des informations internes à IntelliJ IDEA.

Le src (2) contient le fichier MyActivity.java. (3) code source du fichier qui implémente la fonctionnalité de votre application. Le fichier appartient au paquet com.example.

Les rés (4) Le dossier contient diverses ressources visuelles.

Le fichier layout/main.xml (5) définit l'apparence de l'application constituée de ressources de différents types.

Le dossier des valeurs (6) est destiné à stocker des fichiers .xml qui décrivent des ressources de différents types. Actuellement, le dossier contient un fichier strings.xml avec des définitions de ressources String. Comme vous le verrez dans la section Ajout d'une couleur, le dossier layout peut également contenir, par exemple, un descripteur de couleurs.

Le dossier à dessiner (7) contient des images.

Le dossier gen (8) contient le R.java (9) qui relie les ressources visuelles et le code source Java. Comme vous le verrez dans les sections ci-dessous, IntelliJ IDEA prend en charge une intégration étroite entre les ressources statiques et R.java. Dès qu'une ressource est ajoutée ou supprimée, les classes et les champs de classe correspondants dans R.java sont automatiquement générés ou supprimés en conséquence. Le fichier R.java appartient également au paquet com.example.

3 votes

Merci beaucoup d'avoir comparé les structures de projet d'Eclipse et d'Android Studio ! Et oui la documentation sur cette structure de projet et comment elle peut être utilisée dans le développement quotidien est inexistante.

1 votes

"3. src Ici, on ne voit que le dossier java et res..." Pour être plus précis, java y res sont sous src/main .

0 votes

Voici de la documentation sur la structure des dossiers d'Android Studio : developer.Android.com/sdk/installation/studio-build.html

32voto

Joe Points 1372

Android Studio : app \build\source\r\debug\com.example.app\R.java

Pourquoi ces chemins sont-ils différents ? Pourquoi mon R.java se trouve-t-il dans un dossier de débogage dans Android Studio ? Cela a conduit à quelques erreurs au début, et si quelqu'un a un aperçu de ces différences, je l'apprécierais.

En termes simples, Android Studio est configuré pour construire un débogage Type de construction sur votre système.

Eclipse/ADT est conçu pour supporter un seul build à la fois (d'après ce que je peux dire). L'un des principaux objectifs du nouveau système de construction ( du guide de l'utilisateur ) :

Make it easy to create several variants of an application, 
either for multi-apk distribution or for different flavors of an application

Alors qu'Eclipse/ADT pourrait en générer un. R.java Android Studio prend en charge plusieurs fichiers. Le fichier généré R.java est situé dans le debug car par défaut le nouveau système de construction supporte debug et release types de construction dès le départ. Si vous avez changé votre variante de construction (bouton, coin inférieur gauche de l'AS) pour release, l'AS va générer R.java dans le release répertoire.

Cela ne signifie peut-être rien pour les projets simples, mais le soutien de l Variantes de construction signifie une simplification drastique du processus de construction pour de nombreux développeurs, y compris pour le projet sur lequel je travaille.

Notre projet supporte 4 saveurs avec 2 types de construction (debug et release), pour supporter un total de 8 combinaisons APK différentes. Et chacune de ces combinaisons a des configurations légèrement différentes, donc ce système de construction a vraiment bien fonctionné pour nous. Mon studio Android est installé sur une autre machine, mais si ma mémoire est bonne, le système de construction d'Android est le même. R.java existe dans build/source/<flavor>/r/<build type>/package/R.java . Lorsque notre serveur CI construit les fichiers APK, il utilise chacun de ces fichiers. R.java pour générer des paquets séparés.

0voto

OpenWebWar Points 466

Google Interrompre le soutien pour les outils du développeur Android (ADT) dans Eclipse se termine, comme nous l'avons annoncé. Vous devez migrer vos projets de développement d'applications vers Android Studio dès que possible. Pour plus d'informations sur la transition vers Android Studio, voir Migrations vers Android Studio. vers Android Studio.

Donc le meilleur outil de développement Android pour Android Studio uniquement pour tout soutien futur de Android M ---

0 votes

Eclipse pour les développeurs Android - eclipse.org/downloads/packages/

-2voto

Gear Points 1

Pour Android Studio 3.0.1 et a sélectionné toutes les fonctionnalités :

  • Dernière version d'Android O
  • Android Auto
  • Les choses Android
  • Android wear
  • Android TV
  • Support du C++
  • Support de Kotlin

La structure de la version 3.0.1 ne ressemble pas du tout à toutes les autres réponses.

La structure récente est celle affichée en 2018, Android Studio 3.0.1 01/2018.

Le nouveau venu a trouvé quelque chose qui ressemble à quelque chose d'utilisable dans le sous-dossier des fonctionnalités :

Mettez à jour votre Android Studio 3.0.1 01_2018 :

ToolTip :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X