Uygulama.mk

Bu dokümanda, ndk-build tarafından kullanılan Application.mk derleme dosyası açıklanmaktadır.

Bu tarihten önce Kavramlar sayfasını okumanızı öneririz. bir.

Genel Bakış

Application.mk, ndk-build için proje genelindeki ayarları belirtir. Varsayılan olarak uygulamanızın proje dizininde, jni/Application.mk konumunda bulunur.

Değişkenler

UYGULAMA_ABI

NDK derleme sistemi, desteği sonlandırılmayan tüm ABI'ler için varsayılan olarak kod oluşturur. Siz belirli ABI'ler için kod oluşturmak üzere APP_ABI ayarını kullanabilir. Tablo 1 programları Farklı talimat kümeleri için APP_ABI ayarları.

Tablo 1. Farklı talimat grupları için APP_ABI ayarları.

Talimat grubu Değer
32 bit ARMv7 APP_ABI := armeabi-v7a
64 bit ARMv8 (AArch64) APP_ABI := arm64-v8a
x86 APP_ABI := x86
x86-64 APP_ABI := x86_64
Desteklenen tüm ABI'ler (varsayılan) APP_ABI := all

Ayrıca, birden çok değeri aynı satıra, birbirinden ayrılmış şekilde yerleştirerek de seçebilirsiniz. Örnek:

APP_ABI := armeabi-v7a arm64-v8a x86

Desteklenen tüm ABI'lerin listesi, bunların kullanımları ve sınırlamaları için Android ABI'leri bölümüne bakın.

UYGULAMA_AASLARI

Her derleme kaynak dosyası (.s ve .S dosya) ekleyebilirsiniz.

UYGULAMA_ASMFLAGS

Tüm YASM kaynak dosyaları (.asm, x86/x86_64) için YASM'ye iletilecek işaretler .

UYGULAMA_OLUŞTURMA_KOMUTU

Varsayılan olarak, ndk-build, Android.mk dosyasının jni/Android.mk.

Android.mk dosyasını farklı bir konumdan yüklemek için APP_BUILD_SCRIPT öğesini ayarlayın Android.mk dosyasının mutlak yoluna gidin.

UYGULAMA_CFLAKS'LARI

Projedeki tüm C/C++ derlemeleri için iletilecek işaretler.

Ayrıca bkz. APP_CONLYFLAGS, APP_CPPFLAGS.

UYGULAMA_C dilsi_TIDY

Projedeki tüm modüllerde tutarlılığı sağlamak için True (doğru) değerine ayarlayın. Devre dışı bırakan: varsayılandır.

UYGULAMA_CLANGUAGE_TIDY_BAYRAKLARI

Projedeki tüm toplu işlemlerde başarılı olunacak işaretler.

UYGULAMA_KAPSAYICILARI

Projedeki tüm C derlemeleri için aktarılacak işaretler. Bu flag'ler C++ kodu için kullanılır.

Ayrıca bkz. APP_CFLAGS, APP_CPPFLAGS.

UYGULAMA_BPPFLAGS

Projedeki tüm C++ derlemeleri için aktarılacak işaretler. Bu flag'ler C kodu için kullanılır.

Ayrıca bkz. APP_CFLAGS, APP_CONLYFLAGS.

UYGULAMA_CXXFLAGS

APP_CPPFLAGS ile aynı olsa da derlemede APP_CPPFLAGS sonrasında görünür komutuna ekleyin. Örnek:

APP_CPPFLAGS := -DFOO
APP_CXXFLAGS := -DBAR

Yukarıdaki yapılandırma, clang++ -DBAR -DFOO yerine clang++ -DFOO -DBAR benzeri bir derleme komutu oluşturur.

UYGULAMA_HATA AYIKLAMA

Hata ayıklaması yapılabilir bir uygulama derlemek için değeri true olarak ayarlayın.

UYGULAMA_LDFLAGS

Yürütülebilir dosyalar ve paylaşılan kitaplıklar arasında bağlantı kurarken iletilecek işaretler.

UYGULAMA_MANIFEST

AndroidManifest.xml dosyasının mutlak yolu.

Varsayılan olarak, $(APP_PROJECT_PATH)/AndroidManifest.xml) kullanılacaksa gerekir.

UYGULAMA MODÜLLERİ

Oluşturulacak modüllerin açık listesi. Bu listede yer alan öğeler, Modüller, Android.mk dosyasında LOCAL_MODULE içinde göründükleri şekilde gösterilir.

Varsayılan olarak ndk-build, tüm paylaşılan kitaplıkları, yürütülebilir dosyaları ve ve bildirmeyi konuştuk. Statik kitaplıklar, yalnızca proje yalnızca statik kitaplıklar içerir veya APP_MODULES.

