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:
APP_PLATFORMile eşleşen platform sürümü.APP_PLATFORMaltında olan bir sonraki API düzeyi. Örneğin,android-19yeni bir değer olmadığından,APP_PLATFORMandroid-20olduğunda kullanılır yerel API'leri nasıl kullanacağınızı öğreneceksiniz.- 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_SHAPP_WRAP_SH_armeabi-v7aAPP_WRAP_SH_arm64-v8aAPP_WRAP_SH_x86APP_WRAP_SH_x86_64