Bu dokümanda, ndk-build
tarafından kullanılan Application.mk
derleme dosyası açıklanmaktadır.
Bu sayfadan önce Kavramlar sayfasını okumanızı öneririz.
Genel bakış
Application.mk
, ndk-build için proje çapında ayarları belirtir. Varsayılan olarak, uygulamanızın proje dizininde jni/Application.mk
konumunda bulunur.
Değişkenler
UYGULAMA_ABI
Varsayılan olarak NDK derleme sistemi, kullanımdan kaldırılmayan tüm ABI'ler için kod oluşturur. Belirli ABI'ler için kod oluşturmak amacıyla APP_ABI
ayarını kullanabilirsiniz. Tablo 1'de, farklı talimat grupları için APP_ABI
ayarları gösterilmektedir.
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 |
86 x | APP_ABI := x86 |
x86-64 | APP_ABI := x86_64 |
Desteklenen tüm ABI'ler (varsayılan) | APP_ABI := all |
Aynı satıra, boşluklarla ayrılmış şekilde yerleştirerek de birden çok değer belirtebilirsiniz. Örneğin:
APP_ABI := armeabi-v7a arm64-v8a x86
Desteklenen tüm ABI'lerin listesi, bunların kullanımları ve sınırlamaları ile ilgili ayrıntılar için Android ABI'leri bölümüne bakın.
UYGULAMA_ASFLAGS
Projedeki her derleme kaynak dosyası (.s
ve .S
dosya) için derleyiciye iletilecek işaretler.
UYGULAMA_ASMFLAGS
Tüm YASM kaynak dosyaları (.asm
, yalnızca x86/x86_64) için YASM'ye iletilecek işaretler.
UYGULAMA_OLUŞTURMA_METNİ
Varsayılan olarak ndk-build, Android.mk dosyasının proje köküne göre jni/Android.mk
konumunda bulunduğunu varsayar.
Bir Android.mk dosyasını farklı bir konumdan yüklemek için APP_BUILD_SCRIPT
öğesini Android.mk dosyasının mutlak yoluna ayarlayın.
UYGULAMA_CFLAGLARI
Projedeki tüm C/C++ derlemeleri için iletilecek flag'ler.
Ayrıca bkz.: APP_CONLYFLAGS, APP_CPPFLAGS.
UYGULAMA_TARİHİ_TIDY
Projedeki tüm modüllerde clang-tidy'yi etkinleştirmek için true değerine ayarlayın. Varsayılan olarak devre dışıdır.
APP_CTürkçe_TIDY_FLAGS
Projedeki tüm acil durum yürütmeleri için iletilecek işaretler.
UYGULAMA_CONLYFLAGS
Projedeki tüm C derlemeleri için iletilecek işaretler. Bu işaretler C++ kodu için kullanılmaz.
Ayrıca bkz.: APP_CFLAGS, APP_CPPFLAGS.
UYGULAMA_PBM'LER
Projedeki tüm C++ derlemeleri için iletilecek işaretler. Bu işaretler C kodu için kullanılmaz.
Ayrıca bkz.: APP_CFLAGS, APP_CONLYFLAGS.
UYGULAMA_CXXFLAGS
APP_CPPFLAGS
ile aynıdır ancak derleme komutunda APP_CPPFLAGS
ifadesinden sonra görünür. Örneğin:
APP_CPPFLAGS := -DFOO
APP_CXXFLAGS := -DBAR
Yukarıdaki yapılandırmada clang++ -DBAR -DFOO
yerine clang++
-DFOO -DBAR
işlevine benzer bir derleme komutu oluşturulur.
UYGULAMA_HATA AYIKLAMA
Hata ayıklaması yapılabilecek bir uygulama derlemek için true (doğru) değerine ayarlayın.
UYGULAMA_LDFLAGS
Yürütülebilir dosyaları ve paylaşılan kitaplıkları bağlarken iletilecek işaretler.
UYGULAMA_MANIFEST
AndroidManifest.xml dosyasının mutlak yolu.
Varsa varsayılan olarak $(APP_PROJECT_PATH)/AndroidManifest.xml)
kullanılır.
UYGULAMA_MODÜLLERİ
Oluşturulacak modüllerin açık bir listesi. Bu listenin öğeleri, Android.mk dosyası içindeki LOCAL_MODULE
politikasında göründükleri modüllerin adlarıdır.
Varsayılan olarak ndk-build, tüm paylaşılan kitaplıkları, yürütülebilir dosyaları ve bunların bağımlılıklarını derler. Statik kitaplıklar yalnızca proje tarafından kullanılıyorsa, projede yalnızca statik kitaplıklar varsa veya bunların adları APP_MODULES
ise oluşturulur.
APP_OPTIM
Bu isteğe bağlı değişkeni release
veya debug
olarak tanımlayın. Varsayılan olarak sürüm ikili programları
oluşturulur.
Yayınlama modu, optimizasyonları etkinleştirir ve hata ayıklayıcıyla kullanılamayan ikili programlar üretebilir. Hata ayıklama modu, hata ayıklayıcıların kullanılabilmesi için optimizasyonları devre dışı bırakır.
İkili programlar için hata ayıklama veya hata ayıklama işlemleri yapabilirsiniz. Bununla birlikte, ikili programları yayınlayın, hata ayıklama sırasında daha az bilgi sağlar. Örneğin, değişkenler optimize edilerek inceleme engellenebilir. Ayrıca, kodun yeniden sıralanması kodda adım adım ilerlemeyi zorlaştırabilir. Yığın izlemeler güvenilir olmayabilir.
Uygulama manifestinizin <application>
etiketinde android:debuggable
belirtilmesi, bu değişkenin release
yerine varsayılan olarak 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 derlendiği Android API düzeyini belirtir ve uygulamanın minSdkVersion
değerine karşılık gelir.
Belirtilmezse ndk-build, NDK tarafından desteklenen minimum API düzeyini hedefler. En son NDK'nın desteklediği minimum API düzeyi, daima neredeyse tüm etkin cihazları destekleyecek kadar düşük olacaktır.
Örneğin, android-16
değeri, kitaplığınızın Android 4.1'den (API düzeyi 16) daha düşük bir platform sürümüne sahip cihazlarda kullanılamayan API'leri kullandığını belirtir. Platform adlarının ve karşılık gelen Android sistem görüntülerinin tam listesi için Android NDK yerel API'leri bölümüne bakın.
Gradle ve externalNativeBuild
kullanılırken bu parametre doğrudan ayarlanmamalıdır. Bunun yerine, modül düzeyindeki build.gradle
dosyanızın defaultConfig
veya productFlavors
bloklarında minSdkVersion
özelliğini ayarlayın. Bu şekilde, kitaplığınızın yalnızca Android'in uygun sürümünü çalıştıran cihazlarda yüklü uygulamalar tarafından kullanılabilmesi sağlanır.
NDK'nın, Android'in her API düzeyi için kitaplık içermediğini unutmayın. Yeni yerel API içermeyen sürümler, NDK. ndk-build kullanımlarında yer kazanmak için azalan tercih sırasına göre atlanır:
APP_PLATFORM
ile eşleşen platform sürümü.APP_PLATFORM
altındaki bir sonraki kullanılabilir API düzeyi. Örneğin, android-20'de yeni yerel API olmadığındanAPP_PLATFORM
android-20
olduğundaandroid-19
kullanılır.- NDK tarafından desteklenen minimum API düzeyi.
UYGULAMA_PROJE_YOLU
Projenin kök dizininin mutlak yolu.
APP_SHORT_COMMANDS
LOCAL_SHORT_COMMANDS
değerinin proje genelindeki eşdeğeri. Daha fazla bilgi için Android.mk dosyasındaki LOCAL_SHORT_COMMANDS
dokümanlarına bakın.
APP_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
. NDK C++ Çalışma Zamanları ve Özellikleri'ne bakın.
UYGULAMA_STRIP_MODU
Bu uygulamadaki modüller için strip
öğesine iletilecek bağımsız değişken. Varsayılan olarak
--strip-unneeded
değerine ayarlanır. Modüldeki tüm ikili programların kaldırılmasını önlemek için none
olarak ayarlayın. Diğer şerit modları için şerit dokümanlarına bakın.
UYGULAMA_TARİFİ_ARŞİV
Projedeki tüm statik kitaplıklarda ince arşivler kullanmak için değeri true olarak ayarlayın. Daha fazla bilgi için Android.mk'de LOCAL_THIN_ARCHIVE
belgelerine bakın.
APP_WRAP_SH
Bu uygulamaya dahil edilecek wrap.sh dosyasının yolu.
Bu değişkenin bir varyantı ve ABI'ye özgü bir varyant da her ABI için mevcuttur:
APP_WRAP_SH
APP_WRAP_SH_armeabi-v7a
APP_WRAP_SH_arm64-v8a
APP_WRAP_SH_x86
APP_WRAP_SH_x86_64