यह दस्तावेज़ उस Application.mk
बिल्ड फ़ाइल के बारे में बताता है जिसे ndk-build
इस्तेमाल करता है.
हमारा सुझाव है कि आप इस तारीख से पहले Concepts पेज पढ़ें एक.
खास जानकारी
Application.mk
से, ndk-build के लिए प्रोजेक्ट-वाइड सेटिंग के बारे में पता चलता है. डिफ़ॉल्ट रूप से,
यह आपके ऐप्लिकेशन की प्रोजेक्ट डायरेक्ट्री में, jni/Application.mk
पर मौजूद है.
वैरिएबल
APP_ABI
डिफ़ॉल्ट रूप से, एनडीके बिल्ड सिस्टम उन सभी एबीआई के लिए कोड जनरेट करता है जो अब सेवा में नहीं हैं. आपने लोगों तक पहुंचाया मुफ़्त में
APP_ABI
सेटिंग का इस्तेमाल करके, खास एबीआई के लिए कोड जनरेट किया जा सकता है. टेबल 1 के शो
अलग-अलग निर्देशों के सेट के लिए, APP_ABI
सेटिंग चुनी जा सकती हैं.
को दबाकर रखें
टेबल 1. अलग-अलग निर्देशों के सेट के लिए, APP_ABI
सेटिंग.
निर्देश सेट किए गए | वैल्यू |
---|---|
32-बिट ARMv7 | APP_ABI := armeabi-v7a |
64-बिट ARMv8 (AArch64) | APP_ABI := arm64-v8a |
x86 | APP_ABI := x86 |
x86-64 | APP_ABI := x86_64 |
काम करने वाले सभी एबीआई (डिफ़ॉल्ट) | APP_ABI := all |
एक ही लाइन में अलग-अलग वैल्यू डालकर भी वैल्यू तय की जा सकती हैं. स्पेस के हिसाब से. उदाहरण के लिए:
APP_ABI := armeabi-v7a arm64-v8a x86
इस्तेमाल किए जा सकने वाले सभी एबीआई की सूची और उनके इस्तेमाल के बारे में जानकारी और सीमाओं के लिए, Android एबीआई देखें.
ऐप्लिकेशन_एएसएफ़एलएजीएस
हर असेंबली सोर्स फ़ाइल (.s
और
.S
फ़ाइलें) अपलोड कर सकता है.
ऐप्लिकेशन_फ़्लैग्स
सभी YASM सोर्स फ़ाइलों (.asm
, x86/x86_64) के लिए, YASM को भेजे जाने वाले फ़्लैग
.
APP_BUILD_स्क्रिप्ट
डिफ़ॉल्ट रूप से, ndk-build यह मानता है कि Android.mk फ़ाइल
प्रोजेक्ट रूट से संबंधित jni/Android.mk
.
किसी दूसरी जगह से Android.mk फ़ाइल लोड करने के लिए, APP_BUILD_SCRIPT
सेट करें
के ऐब्सलूट पाथ में डालें.
ऐप्लिकेशन_सीएफ़एलएजीएस
प्रोजेक्ट में सभी C/C++ कंपाइलेशन के लिए पास किए जाने वाले फ़्लैग.
यह भी देखें: APP_CONLYFLAGS, APP_CPPFLAGS.
APP_Clang_TIDY
प्रोजेक्ट के सभी मॉड्यूल के लिए, बेहतर तरीके से काम करने की सुविधा चालू करने के लिए, 'सही' पर सेट करें. इन्होंने बंद किया डिफ़ॉल्ट.
APP_Clang_TIDY_FLAGS
प्रोजेक्ट में सभी आसान निष्पादन को पास करने के लिए फ़्लैग.
ऐप्लिकेशन_सी हीFLAGS
प्रोजेक्ट में सभी सी कंपाइल के लिए पास किए जाने वाले फ़्लैग. ये फ़्लैग नहीं दिखेंगे का इस्तेमाल C++ कोड के लिए किया जाता है.
यह भी देखें: APP_CFLAGS, APP_CPPFLAGS.
ऐप्लिकेशन_सीपीपीएफ़एलएजीएस
प्रोजेक्ट में सभी C++ कंपाइल के लिए पास किए जाने वाले फ़्लैग. ये फ़्लैग नहीं दिखेंगे इसकी कॉपी का इस्तेमाल C कोड के लिए किया जाता है.
यह भी देखें: APP_CFLAGS, APP_CONLYFLAGS.
ऐप्लिकेशन_सीएक्सएक्सFLAGS
APP_CPPFLAGS
के समान है, लेकिन संकलन में APP_CPPFLAGS
के बाद दिखाई देगा
आदेश. उदाहरण के लिए:
APP_CPPFLAGS := -DFOO
APP_CXXFLAGS := -DBAR
ऊपर दिए गए कॉन्फ़िगरेशन का नतीजा, clang++ -DBAR -DFOO
के बजाय clang++
-DFOO -DBAR
से मिलता-जुलता कंपाइलेशन निर्देश मिलेगा.
ऐप्लिकेशन_डीबग
डीबग करने लायक ऐप्लिकेशन बनाने के लिए, 'सही' पर सेट करें.
ऐप्लिकेशन_LDFLAGS
एक्ज़ीक्यूटेबल और शेयर की गई लाइब्रेरी को लिंक करते समय पास किए जाने वाले फ़्लैग.
ऐप्लिकेशन_मैनिफ़ेस्ट
AndroidManifest.xml फ़ाइल का ऐब्सलूट पाथ.
डिफ़ॉल्ट रूप से, अगर $(APP_PROJECT_PATH)/AndroidManifest.xml)
का इस्तेमाल किया जाएगा, तो
मौजूद है.
ऐप्लिकेशन मॉड्यूल
बनाए जाने वाले मॉड्यूल की एक खास सूची. इस सूची के एलिमेंट में इनके नाम हैं
मॉड्यूल, जैसा वे LOCAL_MODULE
में Android.mk फ़ाइल में दिखाई देते हैं.
डिफ़ॉल्ट रूप से, ndk-build सभी शेयर की गई लाइब्रेरी, एक्ज़ीक्यूटेबल फ़ाइल, और
निर्भरता. स्टैटिक लाइब्रेरी सिर्फ़ तब बनाई जाएंगी, जब उनका इस्तेमाल
प्रोजेक्ट में सिर्फ़ स्टैटिक लाइब्रेरी होती हैं या अगर उनका नाम रखा गया है, तो
APP_MODULES
.
APP_OPTIM
इस वैकल्पिक वैरिएबल को release
या debug
के तौर पर तय करें. बाइनरी रिलीज़ करें
डिफ़ॉल्ट रूप से बने होंगे.
रिलीज़ मोड, ऑप्टिमाइज़ेशन की सुविधा चालू करता है. इससे ऐसी बाइनरी बन सकती हैं जो इस्तेमाल न की जा सकती हों डीबगर के साथ. डीबग मोड, ऑप्टिमाइज़ेशन को बंद करता है, ताकि डीबगर इस्तेमाल किया गया.
ध्यान रखें कि आपके पास रिलीज़ या बाइनरी को डीबग करने का विकल्प है. बाइनरी रिलीज़ करें, हालांकि, डीबग करने के दौरान कम जानकारी दें. उदाहरण के लिए, वैरिएबल ऑप्टिमाइज़ किया गया हो, ताकि जांच न की जा सके. साथ ही, कोड को फिर से क्रम में लगाने पर, यह बेहतर हो सकता है कोड को क्रॉल करना मुश्किल हो; ऐसा हो सकता है कि स्टैक ट्रेस भरोसेमंद न हो.
अपने ऐप्लिकेशन मेनिफ़ेस्ट के <application>
में android:debuggable
का एलान करें
टैग की वजह से यह वैरिएबल डिफ़ॉल्ट रूप से release
के बजाय debug
पर सेट हो जाएगा.
इस डिफ़ॉल्ट वैल्यू को बदलने के लिए, APP_OPTIM
को release
पर सेट करें.
ऐप्लिकेशन_प्लैटफ़ॉर्म
APP_PLATFORM
Android के एपीआई लेवल के बारे में जानकारी देता है, जिसे इस ऐप्लिकेशन को बनाने के लिए बनाया गया है
और ऐप्लिकेशन के minSdkVersion
से मेल खाता हो.
अगर इसके बारे में नहीं बताया गया है, तो ndk-build, उस कम से कम एपीआई लेवल को टारगेट करेगा जो एनडीके. नए एनडीके के साथ काम करने वाला कम से कम एपीआई लेवल हमेशा काफ़ी कम होगा सभी चालू डिवाइसों पर काम करता है.
उदाहरण के लिए, android-16
की वैल्यू से पता चलता है कि आपकी लाइब्रेरी ऐसे एपीआई का इस्तेमाल करती है
Android 4.1 (एपीआई लेवल 16) से पहले के वर्शन उपलब्ध नहीं हैं और इनका इस्तेमाल डिवाइसों पर नहीं किया जा सकता
निचले प्लैटफ़ॉर्म के वर्शन का इस्तेमाल कर रहे हैं. प्लैटफ़ॉर्म के नामों की पूरी सूची देखने और
संबंधित Android सिस्टम इमेज, Android एनडीके नेटिव विज्ञापन के लिए देखें
APIs.
Gradle और externalNativeBuild
का इस्तेमाल करते समय, यह पैरामीटर सेट नहीं होना चाहिए
सकता है. इसके बजाय, defaultConfig
में minSdkVersion
प्रॉपर्टी को सेट करें या
आपके productFlavors
ब्लॉक
मॉड्यूल-लेवल build.gradle
फ़ाइल. यह
यह पक्का करता है कि आपकी लाइब्रेरी का इस्तेमाल, सिर्फ़ उन डिवाइसों पर इंस्टॉल किए गए ऐप्लिकेशन के लिए किया जाए जो
Android का सही वर्शन होना चाहिए.
ध्यान दें कि एनडीके में Android के हर एपीआई लेवल के लिए लाइब्रेरी शामिल नहीं होती हैं. जिन वर्शन में नए नेटिव एपीआई शामिल नहीं हैं उन्हें सूची में जगह बचाने के लिए हटा दिया जाता है एनडीके. ndk-build, प्राथमिकता के घटते क्रम में इस्तेमाल करता है:
APP_PLATFORM
से मेल खाने वाला प्लैटफ़ॉर्म वर्शन.APP_PLATFORM
से नीचे अगला उपलब्ध एपीआई लेवल. उदाहरण के लिए,android-19
का इस्तेमाल तब किया जाएगा, जबAPP_PLATFORM
केandroid-20
होने पर इस्तेमाल किया जाएगा, क्योंकि कोई नया android-20 में नेटिव एपीआई के लिए उपलब्ध है.- एनडीके (NDK) के साथ काम करने वाला कम से कम एपीआई लेवल.
APP_PROJECT_PATH
प्रोजेक्ट की रूट डायरेक्ट्री का ऐब्सलूट पाथ.
APP_SHORT_COMMANDS
पूरे प्रोजेक्ट में LOCAL_SHORT_COMMANDS
के बराबर. ज़्यादा जानकारी के लिए, यह देखें
Android.mk में LOCAL_SHORT_COMMANDS
के लिए दस्तावेज़.
ऐप्लिकेशन_एसटीएल
इस ऐप्लिकेशन के लिए इस्तेमाल करने के लिए C++ स्टैंडर्ड लाइब्रेरी.
system
एसटीएल का इस्तेमाल, डिफ़ॉल्ट रूप से किया जाता है. अन्य विकल्प हैं: c++_shared
,
c++_static
और none
. NDK C++ रनटाइम और
सुविधाएं.
ऐप्लिकेशन_STRIP_मोड
इस ऐप्लिकेशन के मॉड्यूल के लिए, strip
को दिया जाने वाला आर्ग्युमेंट. डिफ़ॉल्ट
--strip-unneeded
तक. मॉड्यूल में सभी बाइनरी हटाए जाने से बचने के लिए, इस पर सेट करें
none
. अन्य स्ट्रिप मोड के लिए, स्ट्रिप देखें
दस्तावेज़ में दिया गया है.
APP_THIN_संग्रहित
प्रोजेक्ट में मौजूद सभी स्टैटिक लाइब्रेरी के लिए, थिन आर्काइव का इस्तेमाल करने के लिए, 'सही' पर सेट करें. इसके लिए
ज़्यादा जानकारी के लिए, LOCAL_THIN_ARCHIVE
के दस्तावेज़ इसमें देखें
Android.mk.
ऐप्लिकेशन_लपेट_एसएच
इस ऐप्लिकेशन के साथ शामिल किए जाने वाले wrap.sh फ़ाइल का पाथ.
हर एबीआई के लिए इस वैरिएबल का एक वैरिएंट मौजूद होता है और एबीआई के सामान्य वैरिएंट में:
APP_WRAP_SH
APP_WRAP_SH_armeabi-v7a
APP_WRAP_SH_arm64-v8a
APP_WRAP_SH_x86
APP_WRAP_SH_x86_64