Android 7.0 sürümünden önce Android tarafından kullanılıyordu. GNU Markası sadece derleme kurallarını açıklamak ve uygulamak için kullanır. Make derleme sistemi yaygın bir şekilde desteklenmeye ve kullanılmaya başlandı ancak Android ölçeğinde yavaşlaştı, hataya açık hale geldi. ve test edilmesi zordur. İlgili içeriği oluşturmak için kullanılan Mostg derleme sistemi Android derlemeleri için gereken esnekliği sağlar.
Bu nedenle, platform geliştiricilerinin "Marka ve uygulama"dan En kısa zamanda. Soruları şuraya gönderin: android-bina Google Gruplar'a ekleyin.
Shortg nedir?
Maket'in yerini almak üzere Android 7.0'da (Nougat) yakındag derleme sistemi kullanıma sunuldu. Google'ın Kati GNU'su Klon aracı ve Ninja derleme sistemi yapın bileşen olarak sunar.
Bkz. Android Marka Derleme Sistemi Android Açık Kaynak Projesi'nde (AOSP) genel açıklama talimatları ve Android.mk Yazıcıları İçin Sistem Değişiklikleri Derleme başlıklı makalemize göz atın.
Derlemeyle ilgili girişleri terimlerin tanımlarını ve Tüm ayrıntılar için Soong referans dosyaları.
Make ve Mostg karşılaştırması
Yapma yapılandırmasının, kısa bir süre sonra aynı isabete sahip olması için
Shortg yapılandırma (Blueprint veya .bp
) dosyası.
Örnek oluştur
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)
Shorts ö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 Shortg yapılandırma örnekleri için bkz. Basit Derleme Yapılandırması.
Android.bp dosyasındaki alanların açıklaması için Android.bp dosya biçimindedir.
Özel modüller
Bazı özel modül grupları benzersiz özelliklere sahiptir.
Varsayılan modüller
Aynı özellikleri birden çok modülde tekrarlamak için bir varsayılan modül kullanılabilir. Örnek:
cc_defaults {
name: "gzip_defaults",
shared_libs: ["libz"],
stl: "none",
}
cc_binary {
name: "gzip",
defaults: ["gzip_defaults"],
srcs: ["src/test/minigzip.c"],
}
Önceden oluşturulmuş modüller
Bazı önceden oluşturulmuş modül türleri, modülün
ve kaynak temelli eşdeğerleridir. Örneğin, bir cc_prebuilt_binary
aynı ada sahip bir cc_binary
olduğunda foo
olarak adlandırılır. Bu da
ekleyecekleri sürümü seçme esnekliğine sahip olacaktır.
belirler. Bir derleme yapılandırması her iki sürümü de içeriyorsa prefer
işareti
değeri, hangi sürümün öncelikli olduğunu belirtir.
Önceden oluşturulmuş bazı modüllerin prebuilt
ile başlamayan adlara sahip olduğunu,
(ör. android_app_import
).
Ad alanı modülleri
Android, Make ürün yapılandırmasından Make Shorts'a tam olarak dönüşene kadar
bir PRODUCT_SOONG_NAMESPACES
değeri belirtmelidir. Bu
değeri, Shortg'un Make aracına aktardığı ad alanlarının boşlukla ayrılmış listesi olmalıdır
komutu m
komutuyla derlenir. Android'in Shortg'a dönüştürülmesi tamamlandıktan sonra
ad alanlarını etkinleştirmeyle ilgili ayrıntılar değişebilir.
Shortg, farklı dizinlerdeki modüllerin adını belirtme imkanı sunar. her modül ayrı bir ad alanında tanımlandığı sürece aynı ada sahip olmalıdır. CEVAP ad alanı şu şekilde tanımlanabilir:
soong_namespace {
imports: ["path/to/otherNamespace1", "path/to/otherNamespace2"],
}
Ad alanının bir ad özelliğinin olmadığını unutmayın. yolu otomatik olarak olarak atanmıştır.
Her bir Shortg modülüne, ağaçtaki konumuna göre bir ad alanı atanır.
Her bir Sog modülünün,
soong_namespace
, geçerli dizindeki bir Android.bp
dosyasında bulundu veya
En yakın üst öğe dizini. Böyle bir soong_namespace
modülü bulunamazsa
modülünün örtülü kök ad alanında olduğu kabul edilir.
Örnek: Shortg, M modülü tarafından açıklanan bağımlılık D'yi çözümlemeye çalışıyor I1, I2, I3 ad alanlarını içe aktaran N ad alanında
- Bu durumda D,
//namespace:module
biçiminde tam bir adsa yalnızca belirtilen ad alanında, belirtilen modül adı aranır. - Aksi takdirde, Shortg önce ad alanında tanımlanmış D adlı bir modülü arar. K.
- O modül yoksa Shorts videosunda D adlı bir modül I1, I2, I3 ad alanları
- Son olarak Shortg kök ad alanına bakar.