Mengonversi dari Make ke Soong

Sebelum rilis Android 7.0, Android menggunakan GNU Make secara eksklusif untuk menjelaskan dan mengeksekusi aturan build-nya. Sistem build Make didukung dan digunakan secara luas, tetapi pada skala Android, sistem ini menjadi lambat, rentan terhadap error, tidak dapat diskalakan, dan sulit diuji. Sistem build Soong memberikan fleksibilitas yang diperlukan untuk build Android. Kami membuat perubahan signifikan pada sistem build Android, menghentikan penggunaan sistem build Make (Android.mk) dan menggantinya dengan Soong (Android.bp).

Oleh karena itu, developer platform diharapkan beralih dari Make dan mengadopsi Soong sesegera mungkin. Kirim pertanyaan ke Grup Google Android Building untuk mendapatkan dukungan.

Apa itu Soong?

Sistem build Soong diperkenalkan di Android 7.0 (Nougat) untuk menggantikan Make. Fitur ini memanfaatkan alat clone GNU Make Kati dan komponen sistem build Ninja untuk mempercepat build Android.

Lihat deskripsi Sistem Build Make Android di Android Open Source Project (AOSP) untuk mengetahui petunjuk umum dan Perubahan Sistem Build untuk Penulis Android.mk untuk mempelajari modifikasi yang diperlukan untuk beradaptasi dari Make ke Soong. Lihat entri terkait build dalam glosarium untuk mengetahui definisi istilah utama dan Referensi Modul Soong untuk mengetahui detail selengkapnya.

Perbandingan Make dan Soong

Berikut perbandingan konfigurasi Make dengan Soong yang melakukan hal yang sama dalam file konfigurasi Soong (Blueprint atau .bp).

Buat contoh

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)

Contoh Soong

cc_library_shared {
     name: "libxmlrpc++",

     rtti: true,
     cppflags: [
           "-Wall",
           "-Werror",
           "-fexceptions",
     ],
     export_include_dirs: ["src"],
     srcs: ["src/**/*.cpp"],

     target: {
           darwin: {
                enabled: false,
           },
     },
}

Untuk contoh konfigurasi Soong khusus pengujian, lihat Konfigurasi build sederhana.

Prosedur konversi dasar

Konversi file Android.mk ke file Android.bp biasanya mengikuti alur kerja umum ini menggunakan alat bantu androidmk. Secara umum, langkah-langkah berikut dilakukan dalam konversi.

  1. Siapkan lingkungan terminal dan buat alat androidmk.

    androidmk adalah alat command line yang mengurai file Android.mk dan mencoba menghasilkan file Android.bp yang serupa. Alat ini dapat mengonversi sebagian besar file Android.mk menjadi Android.bp dengan sedikit atau tanpa perubahan manual.

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

  3. Jalankan alat konversi androidmk: sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp

  4. Edit file Android.bp secara manual:

    • Atasi peringatan apa pun yang dikeluarkan oleh alat androidmk.
    • Mempertahankan atau menambahkan header hak cipta. Jika menambahkan yang baru, gunakan tahun saat ini.
  5. Hapus file Android.mk dan bangun dengan file Android.bp.

  6. Validasi konversi dengan membandingkan artefak yang dibuat atau menjalankan pengujian unit dan fungsional.

  7. Simpan perubahan dan upload untuk ditinjau.

Lihat format file Android.bp untuk mengetahui informasi selengkapnya.