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_PLATFORM
ile eşleşen platform sürümü.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.- 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