Convertire da Make a Soong

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.

  1. Configura l'ambiente del terminale e crea lo strumento androidmk.

    androidmk è uno strumento a riga di comando che analizza un file Android.mk e tenta di generare un file Android.bp analogo. Può convertire la maggior parte dei file Android.mk in Android.bp con poche o nessuna modifica manuale.

    cd <root-of-the-tree>
    source build/envsetup.sh
    lunch <lunch-target>
    m androidmk
    
  2. Crea con Android.mk: sh m <module-name>

  3. Esegui lo strumento di conversione androidmk: sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp

  4. 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.
  5. Rimuovi il file Android.mk e crea la build con il file Android.bp.

  6. Convalida la conversione confrontando gli artefatti creati o eseguendo test funzionali e delle unità.

  7. Salva le modifiche e caricale per la revisione.

Per ulteriori informazioni, consulta la sezione Formato del file Android.bp.