Mostg derleme sistemi

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

  1. Bu durumda D, //namespace:module biçiminde tam bir adsa yalnızca belirtilen ad alanında, belirtilen modül adı aranır.
  2. Aksi takdirde, Shortg önce ad alanında tanımlanmış D adlı bir modülü arar. K.
  3. O modül yoksa Shorts videosunda D adlı bir modül I1, I2, I3 ad alanları
  4. Son olarak Shortg kök ad alanına bakar.