Android 7.0 sürümünden önce Android, derleme kurallarını açıklamak ve yürütmek için yalnızca GNU Make'i kullanıyordu. Make derleme sistemi yaygın olarak desteklenir ve kullanılır ancak Android'in ölçeğinde yavaş, hataya açık, ölçeklendirilemez ve test edilmesi zor hale geldi. Soong derleme sistemi, Android derlemeleri için gereken esnekliği sağlar. Android derleme sisteminde önemli değişiklikler yapıyoruz. Make (Android.mk
) derleme sisteminin desteğini sonlandırıp yerine Soong'u (Android.bp
) kullanıma sunuyoruz.
Bu nedenle, platform geliştiricilerin en kısa sürede Make'ten Soong'a geçmesi beklenmektedir. Destek almak için sorularınızı Android Building Google Grubu'na gönderin.
Soong nedir?
Soong derleme sistemi, Android 7.0 (Nougat) sürümünde Make'in yerini almak üzere kullanıma sunuldu. Android'in derlemelerini hızlandırmak için Kati GNU Make klonlama aracından ve Ninja derleme sistemi bileşeninden yararlanır.
Genel talimatlar için Android Açık Kaynak Projesi'ndeki (AOSP) Android Make Build System (Android Make Derleme Sistemi) açıklamasına, Make'ten Soong'a uyum sağlamak için gereken değişiklikler hakkında bilgi edinmek için ise Build System Changes for Android.mk Writers (Android.mk Yazarları İçin Derleme Sistemi Değişiklikleri) bölümüne bakın. Temel terimlerin tanımları için sözlükteki derlemeyle ilgili girişlere, eksiksiz ayrıntılar için ise Soong Modülleri Referansı'na bakın.
Make ve Soong karşılaştırması
Aşağıda, Make yapılandırması ile Soong'un Soong yapılandırmasında (Blueprint veya .bp
) aynı işi yapmasının karşılaştırması verilmiştir.
Örnek oluşturma
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)
Soong örneği
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
Teste özel Soong yapılandırma örnekleri için Basit derleme yapılandırması başlıklı makaleyi inceleyin.
Temel dönüşüm prosedürü
Android.mk
dosyasının Android.bp
dosyasına dönüştürülmesi genellikle androidmk
yardımcı aracı kullanılarak aşağıdaki genel iş akışına göre yapılır. Dönüşümde genellikle aşağıdaki adımlar uygulanır.
Terminal ortamını ayarlayın ve
androidmk
aracını oluşturun.androidmk
,Android.mk
dosyasını ayrıştıran ve benzer birAndroid.bp
dosyası oluşturmaya çalışan bir komut satırı aracıdır. Bu araç,Android.mk
dosyalarının çoğunu az sayıda veya hiç manuel değişiklik yapmadanAndroid
.bp dosyasına dönüştürebilir.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmk
Android.mk
ile geliştirin:sh m <module-name>
androidmk
dönüşüm aracını çalıştırın:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp
Android.bp
dosyasını manuel olarak düzenleyin:androidmk
aracının verdiği uyarıları dikkate alın.- Telif hakkı üstbilgisini koruyun veya ekleyin. Yeni bir sertifika ekliyorsanız geçerli yılı kullanın.
Android.mk
dosyasını kaldırın veAndroid.bp
dosyasıyla derleyin.Oluşturulan yapıları karşılaştırarak veya birim ve işlevsel testler çalıştırarak dönüşümü doğrulayın.
Değişiklikleri kaydedin ve incelemeye yükleyin.
Daha fazla bilgi için Android.bp dosya biçimi başlıklı makaleyi inceleyin.