ऐप्लिकेशन.एमके

यह दस्तावेज़ उस 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, प्राथमिकता के घटते क्रम में इस्तेमाल करता है:

  1. APP_PLATFORM से मेल खाने वाला प्लैटफ़ॉर्म वर्शन.
  2. APP_PLATFORM से नीचे अगला उपलब्ध एपीआई लेवल. उदाहरण के लिए, android-19 का इस्तेमाल तब किया जाएगा, जब APP_PLATFORM के android-20 होने पर इस्तेमाल किया जाएगा, क्योंकि कोई नया android-20 में नेटिव एपीआई के लिए उपलब्ध है.
  3. एनडीके (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