Prima del rilascio di Android 7.0, Android utilizzava
GNU Make
esclusivamente per descrivere ed eseguire le sue regole di build. Il sistema di compilazione Make è
ampiamente supportato e utilizzato, ma su larga scala come Android è diventato lento, soggetto a errori,
non scalabile e difficile da testare. Il sistema di compilazione Soong
offre la flessibilità necessaria per le build Android. Stiamo apportando modifiche
significative al sistema di build di Android, ritirando il sistema di build Make (Android.mk
)
e sostituendolo con Soong (Android.bp
).
Per questo motivo, gli sviluppatori di piattaforme devono passare da Make e adottare Soong il prima possibile. Invia domande al gruppo Google Android Building per ricevere assistenza.
Che cos'è Soong?
Il sistema di compilazione Soong è stato introdotto in Android 7.0 (Nougat) per sostituire Make. Sfrutta il componente Kati GNU Make clone tool e il sistema di compilazione Ninja per velocizzare le build di Android.
Consulta la descrizione del sistema di compilazione Android Make nel progetto Android Open Source Project (AOSP) per istruzioni generali e Modifiche al sistema di compilazione per gli autori di Android.mk per scoprire le modifiche necessarie per passare da Make a Soong. Per le definizioni dei termini chiave, consulta le voci relative alla build nel glossario e la Guida di riferimento dei moduli Soong per i dettagli completi.
Confronto tra Make e Soong
Ecco un confronto tra la configurazione di Make e Soong che ottengono lo stesso risultato in un file di configurazione Soong (Blueprint o .bp
).
Crea esempio
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)
Esempio di Soong
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
Per esempi di configurazione di Soong specifici per i test, vedi Configurazione di build semplice.
Procedura di conversione di base
La conversione di un file Android.mk
in un file Android.bp
in genere segue questo flusso di lavoro generale utilizzando lo strumento helper androidmk
. In generale, nella conversione vengono seguiti i seguenti passaggi.
Configura l'ambiente del terminale e crea lo strumento
androidmk
.androidmk
è uno strumento a riga di comando che analizza un fileAndroid.mk
e tenta di generare un fileAndroid.bp
analogo. Può convertire la maggior parte dei fileAndroid.mk
inAndroid
.bp con poche o nessuna modifica manuale.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmk
Crea con
Android.mk
:sh m <module-name>
Esegui lo strumento di conversione
androidmk
:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp
Modifica manualmente il file
Android.bp
:- Risolvi gli eventuali avvisi emessi dallo strumento
androidmk
. - Mantieni o aggiungi un'intestazione di copyright. Se ne aggiungi uno nuovo, utilizza l'anno corrente.
- Risolvi gli eventuali avvisi emessi dallo strumento
Rimuovi il file
Android.mk
e crea la build con il fileAndroid.bp
.Convalida la conversione confrontando gli artefatti creati o eseguendo test funzionali e delle unità.
Salva le modifiche e caricale per la revisione.
Per ulteriori informazioni, consulta la sezione Formato del file Android.bp.