UYGULAMA OPTİMİZASYONU

Bu isteğe bağlı değişkeni release veya debug olarak tanımlayın. Sürüm ikili programları geliştirilecektir.

Sürüm modu, optimizasyonları etkinleştirir ve kullanılamayan ikili programlar oluşturabilir hata ayıklayıcıyla çalıştırmayı deneyin. Hata ayıklama modu, optimizasyonları devre dışı bırakır. Böylece, hata ayıklayıcılar kullanılır.

İkili programlarda hata ayıklama yapabileceğinizi veya hata ayıklayabileceğinizi unutmayın. Yayın ikili programları hata ayıklama sırasında daha az bilgi sağlar. Örneğin, değişkenler denetimi önleyerek daha iyi olmasını sağlar. Ayrıca, kod yeniden sıralama işlevi, kodu adım adım uygulamanız zor, yığın izlemeler güvenilir olmayabilir.

Uygulama manifestinizin <application> dosyasında android:debuggable beyan ediliyor etiketi, bu değişkenin varsayılan olarak release yerine debug değerine ayarlanmasına neden olur. APP_OPTIM değerini release olarak ayarlayarak bu varsayılan değeri geçersiz kılın.

UYGULAMA_PLATFORMU

APP_PLATFORM, bu uygulamanın temel aldığı Android API düzeyini tanımlar ve uygulamanın minSdkVersion öğesine karşılık gelir.

Belirtilmezse ndk-build, NDK En son NDK tarafından desteklenen minimum API düzeyi her zaman yeterince düşük olur neredeyse tüm etkin cihazları destekliyor.

Örneğin, android-16 değeri, kitaplığınızın şu özelliklere sahip API'ler kullandığını belirtir: Android 4.1'in (API düzeyi 16) altında mevcut değildir ve cihazlarda kullanılamaz daha düşük bir platform sürümü kullanıyor. Platform adlarının tam listesi ve ilgili Android sistem görüntüleri için Android NDK yerel API'ler.

Gradle ve externalNativeBuild kullanılırken bu parametre ayarlanmamalıdır doğrudan ekleyebilirsiniz. Bunun yerine, minSdkVersion özelliğini defaultConfig veya productFlavors blok modül düzeyinde build.gradle dosyası bulunmalıdır. Bu kitaplığınızın yalnızca Android'in yeterli sürümü.

NDK'nın, Android'in her API düzeyi için kitaplık içermediğini unutmayın. Yeni yerel API'ler içermeyen sürümler, NDK ndk-build kullanımları, tercihe göre azalan düzende:

  1. APP_PLATFORM ile eşleşen platform sürümü.
  2. APP_PLATFORM altında olan bir sonraki API düzeyi. Örneğin, android-19 yeni bir değer olmadığından, APP_PLATFORM android-20 olduğunda kullanılır yerel API'leri nasıl kullanacağınızı öğreneceksiniz.
  3. NDK tarafından desteklenen minimum API düzeyi.

UYGULAMA_PROJESİ_YOLU

Projenin kök dizininin mutlak yolu.

APP_SHORT_COMMANDS

Proje genelindeki eşdeğeri: LOCAL_SHORT_COMMANDS. Daha fazla bilgi için bkz. Android.mk içindeki LOCAL_SHORT_COMMANDS dokümanlarına bakın.

UYGULAMA_STL

Bu uygulama için kullanılacak C++ standart kitaplığı.

Varsayılan olarak system STL kullanılır. Diğer seçenekler: c++_shared, c++_static ve none. Bkz. NDK C++ Çalışma Zamanları ve Özellikler.

UYGULAMA_STRIP_MODE

Bu uygulamadaki modüller için strip işlevine iletilecek bağımsız değişken. Varsayılanlar --strip-unneeded numaralı telefona. Modüldeki tüm ikili programların çıkarılmasını önlemek için none Diğer şerit modları için bkz. şerit dokümanlarına göz atın.

UYGULAMA_THIN_ARCHIVE

Projedeki tüm statik kitaplıklarda ince arşivleri kullanmak için değeri true olarak ayarlayın. Örneğin, Daha fazla bilgi için şu adresteki LOCAL_THIN_ARCHIVE dokümanlarına bakın: Android.mk.

UYGULAMA_WRAP_SH

Bu uygulamaya dahil edilecek Wrap.sh dosyasının yolu.

Bu değişkenin her ABI için bir varyantı ve ABI genel bir varyantı vardır:

  • APP_WRAP_SH
  • APP_WRAP_SH_armeabi-v7a
  • APP_WRAP_SH_arm64-v8a
  • APP_WRAP_SH_x86
  • APP_WRAP_SH_x86_64
ziyaret edin.