Présentation de la compilation

AOSP utilise le système de compilation Soong pour compiler Android. Soong utilise l'outil clone GNU Make kati et le composant du système de compilation Ninja pour accélérer les compilations d'Android.

Les fichiers de compilation Soong sont appelés fichiers Blueprint et sont nommés Android.bp. Ces fichiers sont similaires en termes de syntaxe et de sémantique aux fichiers BUILD Bazel.

Pour en savoir plus sur le format de fichier Android.bp, consultez Format de fichier Android.bp.

Pour en savoir plus sur la conversion des fichiers Make en fichiers Android.bp, consultez Comparaison entre Make et Soong.

Indicateurs de lancement de fonctionnalité et indicateurs de compilation

Les flags de lancement de fonctionnalité sont des flags binaires utilisés pour isoler le code non testé du code testé. Si vous gérez votre propre mirror de la branche de développement externe AOSP, vous pouvez utiliser ces indicateurs pour que votre code mis en miroir reste stable. Si vous contribuez du code à la branche de développement externe publique, votre examinateur peut vous demander d'implémenter un indicateur pour votre code.

Les indicateurs de compilation sont des constantes de chaîne au moment de la compilation utilisées pour modifier votre compilation, par exemple en incluant éventuellement une bibliothèque de code.

Pour en savoir plus sur les différentes branches de code, consultez Cycle de vie des versions.

Les indicateurs de lancement de fonctionnalité et de compilation nécessitent des modifications des fichiers de compilation. Pour en savoir plus sur ces options et sur leur utilisation dans une compilation, consultez Présentation des options de lancement de fonctionnalités.

Minification du code et réduction des ressources avec R8

Soong utilise le compilateur R8 pour réduire et optimiser les cibles Java et Kotlin qui compilent le bytecode DEX, telles que les modules android_app, android_test et java_library installables. Sur les bibliothèques statiques, telles que android_library et java_library statique, le bloc optimize associe et exporte les règles de conservation du consommateur.

Pour en savoir plus sur la configuration de l'optimisation R8 et des règles de conservation, consultez Optimiser le code et les ressources de la plate-forme avec R8.