Avant la sortie d'Android 7.0, Android utilisait
GNU Make
exclusivement pour décrire et exécuter ses règles de compilation. Le système de compilation Make est largement compatible et utilisé, mais à l'échelle d'Android, il est devenu lent, sujet aux erreurs, non évolutif et difficile à tester. Le système de compilation Soong offre la flexibilité requise pour les compilations Android. Nous apportons des modifications importantes au système de compilation Android, en abandonnant le système de compilation Make (Android.mk) et en le remplaçant par Soong (Android.bp).
Pour cette raison, les développeurs de plates-formes doivent passer de Make à Soong dès que possible. Envoyez vos questions au groupe Google Android Building pour obtenir de l'aide.
Qu'est-ce que Soong ?
Le système de compilation Soong a été introduit dans Android 7.0 (Nougat) pour remplacer Make. Il exploite l'outil clone Kati GNU Make et le composant du système de compilation Ninja pour accélérer les compilations d'Android.
Consultez la description du système de compilation Android Make dans le projet Android Open Source (AOSP) pour obtenir des instructions générales et les modifications du système de compilation pour les rédacteurs Android.mk afin de découvrir les modifications nécessaires pour passer de Make à Soong. Consultez les entrées liées à la compilation dans le glossaire pour obtenir les définitions des termes clés et la référence des modules Soong pour obtenir des informations complètes.
Comparaison entre Make et Soong
Voici une comparaison de la configuration Make avec Soong qui effectue la même chose dans un fichier de configuration Soong (Blueprint ou .bp).
Exemple Make
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libxmlrpc++
LOCAL_MODULE_HOST_OS := linux
LOCAL_RTTI_FLAG := -frtti
LOCAL_CPPFLAGS := -Wall -Werror -fexceptions
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src
LOCAL_SRC_FILES := $(call \
all-cpp-files-under,src)
include $(BUILD_SHARED_LIBRARY)
Exemple Soong
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
Pour obtenir des exemples de configuration Soong spécifiques aux tests, consultez la section Configuration de compilation simple.
Procédure de conversion de base
La conversion d'un fichier Android.mk en fichier Android.bp suit généralement ce workflow général à l'aide de l'outil d'assistance androidmk. En général, les étapes suivantes sont suivies lors de la conversion.
Configurez l'environnement de terminal et créez l'outil
androidmk.androidmkest un outil de ligne de commande qui analyse un fichierAndroid.mket tente de générer un fichierAndroid.bpanalogue. Il peut convertir la plupart desAndroid.mkfichiers enAndroid.bp avec peu ou pas de modifications manuelles.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmkCompilez avec
Android.mk:sh m <module-name>Exécutez l'outil de conversion
androidmk:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bpModifiez manuellement le fichier
Android.bp:- Tenez compte des avertissements émis par l'outil
androidmk. - Conservez ou ajoutez un en-tête de copyright. Si vous en ajoutez un, utilisez l'année en cours.
- Tenez compte des avertissements émis par l'outil
Supprimez le fichier
Android.mket compilez avec le fichierAndroid.bp.Validez la conversion en comparant les artefacts compilés ou en exécutant des tests unitaires et fonctionnels.
Enregistrez les modifications et importez-les pour examen.
Pour en savoir plus, consultez la section Format de fichier Android.bp.