Uygulama.mk

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:

  1. APP_PLATFORM ile eşleşen platform sürümü.
  2. APP_PLATFORM altındaki bir sonraki kullanılabilir API düzeyi. Örneğin, android-20'de yeni yerel API olmadığından APP_PLATFORM android-20 olduğunda android-19 kullanılır.
  3. 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