Structure de compilation Android

Les projets Android contiennent de nombreux fichiers et structures de répertoires liés à la compilation pour organiser la source et les ressources de votre application. Avant de plonger au cœur les détails de la configuration, nous examinerons la structure globale et les bases de ce qui appartient à chaque partie.

Ce tableau liste les fichiers typiques d'un projet Android. La description de chaque fichier ou le répertoire incluent des notes sur le type de contenu qui s’y trouve. Excellent les pratiques évoluent au fil du temps, et ces descriptions peuvent ne pas correspondre à un projet dont vous avez hérité ou téléchargé depuis Internet.

Lorsque vous écrivez vos fichiers de compilation, utilisez une approche déclarative : la logique et la tâche de compilation les définitions ne doivent apparaître que dans les plug-ins. En limitant la logique de compilation aux plug-ins, les fichiers de compilation deviennent des déclarations de données, qui sont plus faciles à comprendre et l'édition. Les futures versions peuvent inclure une autre spécification telle que Gradle déclarative, qui empêche la logique de compilation dans .

Dossier/Fichier

Utiliser

Fichiers .gradle/

Répertoire de cache du projet Gradle

Géré par Gradle. Il contient la distribution Gradle téléchargée, le cache du projet et les fichiers de configuration.

Ne modifiez pas les fichiers de ce répertoire.

.idea/

Métadonnées de projet Android Studio

Ne modifiez pas les fichiers de ce répertoire.

build.gradle(.kts)

Fichier de compilation racine

Ne doit contenir que des déclarations de plug-in pour configurer un chemin de classe de plug-in commun pour tous les sous-projets.

L'autre code doit résider dans les paramètres ou dans les fichiers de compilation imbriqués au niveau du projet.

gradle.properties

Configuration d'exécution Gradle

contient les propriétés Gradle, ce qui permet de contrôler les aspects de l'environnement de compilation Gradle tels que la taille des tas de mémoire, la mise en cache et l'exécution parallèle.

Certaines propriétés Android temporaires sont définies ici afin de limiter les modifications apportées au DSL AGP lors de leur ajout, puis de leur suppression.

gradlew (linux, Mac)

gradlew.bat (Windows)

Fichier du wrapper Gradle

Amorcez votre build en téléchargeant une distribution Gradle, puis en lui transférant des commandes. Cela vous permet d'exécuter des compilations sans avoir à préinstaller Gradle.

local.properties

Configuration de la machine locale

Contient des propriétés liées à la machine locale, telles que l'emplacement du SDK Android.

Excluez ce fichier du contrôle du code source.

settings.gradle(.kts)

Initialisation de la compilation Gradle

Contient des informations de compilation globales pour l'initialisation de Gradle et la configuration du projet, telles que

  • nom du projet
  • Liste des sous-projets à inclure dans cette compilation
  • les spécifications du dépôt pour localiser les plug-ins et les dépendances
  • les importations externes du catalogue de versions.

Gradle/

🏠 libs.versions.toml

Catalogue de versions

Définit les variables des dépendances et des plug-ins utilisés dans votre compilation. Vous spécifiez les versions que vous souhaitez utiliser ici, ce qui assure la cohérence entre tous les sous-projets de votre projet.

🏠 Enveloppe/

🏠 gradle‐wrapper.jar

Exécutable d'amorçage Gradle

Il télécharge la distribution Gradle spécifiée (si elle n'existe pas) et l'exécute, en transmettant tous les arguments.

🏠 gradle‐wrapper.properties

Configuration pour le wrapper Gradle

Spécifie l'emplacement de téléchargement de la distribution Gradle (y compris la version à utiliser).

application/

Répertoire du sous-projet

Les sous-projets (appelés "modules" dans Android Studio) peuvent créer des applications ou des bibliothèques, et peuvent dépendre d'autres sous-projets ou de dépendances externes.

app est le nom conventionnel d'un sous-projet d'application de premier niveau (mais ce n'est pas le nom obligatoire). Les autres sous-projets ont une structure similaire avec des noms différents.

Tous les répertoires peuvent être des sous-projets. Ils doivent contenir au moins un fichier build.gradle(.kts) et être inclus dans le build à l'aide de settings.gradle(.kts).

🏠 build.gradle(.kts)

Fichier de compilation au niveau du sous-projet

Indique comment créer ce sous-projet. Chaque sous-projet nécessite un fichier de compilation distinct et doit contenir

  • plug-ins utilisés pour créer ce sous-projet
  • blocs de configuration requis par les plug-ins
  • dépendances (bibliothèques et plates-formes) incluses lors de la création de ce sous-projet

Vous ne devez pas inclure de logique de compilation (telle que les définitions ou conditions de fonction Kotlin) ni les déclarations de tâches dans vos fichiers de compilation. La logique et les tâches de compilation ne doivent être contenues que dans des plug-ins.

🏠 src/

Fichiers sources du sous-projet

Regroupe les fichiers sources (code et ressources de l'application) dans des ensembles de sources. L'ensemble de sources main contient des fichiers sources communs à toutes les variantes, tandis que les autres ensembles contiennent des fichiers sources propres à une variante.

🏠 principale/

Ensemble de sources principal

Code source et ressources communs à toutes les variantes de compilation. Cette source sert de base à toutes les compilations, et d'autres ensembles de sources plus spécifiques s'ajoutent à cette source ou la remplacent.

🏠 java/

🏠 kotlin/

Code source Kotlin et Java

Le répertoire java peut contenir du code source à la fois Java et Kotlin. Si ce sous-projet ne contient que du code Kotlin, vous pouvez renommer ce répertoire kotlin.

Android
qui est une plate-forme Kotlin-first. La source Java est compatible, mais les nouvelles API ciblent le langage Kotlin. Nous vous recommandons d'utiliser Kotlin pour tout nouveau code et les mises à jour importantes du code existant.

🏠 res/

Fichiers de ressources Android

Contient les ressources de l'application, telles que les fichiers XML et les images. Toutes les applications utilisent des ressources de base, telles que les icônes de lanceur, mais la plupart de ces ressources, telles que les mises en page et les menus, ne sont utilisées que dans les applications basées sur les vues. Les applications Compose utilisent les ressources String définies dans ce répertoire.

🏠 AndroidManifest.xml

Métadonnées des applications Android

Lu par le gestionnaire de packages Android pour indiquer au système

  • les composants définis par votre application
  • autorisations nécessaires
  • compatibilité des appareils
  • Restrictions liées à la plate-forme Android

🏠 androidTest/

Ensemble de sources de test de l'appareil

Contient la source des tests qui seront exécutés sur un appareil ou un émulateur Android. Ces tests ont accès à un véritable environnement Android, mais ils s'exécutent plus lentement que les tests hôtes.

Tous les fichiers sources de l'ensemble de sources main peuvent être utilisés par source sous androidTest.

🏠 Test/

Ensemble de sources de test sur l'hôte

Contient la source des tests qui s'exécutent localement dans une JVM, par opposition aux tests qui s'exécutent sur un appareil. Ces tests sont beaucoup plus rapides à exécuter que les tests sur les appareils. Toutefois, tous les appels système (y compris les cycles de vie qui exécutent votre application) doivent être simulés, faux, bouchons ou autrement simulés.

Tous les fichiers sources de l'ensemble de sources main peuvent être utilisés par la source testée.

🏠 proguard-rules.pro

Règles de configuration R8

Définit les règles permettant de contrôler la minification, l'optimisation et l'obscurcissement des applications. R8 supprime le code et les ressources inutiles, optimise les performances d'exécution et réduit davantage votre code en renommant les identifiants.