एनडीके का रीविज़न हिस्ट्री

इस पेज पर, एनडीके के रिलीज़ किए गए सभी स्टेबल वर्शन में हुए बदलावों के बारे में जानकारी दी गई है. एनडीके का सबसे नया स्टेबल वर्शन या मौजूदा बीटा वर्शन डाउनलोड करने के लिए, NDK डाउनलोड पेज देखें.

android-ndk-announce ज़्यादा जानकारी के लिए Google Group का इस्तेमाल करें. साथ ही, रिलीज़ की सूचनाएं पाने के लिए सदस्यता लें.

Android NDK r27 एलटीएस (जुलाई 2024)

चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • KitKat (एपीआई 19 और 20) अब काम नहीं करता.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • इसमें Android 13 के एपीआई शामिल हैं.
  • LLVM 14 डेवलपमेंट के आधार पर, LLVM को clang-r450784d में अपडेट किया गया.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • GNU असेंबलर (GAS) को हटा दिया गया है. अगर आपको इमारत बनाने में किसी -fno-integrated-as आपको वह फ़्लैग हटाना होगा. यहां जाएं: असेंबली के साथ काम करने की सुविधा देने के बारे में सलाह पाने के लिए, Clang Migration Notes LLVM से जुड़ी ज़रूरी शर्तें पूरी करता है.
  • GDB हटा दिया गया है. इसके बजाय, एलएलडीबी का इस्तेमाल करें. ध्यान दें कि ndk-gdb इसके लिए LLDB का इस्तेमाल करता है डिफ़ॉल्ट है और Android Studio हमेशा सिर्फ़ LLDB के साथ काम करता है.
  • जैली बीन (API 16, 17, और 18) अब समर्थित नहीं है. सबसे कम NDK, KitKat (एपीआई लेवल 19) के साथ काम करता है.
  • गैर-Neon डिवाइस पर अब यह सुविधा काम नहीं करती. बहुत कम संख्या में, पुराने डिवाइस नियॉन का समर्थन नहीं करते, इसलिए ज़्यादातर ऐप्लिकेशन एक तरफ़ को बेहतर बनाया जा सकता है.
  • RenderScript बिल्ड सपोर्ट को हटा दिया गया है. RenderScript था Android 12 में बंद हो जाएगा. अगर आपने माइग्रेट करने की प्रक्रिया पूरी नहीं की है अगर आपके ऐप्लिकेशन RenderScript से दूर हैं, तो NDK r23 LTS का इस्तेमाल किया जा सकता है.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • GNU असेंबलर (GAS) को छोड़कर, GNU binutils को हटा दिया गया है. जीएएस इसे अगली रिलीज़ में हटा दिया जाएगा. अगर आपको डिजिटल लर्निंग के लिए -fno-integrated-as, अगर कोई समस्या आ रही है, तो गड़बड़ी की शिकायत करें फ़्लैग करने से बचें.
  • GDB के लिए समर्थन खत्म हो गया है. GDB को अगली रिलीज़ से हटा दिया जाएगा. इसके बजाय, एलएलडीबी का इस्तेमाल करें. ध्यान दें कि ndk-gdb डिफ़ॉल्ट रूप से, एलएलडीबी का इस्तेमाल करता है.
  • NDK r23 आखिरी रिलीज़ है, जो नॉन-Neon के साथ काम करता है. इससे शुरुआत NDK r24, सिस्टम में armeabi-v7a लाइब्रेरी का निर्माण किया जाएगा. नियॉन. कुछ बहुत पुराने डिवाइस नियॉन का समर्थन नहीं करते हैं परफ़ॉर्मेंस में होने वाले सुधार के अलावा, ज़्यादातर ऐप्लिकेशन का कोई असर नहीं होगा.
  • जेली बीन (एपीआई 16, 17, और 18) अगले NDK में काम नहीं करेंगे रिलीज़. r24 के लिए, एनडीके के साथ काम करने वाला सबसे कम ओएस KitKat होगा (एपीआई लेवल 19).
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • GNU binutils पर रोक लगा दी गई है. इसे आने वाले एनडीके से हटा दिया जाएगा रिलीज़. ध्यान दें कि GNU असेंबलर (as) यह इसका एक हिस्सा है. अगर आपको डिजिटल लर्निंग के लिए -fno-integrated-as, अगर कोई समस्या आ रही है, तो गड़बड़ी की शिकायत करें फ़्लैग करने से बचें. अगर as का इस्तेमाल किया जा रहा है, तो सीधे तौर पर, इसके बजाय clang का इस्तेमाल करें.
  • एलएलडी अब डिफ़ॉल्ट लिंकर है. ndk-build और हमारी CMake टूलचेन फ़ाइल को भी llvm-ar और llvm-strip पर टैप करें.
  • ndk-gdb अब डीबगर के तौर पर lldb का इस्तेमाल करता है. gdb के इस्तेमाल पर रोक लगा दी गई है और इन्हें आने वाली रिलीज़ में हटाया जा सकता है. gdb पर वापस जाने के लिए, --no-lldb का इस्तेमाल करें का विकल्प शामिल है. हालांकि, कृपया गड़बड़ी की शिकायत करें यह समझाना होगा कि आप lldb का इस्तेमाल क्यों नहीं कर सके.
  • इसमें std::filesystem के लिए सहायता पाने की सुविधा शामिल है. दो पहले से मालूम समस्याएं:
    • समस्या 1258: std::filesystem::perm_options::nofollow हो सकता है पुराने डिवाइसों पर यह लागू नहीं होता.
    • समस्या 1260: std::filesystem::canonical जब पुराने पाथ पर कोई ऐसा पाथ पास किया जाता हो जो मौजूद नहीं है, तो वह गलत तरीके से सफल होता है डिवाइस.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • 32-बिट Windows अब काम नहीं करता. इससे आपकी वेबसाइट की उपयोगकर्ताओं का एक हिस्सा है. अगर आपको अब भी एनडीके (NDK) ऐप्लिकेशन बनाने हैं Windows के 32-बिट वर्शन, NDK r20 का इस्तेमाल जारी रखें.

    Android डेवलपर टूल में इस बदलाव के बारे में ज़्यादा जानकारी के लिए, देखें ब्लॉग पोस्ट विषय से जुड़े दूसरे लेख पढ़ें.

  • एलएलडी की सुविधा अब जांच के लिए उपलब्ध है. एओएसपी ने डिफ़ॉल्ट रूप से एलएलडी का इस्तेमाल करना शुरू कर दिया है और एनडीके उसके बाद (टाइमलाइन की जानकारी नहीं है). -fuse-ld=lld पास करके अपने ऐप्लिकेशन में एलएलडी की जांच करें लिंक करते समय. ध्यान दें कि समस्या 843 एलएलडी का इस्तेमाल करने वाले उन बिल्ड पर असर डालेगा जो binutils स्ट्रिप और objcopy के साथ यह llvm-strip और llvm-objcopy जैसी है.
  • आने वाले समय में, लेगसी टूलचेन इंस्टॉल पाथ को हटा दिया जाएगा रिलीज़. ये पाथ NDK r19 के बाद से पुराने हो गए हैं और एनडीके (NDK) में काफ़ी ज़्यादा जगह होती है. हटाए जा रहे पाथ:
    • प्लेटफ़ॉर्म
    • सोर्स/cxx-stl
    • सिस्टमूट
    • टूलचेन (टूलचेन/एलवीएम को छोड़कर)
    आम तौर पर, इस बदलाव से सिर्फ़ बिल्ड सिस्टम मेंटेनर पर असर पड़ेगा या जो ऐसे बिल्ड सिस्टम का इस्तेमाल करते हैं जो अप-टू-डेट नहीं हैं. ndk-build और CMake टूलचेन के उपयोगकर्ताओं पर इसका कोई असर नहीं पड़ेगा और न ही वे ऐसा करेंगे make_standalone_toolchain.py उपयोगकर्ता (हालांकि वह स्क्रिप्ट r19 के बाद से गैर-ज़रूरी). लेगसी टूलचेन लेआउट से माइग्रेट करने के बारे में जानकारी के लिए, देखें सिस्टम मेंटेनर तैयार करने की गाइड आपके इस्तेमाल में आने वाले एनडीके वर्शन के लिए.
  • APK अपलोड करते समय, Play Store पर 64-बिट की सुविधा काम करेगी अगस्त 2019 से लागू होगा. अभी पोर्ट करना शुरू करें, ताकि आप जब चाहें, तब आपका समय आ गया है. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
  • अब macOS का ऐप्लिकेशन बंडल इनके लिए उपलब्ध है: को हमारे विकी और हमारी वेबसाइट से डाउनलोड करें. ध्यान दें कि केवल बंडल RPATHs का इस्तेमाल कर सकता है और नोटराइज़ेशन पास कर सकता है. यह एक परंपरागत NDK पैकेज है, जो macOS को नोटरी नहीं किया जा सकता. SDK टूल, ऐप्लिकेशन बंडल के तौर पर परंपरागत पैकेज के लिए लेआउट में बदलाव करना पड़ता है, Android Studio के साथ काम नहीं करेगा. एनडीके, जब SDK टूल मैनेजर के ज़रिए डाउनलोड किया जाता है, तो उसे क्वॉरंटीन किया जाता है. इसलिए, फ़िलहाल गेटकीपर से अनुमति है. फ़िलहाल, SDK टूल मैनेजर macOS के लिए एनडीके (NDK) पाने का एक भरोसेमंद तरीका है.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • एलएलडी की सुविधा अब जांच के लिए उपलब्ध है. एओएसपी, डिफ़ॉल्ट रूप से एलएलडी पर स्विच कर रहा है और इसके बाद NDK, (टाइमलाइन के बारे में जानकारी नहीं है). पास होने पर अपने ऐप्लिकेशन में एलएलडी की जांच करें लिंक करते समय -fuse-ld=lld.
  • APK अपलोड करते समय, Play Store पर 64-बिट की सुविधा काम करेगी अगस्त 2019 से लागू होगा. अभी पोर्ट करना शुरू करें, ताकि आप जब चाहें, तब आपका समय आ गया है. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
  • Android Q के एपीआई जोड़े गए.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • डेवलपर को अपने ऐप्लिकेशन की जांच एलएलडी की मदद से शुरू करनी चाहिए. एओएसपी ने डिफ़ॉल्ट रूप से एलएलडी होता है और एनडीके अगले रिलीज़. एलएलडी की ट्रेनिंग पूरी होने के बाद, बीएफ़डी और गोल्ड की कीमतें हटा दी जाएंगी रिलीज़ साइकल, जिसमें कोई बड़ी समस्या न हुई हो (अनुमानित r21). जांच करें लिंक करते समय -fuse-ld=lld पास करके, अपने ऐप्लिकेशन में एलएलडी शुरू करें. ध्यान दें: फ़िलहाल, lld Windows पर कंप्रेस किए गए सिंबल पर काम नहीं करता. समस्या 888 से मेल खाता है. Clang, Windows पर कंप्रेस किए गए सिंबल जनरेट नहीं कर सकता. हालाँकि, डार्विन से बने आर्टफ़ैक्ट का इस्तेमाल करते समय या Linux.
  • APK अपलोड करते समय, Play Store पर 64-बिट की सुविधा काम करेगी अगस्त 2019 से लागू होगा. अभी पोर्ट करना शुरू करें, ताकि आप जब चाहें, तब आपका समय आ गया है. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
  • समस्या 780: स्टैंडअलोन टूलचेन की अब ज़रूरत नहीं है. क्लैंग, बिन बिल्स, सिस्टमूट, और दूसरे टूलचेन हिस्से अब सभी स्टेज पर $NDK/toolchains/llvm/prebuilt/<host-tag> और क्लैंग उन्हें अपने-आप ढूंढ लिया जाएगा. स्टैंडअलोन एक्सटेंशन बनाने के बजाय एपीआई 26 ARM के लिए टूलचेन का इस्तेमाल करने के बजाय, सीधे कंपाइलर को यहां से शुरू करें एनडीके:
    $ $NDK/toolchains/llvm/prebuilt//bin/armv7a-linux-androideabi26-clang++ src.cpp
               
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है r19 के लिए टूलचेन को पुराने पाथ पर भी इंस्टॉल किया गया है, ताकि बिल्ड डिस्ट्रिब्यूट किया जा सके सिस्टम को नए लेआउट के हिसाब से अपनाने का मौका देते हैं. पुराने पाथ को r20 में हटाया गया. make_standalone_toolchain.py स्क्रिप्ट नहीं होगी हटाया गया. अब यह ज़रूरी नहीं है. इससे आपको ऊपर दी गई जानकारी के साथ चेतावनी मिलेगी जानकारी, लेकिन स्क्रिप्ट मौजूदा वर्कफ़्लो. अगर ndk-build, CMake या स्टैंडअलोन टूलचेन का इस्तेमाल किया जा रहा है, तो आपके वर्कफ़्लो में कोई बदलाव नहीं होना चाहिए. यह बदलाव इनके लिए अहम है जो तीसरे पक्ष के बिल्ड सिस्टम मैनेज करते हैं, जिन्हें अब Android का कुछ खास कोड मिटाएं. ज़्यादा जानकारी के लिए, देखें बिल्ड सिस्टम मेंटेनर की गाइड.
  • ndk-डिपेंड को हटा दिया गया है. हमारा मानना है कि ReLinker पुराने Android में, मूल लाइब्रेरी लोड होने में आने वाली समस्याओं का बेहतर हल वर्शन हैं.
  • समस्या 862: Clang पर रीडायरेक्ट की गई GCC रैपर स्क्रिप्ट हटा दी गई हैं, क्योंकि वे इतने काम नहीं करते हैं कि उनकी जगह दूसरे चैनलों को बदला जा सके.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • जीसीसी को हटा दिया गया है.
  • एलएलडी की सुविधा अब जांच के लिए उपलब्ध है. एओएसपी, डिफ़ॉल्ट रूप से एलएलडी पर स्विच कर रहा है और इसके बाद NDK, (टाइमलाइन के बारे में जानकारी नहीं है). पास होने पर अपने ऐप्लिकेशन में एलएलडी की जांच करें लिंक करते समय -fuse-ld=lld.
  • gnustl, gabi++, और stlport हटा दिए गए हैं.
  • ICS (android-14 और android-15) के लिए सहायता हटा दी गई है. ऐप्लिकेशन एक्ज़ीक्यूटेबल का उपयोग करने से अब PIE और गैर-PIE दोनों देने की ज़रूरत नहीं है एक्ज़ीक्यूट किया जा सकता है.
  • APK अपलोड करते समय, Play Store पर 64-बिट की सुविधा काम करेगी अगस्त 2019 से लागू होगा. अभी पोर्ट करना शुरू करें, ताकि आप जब चाहें, तब आपका समय आ गया है. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • जीसीसी अब काम नहीं करता. इसे NDK r18 में हटा दिया जाएगा.
  • libc++, CMake और स्टैंडअलोन टूलचेन के लिए अब डिफ़ॉल्ट STL है. अगर आपने अगर आपने मैन्युअल तौर पर कोई दूसरा एसटीएल चुना है, तो हमारा सुझाव है कि आप libc++ पर जाएं. ध्यान दें कि ndk-build अभी भी डिफ़ॉल्ट रूप से नहीं पर सेट होता है एसटीएल. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
  • gnustl और stlport के इस्तेमाल पर रोक लगा दी गई है. इसे NDK r18 में हटा दिया जाएगा.
  • ARMv5 (armeabi), MIPS, और MIPS64 के लिए सहायता हटा दी गई है. इनमें से किसी भी एबीआई को बनाने की कोशिश करने पर गड़बड़ी हो सकती है.
  • r18 से ICS (Android-14 और android-15) के लिए सहायता हटा दी जाएगी.
  • APK अपलोड करते समय, Play Store पर 64-बिट की सुविधा काम करेगी अगस्त 2019 से लागू होगा. अभी पोर्ट करना शुरू करें, ताकि आप जब चाहें, तब आपका समय आ गया है. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • काम न करने वाले हेडर हटा दिए गए हैं. यूनिफ़ाइड हेडर को अब सिर्फ़ "हेडर" के नाम से जाना जाता है. माइग्रेशन से जुड़ी सलाह पाने के लिए, यहां जाएं यूनिफ़ाइड हेडर माइग्रेशन नोट.
  • जीसीसी अब काम नहीं करता. इसे अभी एनडीके से नहीं हटाया जाएगा. हालांकि, यह अब बैकपोर्ट हासिल करना. इसे तब तक नहीं हटाया जा सकता, जब तक कि libc++ इतना स्थिर न हो जाए कि डिफ़ॉल्ट के तौर पर सेट है, क्योंकि gnustl के कुछ हिस्से अब भी Clang के साथ काम नहीं करते हैं. इसे तब हटा दिया जाएगा, जब अन्य STLs को r18 में हटा दिया जाता है.
  • libc++ की सुविधा अभी बीटा वर्शन में उपलब्ध नहीं है. इसलिए, यह अब एनडीके में पसंदीदा एसटीएल बन गया है. r17 की शुरुआत में, libc++, CMake और स्टैंडअलोन टूलचेन के लिए डिफ़ॉल्ट एसटीएल है. अगर आपने मैन्युअल तरीके से चुना है एक अलग एसटीएल प्रोग्राम का इस्तेमाल करें, तो हमारा सुझाव है कि आप libc++ पर जाएं. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट.
  • ARM5 (armeabi), MIPS, और MIPS64 के साथ काम करने की सुविधा बंद हो गई है. वे अब डिफ़ॉल्ट रूप से नहीं बनेंगे के साथ ndk-build के साथ, लेकिन अगर उन्हें साफ़ तौर पर नाम दिया गया है, तो उन्हें बनाया जा सकता है. साथ ही, उन्हें "all", "all32" और "all64". r17 में, इन सभी के लिए सहायता हटा दी गई है. CMake और ndk-build, दोनों इनमें से किसी भी एबीआई को टारगेट करने पर, एक चेतावनी जारी करेगा.
API

Android के लिए नेटिव एपीआई जोड़े गए 8.1. इन API के बारे में ज़्यादा जानने के लिए, यह देखें नेटिव एपीआई के बारे में खास जानकारी.

इस रिलीज़ में नया क्या है और क्या बदलाव किए गए हैं, इस बारे में ज़्यादा जानकारी के लिए यह देखें बदलाव का लॉग.

चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • यूनिफ़ाइड हेडर, डिफ़ॉल्ट रूप से चालू होते हैं. इन्हें इस्तेमाल करने का तरीका जानने के लिए हेडर, देखें यूनिफ़ाइड हेडर.
  • ध्यान दें: काम न करने वाले हेडर को आने वाले समय में हटा दिया जाएगा रिलीज़. अगर आपको इन हेडर में कोई समस्या आती है, तो कृपया गड़बड़ी.

    माइग्रेशन से जुड़ी सलाह पाने के लिए, यूनिफ़ाइड हेडर माइग्रेशन नोट.

  • जीसीसी अब काम नहीं करता. इसे अभी तक एनडीके से नहीं हटाया गया, लेकिन अब इसे बैकपोर्ट नहीं लिया जा रहा है. इसे तब तक नहीं हटाया जा सकता, जब तक कि libc++ डिफ़ॉल्ट रूप से इतना स्थिर नहीं हो जाता, क्योंकि gnustl अब भी Clang के साथ असंगत है.
  • Android 2.3 (android-9) अब समर्थित नहीं है. एपीआई लेवल का कम से कम टारगेट NDK, अब Android 4.0 (android-14) वर्शन है. अगर आपका APP_PLATFORM सेट है android-14 से कम है, तो android-14 का इस्तेमाल किया गया है.
  • CMake in NDK अब YASM में लिखे हुए बिल्डिंग असेंबली कोड का इस्तेमाल करता है, जो x86 पर चलता है और x86-64 आर्किटेक्चर. इस बारे में ज़्यादा जानने के लिए, यह देखें असेंबली कोड बनाना.
API

Android 8.0 के लिए नेटिव एपीआई जोड़े गए. ज़्यादा जानकारी के लिए इन एपीआई के बारे में ज़्यादा जानने के लिए, नेटिव एपीआई की खास जानकारी देखें.

इस रिलीज़ में नया क्या है और क्या बदलाव किए गए हैं, इस बारे में ज़्यादा जानकारी के लिए यह देखें बदलाव का लॉग.

चेंजलॉग
डाउनलोड किए गए वीडियो
  • इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
सूचनाएं
  • यूनिफ़ाइड हेडर: इस रिलीज़ में, सिंक किए गए प्लैटफ़ॉर्म हेडर लॉन्च किए जाते हैं और उन्हें Android प्लैटफ़ॉर्म से हमेशा अप-टू-डेट और सटीक बनाए रखते हैं. अब सिर्फ़ हेडर के हिसाब से गड़बड़ियां ठीक की गईं इससे सभी एपीआई लेवल पर असर पड़ता है. यूनिफ़ाइड हेडर की शुरुआत होने से, एनडीके के पिछले एनडीके की कमियों को ठीक किया जाता है रिलीज़, जैसे:
    • M और N के हेडर, असल में L के हेडर थे.
    • हेडर में फ़ंक्शन की जानकारी, प्लैटफ़ॉर्म लेवल से सही तरीके से मेल नहीं खाती; हेडर, जो मौजूद नहीं हैं या जो उपलब्ध फ़ंक्शन के बारे में जानकारी नहीं दे पाए.
    • कई पुराने एपीआई लेवल में ऐसे कॉन्सटेंट मौजूद नहीं थे या गलत थे जो नए एपीआई में थे लेवल.

    ये नए यूनिफ़ाइड हेडर, डिफ़ॉल्ट रूप से चालू नहीं होते. इन्हें चालू और इस्तेमाल करने के बारे में जानने के लिए हेडर, देखें यूनिफ़ाइड हेडर.

  • जीसीसी का बंद होना: यह रिलीज़, जीसीसी के लिए काम करने की सुविधा को बंद कर देती है. GCC को अभी NDK, लेकिन उसे बैकपोर्ट नहीं मिलेगा. भाषा के कुछ हिस्से अब भी Clang के साथ काम नहीं करता है, libc++ के स्थिर होने तक GCC को पूरी तरह से नहीं हटाया जाएगा डिफ़ॉल्ट रूप से काफ़ी है.

इस रिलीज़ में नया क्या है और क्या बदलाव किए गए हैं, इस बारे में ज़्यादा जानकारी के लिए यह देखें बदलाव का लॉग.

डाउनलोड किए गए वीडियो
  • इस रिलीज़ के डाउनलोड संग्रहित किए गए हैं यहां पढ़ें.
सूचनाएं
  • जीसीसी अब काम नहीं करता. इसे सिर्फ़ एनडीके से नहीं हटाया जाएगा अभी तक, लेकिन उसे अब बैकपोर्ट नहीं मिल रहे हैं. इसे यहां तक नहीं निकाला जा सकता के बाद libc++ इतना स्थिर हो गया है कि वह डिफ़ॉल्ट रूप से काम कर सकता है, क्योंकि के gnustl अब भी Clang के साथ असंगत है. इसे हटा दिया जाएगा उसके बाद.
  • जोड़े गए सरल, Android के लिए एक सीपीयू प्रोफ़ाइलर है.
आर13बी
एनडीके
  • NDK_TOOLCHAIN_VERSION अब डिफ़ॉल्ट रूप से Clang पर सेट है.
  • libc++ को r263688 पर अपडेट कर दिया गया है.
  • हमने (करीब) क्लीन अपस्ट्रीम पर रीसेट कर दिया है. इससे आपकी वेबसाइट पर मौजूद बग हैं, लेकिन हमें ऐसा करने से पहले libandroid_support को साफ़ करना होगा उसे डिफ़ॉल्ट के रूप में सुझाए जाएं.
  • make-standalone-toolchain.sh अब सिर्फ़ एक रैपर है Python वर्शन की मदद से बनाया गया है. व्यवहार में कुछ अंतर होते हैं. देखें कम मैसेज दिखाएं.
  • काम न करने वाले एबीआई की कुछ लाइब्रेरी हटा दी गई हैं (mips64r2, mips32r6, mips32r2, और x32). कुछ स्ट्रेगलर अब भी होंगे.
  • crtbegin_static.o से जुड़ी ऐसी समस्याएं जिनकी वजह से, लिंक से बाहर निकलने की सुविधा नहीं मिली ARM android-21+ के लिए स्टैटिक एक्ज़ीक्यूटेबल बनाने के बाद हल की गई: समस्या 132
  • बिल्ड/cmake/android.toolchain.cmake में CMake टूलचेन फ़ाइल जोड़ने की सुविधा.
आम समस्याएं
  • यह ज़रूरी नहीं है कि इस सूची में उन सभी गड़बड़ियों की पूरी जानकारी दी गई हो जिनकी बकाया है.
  • libc++ और GCC का इस्तेमाल करने वाले स्टैंडअलोन टूलचेन काम नहीं करते. ऐसा लगता है जीसीसी में एक गड़बड़ी मिली. यहां जाएं: कॉन्टेंट हटाने के लिए प्रतिबद्ध मैसेज देखें.
  • Marshmallow और N के लिए बायोनिक हेडर और लाइब्रेरी से बाहर नहीं रखा गया है android-24 की मौजूदगी के बावजूद. वे प्लैटफ़ॉर्म अब भी Lollipop हेडर और लाइब्रेरी (r11 का रिग्रेशन नहीं).
  • RenderScript टूल मौजूद नहीं है (r11 से लिया गया रिग्रेशन नहीं है): समस्या 7.
डाउनलोड किए गए वीडियो
  • इस रिलीज़ के डाउनलोड यहां संग्रहित किए जाते हैं.
सूचनाएं
  • ndk-build कमांड, डिफ़ॉल्ट रूप से r13 में Clang का इस्तेमाल करता है. हम GCC को रिलीज़ हो रही है.
  • make-standalone-toolchain.sh स्क्रिप्ट, r13 में हटा दी जाएगी. पक्का करें कि make_standalone_toolchain.py आपकी ज़रूरत के हिसाब से हो.
  • GitHub पर समस्याओं की शिकायत करें.
आर12बी
  • हमने ndk-gdb.py को ठीक कर दिया है. (समस्या 118)
  • हमने NdkCameraMetadataTags.h को अपडेट किया है ताकि इसमें अब कोई अमान्य अमान्य न हो enum मान.
  • ndk-build में एक बग जो libc++ का इस्तेमाल करने वाली स्थिर लाइब्रेरी के लिए नकली चेतावनियां देता है को ठीक किया गया है. इस बदलाव के बारे में ज़्यादा जानकारी के लिए, टिप्पणियां देखें यहां पढ़ें.
  • OpenSLES हेडर, Android-24 के लिए अपडेट कर दिए गए हैं.
एनडीके
  • हमने Armeabi-v7a-हार्ड एबीआई का समर्थन हटा दिया. ज़्यादा जानकारी के लिए, इसे देखें ज़्यादा जानकारी.
  • प्री-जीबी प्लैटफ़ॉर्म लेवल के लिए, सभी सिस्टम हटाए गए. हमने r11 में उनके लिए सहायता बंद कर दी, लेकिन वाकई में उन्हें हटाने के लिए नज़रअंदाज़ किया.
  • ARM32 पर, c++_shared का इस्तेमाल करते समय अपवादों को मैनेज करना अब ज़्यादातर काम करता है. फ़ुर्सत के पलों में libc++ के बजाय हर लिंक किए गए ऑब्जेक्ट में लिंक की जानी चाहिए. इसके बारे में ज़्यादा जानकारी पाने के लिए, इस अपवाद को हैंडल करने के दौरान, देखें आम समस्याएं.
  • डिफ़ॉल्ट कंपाइलर फ़्लैग काट दिए गए हैं. (समस्या 27).
  • स्टैंडअलोन टूलचेन में Python से काम करने का तरीका जोड़ा गया: build/tools/make_standalone_toolchain.py.
    • Windows इस्तेमाल करने वाले लोगों को अब इस सुविधा का इस्तेमाल करने के लिए सिगविन की ज़रूरत नहीं होगी.
    • हम r13 में बैश फ़्लेवर हटा रहे हैं. इसलिए, अभी नया फ़्लेवर टेस्ट करें.
  • -fno-limit-debug-info को Clang डीबग बिल्ड के लिए डिफ़ॉल्ट रूप से चालू कर दिया गया है. इस बदलाव से एलएलडीबी के साथ डीबग करने की क्षमता बेहतर होनी चाहिए.
  • --build-id अब डिफ़ॉल्ट रूप से चालू है.
    • बिल्ड आईडी अब नेटिव क्रैश रिपोर्ट में दिखेगा, ताकि आपको आसानी से पहचान करें कि आपके कोड का कौनसा वर्शन चल रहा था.
  • NDK_USE_CYGPATH से अब libgcc में कोई समस्या नहीं होनी चाहिए. (Android समस्या 195486)
  • -Wl, --warn-shared-textrel, और -Wl,--fatal-warnings विकल्प अब डिफ़ॉल्ट रूप से चालू हो जाते हैं. अगर आपने टेक्स्ट की जगह की जानकारी शेयर की है, तो आपका ऐप्लिकेशन ये काम नहीं कर सकता को Android 6.0 (एपीआई लेवल 23) या उसके बाद के वर्शन पर लोड करना हो. इसके लिए कभी भी टेक्स्ट जगह बदलने की अनुमति नहीं दी गई 64-बिट वाले ऐप्लिकेशन.
  • पहले से कंपाइल किए गए हेडर बेहतर काम करने चाहिए. (समस्या 14 और समस्या 16)
  • ऐक्सेस नहीं की जा सकने वाली (नॉन-थंब) एसटीएल लाइब्रेरी हटाई गईं.
  • Android-24 में Vulkan की सुविधा जोड़ी गई.
  • कोरियोग्राफ़र एपीआई को Android-24 में जोड़ा गया.
  • libcamera2 एपीआई को उन डिवाइसों के लिए जोड़ा गया जिनमें ये शामिल हैं INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED या इससे ज़्यादा. ज़्यादा जानकारी के लिए, यह देखें कैमरे की विशेषताएं.
क्लैंग
  • Clang को 3.8svn (r256229, बिल्ड 2812033) में अपडेट कर दिया गया है.
    • clang.exe और clang++.exe की 32-बिट में एक्ज़ीक्यूटेबल Windows पैकेज असल में 64-बिट का होता है. एक्ज़ीक्यूटेबल 32-बिट को नाम दिया गया clang_32.exe.
  • __thread को इस बार रीयल टाइम में काम करना चाहिए.
जीसीसी
  • ChromeOS GCC @ google/gcc-4_9 r227810 के साथ सिंक किया गया.
  • ToT (r231296) से मिला, बैकपोर्ट किया गया सैनिटाइज़र पैच.
  • ifuncs को इस्तेमाल न करने के लिए, लिबाटॉमिक को ठीक किया गया है. (समस्या 31)
बिनुटल
  • "Erratum 843419 मिला और ठीक किया गया" जानकारी वाले मैसेज की आवाज़ बंद कर दी गई.
  • अंदरूनी लिंकर की गड़बड़ी को ठीक करने के लिए --long-plt विकल्प लॉन्च किया गया. यह गड़बड़ी तब होती है, जब बहुत बड़ी आर्म32 बाइनरी लिंक कर रही हूँ.
  • AArch64 के लिए, रन टाइम के गलत स्टब को ठीक किया गया है. इसकी वजह से जंप पतों की गिनती की जा रही थी का इस्तेमाल बहुत बड़े डीएसओ के लिए नहीं किया जा सकता.
  • डिफ़ॉल्ट विकल्प --no-apply-dynamic पेश किया गया ताकि Android के पुराने वर्शन में डाइनैमिक लिंकर की गड़बड़ी ठीक की जा सके.
  • dynamic_cast के लिए NDK r11 KI, Clang के साथ काम नहीं करता है. हमने x86, stlport_static, और ऑप्टिमाइज़ेशन.
जीडीबी
  • GDB 7.11 पर अपडेट किया गया. ज़्यादा जानकारी के लिए, देखें GDB News पेज.
  • ndk-gdb.py के लिए कुछ बग समाधान.
आम समस्याएं
  • x86 ASAN अब भी काम नहीं कर रहा है. ज़्यादा जानकारी के लिए, यहां दी गई चर्चा देखें इस बदलाव सूची में बताया गया है.
  • c++_shared का इस्तेमाल करने पर, अपवाद के तौर पर वापस आने की सुविधा ARM के लिए अब भी काम नहीं करती Android 2.3 (एपीआई लेवल 9) या Android 4.0 (एपीआई लेवल 14) पर.
  • Android 6.0 (एपीआई लेवल 23) और Android 7.0 (एपीआई लेवल 24) के लिए बायोनिक हेडर और लाइब्रेरी android-24 मौजूद होने के बावजूद अभी तक एक्सपोज़र नहीं है. वे प्लैटफ़ॉर्म, अब भी Android 5.0 (एपीआई लेवल 21) के हेडर और लाइब्रेरी हैं (r11 से रिग्रेशन नहीं).
  • RenderScript टूल मौजूद नहीं है (r11 से रिग्रेशन नहीं है). (समस्या 7)
  • इस बदलाव लॉग का मकसद, सभी बकाया गड़बड़ियों की पूरी सूची नहीं बनाना है.
डाउनलोड किए गए वीडियो
  • इस रिलीज़ के डाउनलोड यहां संग्रहित किए जाते हैं.
सूचनाएं
  • ndk-build कमांड, डिफ़ॉल्ट रूप से अपनी आने वाली रिलीज़ में क्लैंग करें. बाद में रिलीज़ होने वाली रिलीज़ में जीसीसी को हटा दिया जाएगा.
  • make-standalone-toolchain.sh स्क्रिप्ट हटा दी जाएगी का इस्तेमाल किया जा सकता है. यदि आप इस स्क्रिप्ट का उपयोग करते है, तो कृपया make_standalone_toolchain.py जल्द से जल्द.
एनडीके
  • Armeabi-v7a-हार्ड एबीआई के लिए सहायता हटा दी गई. ज़्यादा जानकारी के लिए, दस्तावेज़ में दिया गया है.
  • Android 2.3 (एपीआई लेवल 9) से पहले के प्लैटफ़ॉर्म लेवल के लिए, सभी सिस्टम हटाए गए. हमने एनडीके r11 में उनके लिए सहायता देना बंद कर दिया, लेकिन वहां से उन्हें हटाया नहीं गया.
  • ARM32 पर c++_shared का इस्तेमाल करते समय अपवाद हैंडलिंग को अपडेट किया गया, ताकि यह ज़्यादातर काम करती है (पहले से मालूम समस्याएं देखें). द अनविंडर अब उसे libc++ के बजाय हर लिंक किए गए ऑब्जेक्ट से लिंक किया गया है.
  • डिफ़ॉल्ट कंपाइलर फ़्लैग (NDK समस्या 27) को काट दिया गया है. आप देख सकते हैं बदलाव 207721 में, इस अपडेट की जानकारी देखें.
  • build/tools/make_standalone_toolchain.py में स्टैंडअलोन टूलचेन के लिए, Python से लागू किया गया तरीका जोड़ा गया. Windows पर, अब इस सुविधा का इस्तेमाल करने के लिए सिगविन की ज़रूरत होगी. ध्यान दें कि बैश फ़्लेवर को हटा दिया जाएगा इसलिए, कृपया नई रिलीज़ को अभी टेस्ट करें.
  • -fno-limit-debug-info को शामिल करने के लिए, कॉन्फ़िगर किया गया Clang डीबग बिल्ड विकल्प डिफ़ॉल्ट रूप से चालू होता है. इस बदलाव से, एलएलडीबी के साथ बेहतर तरीके से डीबग करने की सुविधा चालू होती है.
  • --build-id को डिफ़ॉल्ट विकल्प के तौर पर चालू किया गया. यह विकल्प इससे नेटिव क्रैश रिपोर्ट में आइडेंटिफ़ायर दिखता है, ताकि पहचान करें कि आपके कोड का कौनसा वर्शन चल रहा था.
  • NDK_USE_CYGPATH से जुड़ी समस्या को ठीक कर दिया गया है, ताकि अब यह समस्या न हो libgcc में समस्याएँ (समस्याएं 195486).
  • इन विकल्पों को डिफ़ॉल्ट के तौर पर चालू किया गया: -Wl,--warn-shared-textrel और -Wl,--fatal-warnings. अगर आपने टेक्स्ट की जगह बदल दी है, तो आपका ऐप्लिकेशन Android 6.0 पर लोड नहीं होता है (एपीआई लेवल 23) और उसके बाद वाले वर्शन. ध्यान दें कि यह कॉन्फ़िगरेशन 64-बिट वाले ऐप्लिकेशन के लिए अनुमति है.
  • कुछ समस्याओं को ठीक किया गया, ताकि पहले से कंपाइल किए गए हेडर बेहतर तरीके से काम करें (NDK समस्या 14, एनडीके समस्या 16).
  • ऐक्सेस नहीं की जा सकने वाली (नॉन-थंब) एसटीएल लाइब्रेरी हटाई गईं.
  • Android-24 में Vulkan की सुविधा जोड़ी गई.
  • कोरियोग्राफ़र एपीआई को Android-24 में जोड़ा गया.
  • उन डिवाइसों के लिए libcamera2 API जोड़ा गया जो INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED सुविधा का लेवल या उससे ऊपर का लेवल. ज़्यादा जानकारी के लिए, देखें CameraCharacteristics रेफ़रंस.
क्लैंग
  • Clang को 3.8svn (r256229, बिल्ड 2812033) में अपडेट कर दिया गया है. clang.exe और 32-बिट Windows पैकेज में clang++.exe की एक्ज़ीक्यूटेबल फ़ाइल, असल में 64-बिट होती है. कॉन्टेंट बनाने 32-बिट एक्ज़ीक्यूटेबल के लिए इसका नाम clang_32.exe है.
  • __thread को ठीक किया गया, ताकि यह इस बार रीयल-टाइम में काम करे.
जीसीसी
  • कंपाइलर को ChromeOS GCC @ google/gcc-4_9 r227810 के साथ सिंक किया गया.
  • ToT (r231296) से मिला, बैकपोर्ट किया गया सैनिटाइज़र पैच.
  • अगर हां, तो libatomic को ठीक किया गया है, ताकि इसे इस्तेमाल न किया जा सके (NDK समस्या 31).
बिनुटल
  • "Erratum 843419 का पता लगा और ठीक किया गया" सूचना की आवाज़ बंद कर दी गई जानकारी संदेश.
  • अंदरूनी लिंक करने वाले टैग की गड़बड़ी को ठीक करने के लिए, --long-plt विकल्प लॉन्च किया गया बहुत बड़ी आर्म32 बाइनरी लिंक करते समय.
  • AArch64 के लिए गलत रनटाइम स्टब को ठीक किया गया. यह समस्या थी जिसके कारण जंप पतों की गलत गणना हो रही है डाइनैमिक शेयर ऑब्जेक्ट (डीएसओ).
  • काम करने के लिए, डिफ़ॉल्ट विकल्प --no-apply-dynamic उपलब्ध कराया गया Android के पिछले वर्शन में रिलीज़ के लिए एक डाइनैमिक लिंकर गड़बड़ी.
  • NDK r11 की उस समस्या को ठीक कर दिया गया है जिसके बारे में हमें पता है कि उसमें dynamic_cast नहीं था Clang, x86, stlport_static और ऑप्टिमाइज़ेशन के साथ काम कर रहे हैं.
जीडीबी
  • GDB वर्शन 7.11 में अपडेट किया गया. इस रिलीज़ के बारे में ज़्यादा जानकारी के लिए, यह देखें जीडीबी न्यूज़.
  • ndk-gdb.py स्क्रिप्ट में कई गड़बड़ियां ठीक की गईं.
आम समस्याएं
  • x86 पता फ़िलहाल, सैनिटाइज़र (ASAN) काम नहीं कर रहा है. ज़्यादा जानकारी के लिए, यह देखें समस्या 186276.
  • c++_shared के साथ आराम करने से जुड़े अपवाद, ARM के लिए काम नहीं करते Android 2.3 (एपीआई लेवल 9) या Android 4.0 (एपीआई लेवल 14).
  • Android 6.0 (एपीआई लेवल 23) और इसके बाद के वर्शन के लिए बायोनिक हेडर और लाइब्रेरी android-24 मौजूद होने के बावजूद अभी तक एक्सपोज़र नहीं है. वे प्लैटफ़ॉर्म ऐप्लिकेशन में Android 5.0 (एपीआई लेवल 21) के हेडर और लाइब्रेरी हों NDK r11 के साथ.
  • RenderScript टूल मौजूद नहीं है, जो एनडीके r11. (NDK समस्या 7)
  • NdkCameraMetadataTags.h हेडर फ़ाइल में, कैमरे का मेटाडेटा टैग वाली सूची में शामिल वैल्यू ACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAP गलती से सूची में शामिल हो गया था और इसे अगली रिलीज़ में हटा दिया जाएगा. इस्तेमाल की जाने वाली चीज़ें ACAMERA_STATISTICS_LENS_SHADING_MAP वैल्यू का इस्तेमाल करें.
बदलाव
  • ndk-gdb.py स्क्रिप्ट में अतिरिक्त सुधार लागू किए गए.
  • ndk-gdb में वैकल्पिक पैकेज नाम वाला आर्ग्युमेंट जोड़ा गया आदेश --attach विकल्प. (समस्या 13)
  • Windows के 32-बिट प्लैटफ़ॉर्म के लिए, अमान्य टूलचेन पाथ को ठीक किया गया. (समस्या 45)
  • ndk-which कमांड के लिए रिलेटिव पाथ को ठीक किया गया. (समस्या 29)
  • libgcc कंपाइलर के लिए, सिगपाथ के इस्तेमाल को ठीक किया गया. (Android का समस्या 195486)
एनडीके
  • ज़रूरी सूचना
  • बदलाव
    • ndk-gdb.py की समस्या ठीक कर दी गई है. इसमें था पूरी तरह से वापस लिया गया r11 में.
    • Mac के लिए ndk-gdb ठीक कर दी गई है.
    • कमांड-लाइन टूल के लिए, टॉप लेवल के और शॉर्टकट जोड़े गए:
      • ndk-depends.
      • ndk-gdb.
      • ndk-stack.
      • ndk-which. यह निर्देश पिछले निर्देश से पूरी तरह से मौजूद नहीं था रिलीज़.
    • libc++ के लिए स्टैंडअलोन टूलचेन ठीक किए गए, जो मौजूद नहीं थे __cxxabi_config.h.
    • इसमें --toolchain के लिए हल किए गए सहायता दस्तावेज़ make-standalone-toolchain.sh.
क्लैंग
  • गलतियां
    • r11 रिलीज़ नोट में हमने जो जानकारी दी है उसके उलट, __thread काम नहीं करता. ऐसा इसलिए है, क्योंकि हम Clang के जिस वर्शन को भेजते हैं उसमें गड़बड़ी ठीक नहीं की गई है सिम्युलेटेड TLS समर्थन.
क्लैंग
  • ज़रूरी सूचना
    • हमारा सुझाव है कि आप Clang पर स्विच करें.
      • अगर आपको Clang का इस्तेमाल करने में समस्या आ रही है, तो गड़बड़ियों की शिकायत करें समस्याओं के लिए यहां जाएं खास तौर पर, एनडीके में क्लैंग के लिए. Clang से जुड़ी सामान्य समस्याओं के लिए, दिए गए निर्देशों का पालन करके, गड़बड़ियां दर्ज करें यह पेज देखें.
    • Clang को 3.8svn (r243773, बिल्ड 2481030) में अपडेट कर दिया गया है.
      • यह वर्शन पूरी तरह अपस्ट्रीम क्लैंग है.
      • Windows 64-बिट डाउनलोड किए जा सकने वाले NDK पैकेज में, 32-बिट होता है Clang का वर्शन है.
  • अनुवृद्धियां
    • Clang, अब एम्युलेट की गई TLS की सुविधा के साथ काम करती है.
      • कंपाइलर अब एम्युलेट करके, __thread का इस्तेमाल करता है पीथ्रेड थ्रेड के डेटा के साथ ईएलएफ़ TLS.
      • C++11 thread_local कुछ मामलों में काम करता है. हालांकि, यह काम नहीं करता के डेटा के लिए डिज़ाइन किया गया है, क्योंकि को libc से सहायता चाहिए. यह सीमा लागू नहीं होती है को Android 6.0 (एपीआई लेवल 23) या इसके बाद के वर्शन पर इस्तेमाल करते समय लागू करना होगा.
      • एम्युलेट किया गया TLS, Arc64 के साथ तब काम नहीं करता, जब TLS वैरिएबल को शेयर की गई लाइब्रेरी से ऐक्सेस किया जाता है.
जीसीसी
  • ज़रूरी सूचना
    • एनडीके में जीसीसी की जगह अब Clang का इस्तेमाल किया जा रहा है.
      • NDK, न तो 5.x पर अपग्रेड करेगा और न ही उसे स्वीकार करेगा ग़ैर-ज़रूरी बैकपोर्ट.
      • मिसकंपाइल और इंटरनल कंपाइलर की गड़बड़ियों का रखरखाव में, 4.9 वर्शन को अलग-अलग मामलों के हिसाब से हैंडल किया जाएगा.
  • हटाना
    • GCC 4.8 हटाया गया. सभी टारगेट अब GCC 4.9 का इस्तेमाल कर रहे हैं.
  • अन्य बदलाव
    • google/gcc-4_9 को r224707 से सिंक किया गया. पहले, यह r214835 के साथ सिंक किया गया है.
एनडीके
  • ज़रूरी सूचना
    • ये सैंपल अब NDK पैकेज में शामिल नहीं हैं. इसके बजाय, ये इन पर उपलब्ध हैं GitHub.
    • यह दस्तावेज़ अब NDK पैकेज में शामिल नहीं है. इसके बजाय, यह Android डेवलपर वेबसाइट पर जाएं.
  • अनुवृद्धियां
    • android-23 में नेटिव ट्रेसिंग एपीआई जोड़ा गया.
    • android-23 में नेटिव मल्टीनेटवर्क एपीआई जोड़ा गया.
    • वर्शन वाले सिंबल उपलब्ध कराने के लिए libc, m, और dl चालू है, जो शुरू होते हैं इसे एपीआई लेवल 21 से लिया गया है.
    • एपीआई लेवल N में Vulkan हेडर और लाइब्रेरी जोड़ी गई.
  • हटाना
    • _WCHAR_IS_8BIT के लिए सहायता हटाई गई.
    • सेड हटाया गया.
    • mclinker हटाया गया.
    • हटाया गया पर्ल.
    • NDK libc, m, और dl के सभी वर्शन से हटाया गया, जिसमें इन लाइब्रेरी के प्लैटफ़ॉर्म वर्शन का इस्तेमाल नहीं किया जा सकता.
    • mips64r2 के लिए पूरी तरह से काम करने की सुविधा कुछ हद तक हटा दी गई है. बाकी स्क्रीनशॉट हटा दिए जाएंगे आने वाले समय में.
  • अन्य बदलाव
    • ARM स्टैंडअलोन टूलचेन को डिफ़ॉल्ट रूप से आर्म7 में बदला गया.
      • आप armv5te-linux-androideabi के तौर पर -target विकल्प.
    • प्लैटफ़ॉर्म के लिए -isystem का इस्तेमाल करने के लिए बिल्ड सिस्टम बदला गया शामिल हैं.
      • चेतावनियां, जिनमें यह बताया गया है कि बायोनिक वजह से ऐप्लिकेशन के बिल्ड पर कोई असर नहीं पड़ता.
    • बाइनरी द्वारा अपवाद दिए जाने पर होने वाले सेगफ़ॉल्ट को ठीक किया गया gabi++ के ज़रिए देखें. (समस्या 179410)
    • libc++ के इनलाइन नेमस्पेस को std::__ndk1 में बदला गया का इस्तेमाल करें.
    • सभी libc++ लाइब्रेरी को अब libc+abi की मदद से बनाया गया है.
    • डिफ़ॉल्ट APP_PLATFORM को Gingerbread पर बंप किया गया.
      • Froyo और इससे पुराने लोगों के लिए सहायता की अपेक्षा करना आने वाले समय में लॉन्च किया जा सकता है.
  • 64 बिट के लिए gabi++ _Unwind_Exception स्ट्रक्चर को अपडेट किया गया.
  • सीपीयू की सुविधाओं में ये सुविधाएं जोड़ी गईं:
    • SSE4.1 और SSE4.2 का पता लगाएं.
    • x86_64 पर सीपीयू की सुविधाओं का पता लगाएं.
  • libc++abi को अपस्ट्रीम में अपडेट किया गया r231075.
  • अपडेट किया गया byteswap.h, endian.h, sys/procfs.h, sys/ucontext.h, sys/user.h, और uchar.h से ToT बायोनिक.
  • sys/cdefs.h को सभी एपीआई लेवल पर सिंक किया गया.
  • ग्रुप के लिए, fegetenv and fesetenv तय किया गया.
  • mips64 के लिए, एंड पॉइंटर का साइज़/crtend_* का अलाइनमेंट ठीक किया गया और x86_64.
बिनुटल
  • अनुवृद्धियां
    • एक नया विकल्प जोड़ा गया: --pic-veneer.
  • हटाना
    • 32-बिट Windows पैकेज में अब ld.gold नहीं है. इसके बजाय, आप 64-बिट Windows पैकेज से ld.gold ले सकते हैं.
  • बदलाव
    • Android और ChromiumOS के बीच, यूनिफ़ाइड binutils सोर्स. इस बदलाव के बारे में ज़्यादा जानकारी के लिए, टिप्पणियां देखें यहां जाएं.
    • Aआर्क64 के लिए गोल्ड की अब ज़्यादा विश्वसनीयता. इस्तेमाल की जाने वाली चीज़ें बीएफ़डी की जगह गोल्ड का इस्तेमाल करने के लिए, लिंक टाइम पर -fuse-ld=gold. अगली रिलीज़ में डिफ़ॉल्ट सेटिंग को स्विच किया जा सकता है.
    • गोल्ड ARM बैक एंड के लिए, बड़ी बाइनरी फ़ाइल को लिंक करने में लगने वाला समय बेहतर हुआ (डीबग करने लायक Chrome ब्राउज़र के लिए, लिंक करने के समय में 50% तक की कमी).
जीडीबी
  • हटाना
    • ndk-gdb.py के पक्ष में ndk-gdb को निकाला गया.
  • बदलाव
    • gdb को वर्शन 7.10 में अपडेट किया गया.
    • बेहतर परफ़ॉर्मेंस.
    • गड़बड़ी के मैसेज को बेहतर बनाया गया.
    • मिलते-जुलते प्रोजेक्ट के तय पाथ.
    • Ctrl-C को बैकग्राउंड वाले gdbserver को बंद करने से रोका गया.
    • बेहतर Windows समर्थन.
यश
  • बदलाव
    • YASM को 1.3.0 वर्शन पर अपडेट किया गया.
पहले से मालूम समस्याएं
  • फ़िलहाल, x86 ASAN काम नहीं कर रहा है. ज़्यादा जानकारी के लिए, देखें चर्चा यहां जाएं.
  • Clang, x86, stlport_static, और ऑप्टिमाइज़ेशन का कॉम्बिनेशन -O0 से ज़्यादा स्तर होने पर, इसके साथ परीक्षण विफल हो जाता है dynamic_cast. ज़्यादा जानकारी के लिए, टिप्पणियां देखें यहां पढ़ें.
  • ARM32 पर, c++_shared का इस्तेमाल करने पर, अपवाद को अक्सर मैनेज नहीं किया जा सकता. रूट वजह, एलएलवीएम अनविंडर के बीच सही नहीं है, जिसका इस्तेमाल libc++abi करता है ARM32 और libgcc के लिए. इस व्यवहार को r10e से मिला रिग्रेशन नहीं माना जाता.
डाउनलोड किए गए वीडियो
  • इस रिलीज़ के डाउनलोड यहां संग्रहित किए जाते हैं.
ज़रूरी बदलाव:
  • इसमें Cortex-A53 Erratum 843419 के लिए समाधान को aarch64-linux-android-4.9 लिंकर. इस समाधान के बारे में अधिक जानकारी के लिए, देखें Cortex-a53 के लिए समाधान erratum 843419.
  • Clang 3.6 जोड़ा गया; NDK_TOOLCHAIN_VERSION=clang अब वह वर्शन चुनता है डिफ़ॉल्ट रूप से.
  • Clang 3.4 हटाया गया.
  • GCC 4.6 को हटाया गया.
  • सभी आर्किटेक्चर के लिए, ld.gold में मल्टीथ्रेडिंग की सुविधा लागू की गई है. यह काम कर सकता है अब मल्टीथ्रेडिंग के लिए, सहायता के साथ या उसके बिना लिंक करें; डिफ़ॉल्ट तौर पर, यह काम बिना किए ही किया जाता है.
    • एक से ज़्यादा थ्रेड की मदद से इकट्ठा करने के लिए, --threads विकल्प का इस्तेमाल करें.
    • मल्टीथ्रेड के बिना कंपाइल करने के लिए, --no-threads विकल्प का इस्तेमाल करें.
  • सभी आर्किटेक्चर के लिए, GDB/gdbserver को 7.7 पर अपग्रेड किया गया.
  • 32-बिट डार्विन के लिए NDK पैकेज हटाया गया.
अहम गड़बड़ियां ठीक की गईं:
  • मुख्य थ्रेड के बाहर OpenMP लूप होने पर होने वाले क्रैश को ठीक किया गया.
  • उपयोगकर्ता के एलान किए जाने पर, GCC 4.9 इंटरनल कंपाइलर गड़बड़ी (ICE) ठीक की गई #pragma GCC optimize ("O0"), लेकिन ऑप्टिमाइज़ेशन का एक अलग लेवल तय किया गया था डालें. pragma को प्राथमिकता दी जाती है.
  • नीचे दिए गए गड़बड़ी के मैसेज के साथ क्रैश होने वाली गड़बड़ी को ठीक किया गया:
    in add_stores, at var-tracking.c:6000
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • Clang 3.5 की समस्या को हल करने का तरीका लागू किया गया, जिसमें एलएलवीएम के लिए अपने-आप वेक्टराइज़ेशन की सुविधा उपलब्ध है llvm.cttz.v2i64() जनरेट करता है. यह एक ऐसा निर्देश है जो ARM में मौजूद नहीं है निर्देश सेट होता है.
अन्य गड़बड़ियां ठीक की गईं:
  • ये हेडर और लाइब्रेरी सुधार किए गए:
    • media/NdkMediaDrm.h में PROPERTY_* को ठीक किया गया.
    • mips64 के लिए sys/ucontext.h को ठीक किया गया.
    • __builtin_isnan के लिए Clang वर्शन की जांच हटाई गई और __builtin_isinf.
    • android-21/arch-mips/usr/include/asm/reg.h को जोड़ा गया और android-21/arch-mips64/usr/include/asm/reg.h.
  • एक नकली अरे-बाउंड चेतावनी को ठीक किया गया, जिसमें बताया गया था कि x86 के लिए GCC 4.9 वर्शन बना है और अरे बाउंड वाली चेतावनी भेज रहा है. इसमें बताया गया है कि GCC 4.9 ने ARM के लिए ऐसा किया था. ARM के लिए चेतावनी में जिन्हें पहले बिना किसी शर्त के बंद किया गया था.
  • लिखने लायक बनाने के लिए, mips और mips64 के लिए Clang 3.5 को ठीक किया गया है .gcc_except_table सेक्शन में इस तरह जीसीसी के तरीके काम कर रहे हैं. इस बदलाव के बाद, आपको ये सुविधाएं मिलती हैं लिंकर चेतावनी से बचने के लिए:
    .../ld: warning: creating a DT_TEXTREL in a shared object
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • Clang की वजह से क्रैश होने वाली compiler-rt समस्याओं को ठीक करने का बैकपोर्ट किया गया mips64 के लिए कंपाइल किया गया. ज़्यादा जानकारी के लिए, एलएलवीएम से जुड़ी समस्या देखें 20098.
  • बिना ASCII वाली टिप्पणियों पर होने वाले Clang 3.5 क्रैश को ठीक किया गया है. (समस्या 81440)
  • -1 और 1 वापस लौटाने के लिए stlport collate::compare तय की गई. पहले, उसमें मनचाहे तरीके से हस्ताक्षर किए गए नंबर मिले थे.
  • 64-बिट एबीआई के लिए ndk-gdb को ठीक किया गया. (समस्या 1,18,300)
  • उस क्रैश को ठीक किया गया जिससे RenderScript के लिए HelloComputeNDK सैंपल जनरेट हो रहा था Android 4.4 (Android एपीआई लेवल 19). ज़्यादा जानकारी के लिए, यह देखें यह पेज देखें.
  • जीसीसी के लिए libc++ __wrap_iter को ठीक किया गया. ज़्यादा जानकारी के लिए, एलएलवीएम से जुड़ी समस्या देखें 22355.
  • एबीआई x86_64 के लिए, .asm सहायता ठीक की गई.
  • GCC 4.8 stlport समस्या के लिए समाधान लागू किया गया. (समस्या 127773)
  • Windows में प्रोजेक्ट पाथ से, ट्रेलिंग डायरेक्ट्री सेपरेटर \\ को हटाया गया. (समस्या 160584)
  • एक सिंगल कंपाइल करते समय हुई no rule to make target गड़बड़ी ठीक की गई gradle से ndk-build.cmd निर्देश को एक्ज़ीक्यूट करके .c फ़ाइल बनाई जा सकती है. (समस्या 66,937)
  • वे libatomic.a और libgomp.a लाइब्रेरी जोड़ी गईं जो यहां मौजूद नहीं थीं नीचे दिए गए होस्ट टूलचेन का इस्तेमाल करते हैं:
    • aarch64-linux-android-4.9
    • mips64el-linux-android-4.9
    • mipsel-linux-android-4.9
    • x86_64-4.9
अन्य बदलाव:
  • aarch64 के लिए ld.gold जोड़ा गया. डिफ़ॉल्ट लिंकर ld.bfd ही रहेगा. ld.gold को साफ़ तौर पर चालू करने के लिए, -fuse-ld=gold को LOCAL_LDFLAGS या APP_LDFLAGS वैरिएबल.
  • binutils-2.25 के साथ MIPS और MIPS64 टूलचेन बनाई. यह बेहतर बनाने में मदद करती है R6 सहायता.
  • -fstandalone-debug (डीबग की पूरी जानकारी) को Clang के लिए डिफ़ॉल्ट विकल्प बनाया गया.
  • इसके लिए -fstack-protector को -fstack-protector-strong से बदला गया GCC 4.9, Clang 3.5, और Clang 3.6.
  • बिल्ड को अनुमति देने के लिए, --package कमांड-लाइन स्विच को ndk-gdb में जोड़ा गया सिस्टम का इस्तेमाल करें. (समस्या 56,189)
  • MIPS के लिए -mno-ldc1-stc1 अब काम नहीं करता. यह विकल्प शायद नए -fpxx और -mno-odd-spreg विकल्प या FPXX ABI के साथ.
  • cpu-features में MIPS MSA और R6 की पहचान जोड़ी गई.
ज़रूरी बदलाव:
  • GCC 4.8 को सभी 32-बिट एबीआई के लिए डिफ़ॉल्ट बनाया गया है. अब काम नहीं करने वाले GCC 4.6 वर्शन और इसे अगली रिलीज़ में हटा दिया जाएगा. पिछली कार्रवाई को पहले जैसा करने के लिए, इनमें से किसी एक को जोड़ें ndk-build के लिए NDK_TOOLCHAIN_VERSION=4.6 या लागू करते समय --toolchain=arm-linux-androideabi-4.6 जोड़ें make-standalone-toolchain.sh. GCC 4.9 अब भी 64-बिट एबीआई के लिए डिफ़ॉल्ट सेटिंग.
  • सभी x86[_64] टूलचेन को -mstackrealign को डिफ़ॉल्ट रूप से जोड़ने से रोका गया है. कॉन्टेंट बनाने NDK टूलचेन में, 16-बाइट का स्टैक अलाइनमेंट होता है. डिफ़ॉल्ट रूप से इस्तेमाल किए जाने वाले टूल और विकल्प इस नियम को लागू करें. असेंबली कोड लिखने वाले उपयोगकर्ता को यह पक्का करना चाहिए कि स्टैक को सुरक्षित रखा जाए मिलान करके सुनिश्चित करें कि अन्य कंपाइलर भी इस नियम का अनुपालन करते हैं. (जीसीसी की गड़बड़ी 38496)
  • ARM और x86 एबीआई के साथ काम करने वाले Clang 3.5 में, अड्रेस सैनिटाइज़र की सुविधा जोड़ी गई. इस बदलाव के बारे में ज़्यादा जानकारी के लिए, यह देखें पता सैनिटाइज़र प्रोजेक्ट.
  • एपीआई लेवल 21 से लेकर -fPIE -pie का इस्तेमाल करने की ज़रूरी शर्त के बारे में बताया गया है. एपीआई लेवल 16 और उसके बाद के लेवल में, ndk-build, PIE का इस्तेमाल करता है इस्तेमाल करते हैं. इस परिवर्तन के कई परिणाम हो सकते हैं, जिनकी चर्चा डेवलपर प्रीव्यू की समस्या 888. ये सीमाएं शेयर की गई लाइब्रेरी पर लागू नहीं होती हैं.
अहम गड़बड़ियां ठीक की गईं:
  • इससे जुड़ी और समस्याएं ठीक की गईं a Arc64-linux-android-4.9 लिंकर में, A53 गड़बड़ी #835769. इसके तहत, जीसीसी नया विकल्प --fix-cortex-a53-835769 पास करता है, जब -mfix-cortex-a53-835769 (डिफ़ॉल्ट रूप से चालू) तय किया गया है. ज़्यादा जानकारी के लिए, यह देखें binutils मैसेज और इस binutils मैसेज.
  • एपीआई लेवल में होने वाले libc++ sscanf/vsscanf हैंग में हुए सुधार का दस्तावेज़ दर्ज किया गया 21. इस समस्या को r10c में भी लागू कर दिया गया था. (समस्या 77988)
  • GCC 4.9 के साथ हुए AutoFDO (-fauto-profile) के क्रैश को ठीक किया गया -Os तय किया गया था. (समस्या 77571)
अन्य गड़बड़ियां ठीक की गईं:
  • ये हेडर और लाइब्रेरी सुधार किए गए:
    • posix_memalign को एपीआई लेवल 16 में जोड़ा गया. साथ ही, इसमें एक प्रोटोटाइप जोड़ा stdlib.h से एपीआई लेवल 16 से 19 तक. (समस्या 77861)
    • stdatomic.h को ठीक किया गया, ताकि इसमें सिर्फ़ <atomic> को शामिल किया जा सके C++11.
    • अलग से इस्तेमाल करने के लिए, इन हेडर में बदलाव किया गया: sys/user.h, और gl2ext.h, dlext.h, fts.h, और sgidefs.h एपीआई लेवल 21 के लिए.
    • mxcsr_mask का नाम बदलकर mxcr_mask करने के लिए, sys/user.h को बदला गया, और u_ar0 का डेटा टाइप बदलने के लिए
    • unsigned long की ओर से का इस्तेमाल करें.
    • sysconf() रिटर्न वैल्यू टाइप को int से बदलकर किया गया long.
  • LOCAL_ARM_MODE के लिए ndk-build की thumb की हैंडलिंग ठीक की गई: इसमें r10d, ndk-build डिफ़ॉल्ट रूप से LOCAL_LDFLAGS+=-mthumb को जोड़ता है, जब तक कि ये शर्तें लागू होती हैं:
    • आपने LOCAL_ARM_MODE को arm के बराबर सेट किया है.
    • आप एक डीबग बिल्ड कर रहे हैं (APP_OPTIM=debug और AndroidManifest.xml में android:debuggable="true" शामिल है), इसमें ARM मोड डिफ़ॉल्ट रूप से सेट होता है, ताकि पिछले टूलचेन के साथ काम किया जा सके. (समस्या 74040)
  • Windows के ऐब्सलूट पाथ का इस्तेमाल करने के लिए, ndk-build में LOCAL_SRC_FILES को ठीक किया गया. (समस्या 74333)
  • ndk-gdb से bash से जुड़ा खास कोड हटाया गया. (समस्या 73338)
  • बैश से जुड़े खास कोड को make-standalone-toolchain.sh से हटाया गया. (समस्या 74145)
  • System.loadLibrary() ट्रांज़िटिव की समस्या को ठीक करने से जुड़े अपडेट किए गए दस्तावेज़ निर्भरता. (समस्या 41790)
  • उस समस्या को ठीक कर दिया गया है जो 64-बिट पैकेज को Ubuntu 14.04 पर एक्सट्रैक्ट करने से रोक रही थी और OS X 10.10 (Yosemite). (समस्या 78148)
  • LOCAL_PCH से जुड़ी समस्या ठीक की गई, ताकि Clang के साथ काम करने की सुविधा को बेहतर बनाया जा सके. (समस्या 77575)
  • " एक्ज़ीक्यूटेबल स्टैक की ज़रूरत है" की साफ़ तौर पर जानकारी ld.gold से मिली चेतावनी. (समस्या 79115)
ज़रूरी बदलाव:
  • डाउनलोड स्ट्रक्चर में ये बदलाव किए गए:
    • हर पैकेज में अब 32- और 64-बिट दोनों हेडर, लाइब्रेरी, और एक प्लैटफ़ॉर्म है.
    • डीबग करने की जानकारी वाली एसटीएल लाइब्रेरी को अलग से डाउनलोड करने की ज़रूरत नहीं होती.
  • Android-L नाम से मौजूद हर सुविधा को आधिकारिक रिलीज़ में बदल दिया गया है पद: android-21.
  • google की ब्रांच को फिर से सबमिट करके, जीसीसी 4.9 को अपडेट किया गया . GCC 4.9 के अपस्ट्रीम वर्शन से मुख्य अंतर ये हैं:
    • -O2 विकल्प अब वेक्टराइज़ेशन चालू करता है, लेकिन लूप पील नहीं होता. हालांकि, अन्य विकल्पों के साथ और उनका विरोध करना.
    • FDO और में वृद्धियां लीपो
    • ज़्यादा जानकारी के लिए, नीचे दी गई अहम गड़बड़ियां ठीक करना देखें.

  • सभी होस्ट के लिए, Clang 3.5 की सुविधा जोड़ी गई: NDK_TOOLCHAIN_VERSION=clang अब Clang 3.5 को चुनता है. ध्यान दें:
    • ARM और x86, डिफ़ॉल्ट तौर पर इंटिग्रेट किए गए असेंबलर का इस्तेमाल करते हैं. अगर इस वजह से समस्याएं होती हैं, तो -fno-integrated-as का इस्तेमाल करें.
    • Clang 3.5, इस्तेमाल न किए गए फ़्लैग के लिए ज़्यादा चेतावनियां देता है, जैसे कि -finline-functions जिस विकल्प को जीसीसी के साथ काम करता है.
    • जीसीसी का इस्तेमाल करके प्रोजेक्ट से माइग्रेट करते समय, -Wno-invalid-command-line-argument और -Wno-unused-command-line-argument इस्तेमाल नहीं किए गए फ़्लैग को अनदेखा न करें.

  • इसका इस्तेमाल करके, Android 5.0 डिवाइस पर डीबग करते समय, ART डीबगिंग मोड में जाने की सुविधा जोड़ी गई है art-on विकल्प तय करके, ART को अपनी वर्चुअल मशीन के तौर पर चुनें. ज़्यादा जानकारी के लिए, एनडीके वाली डायरेक्ट्री में prebuilt/common/gdb/common.setup देखें.
  • Clang 3.3 के लिए समर्थन निकाला गया.
  • GCC 4.6 अब काम नहीं करता और इसे आने वाले समय में रिलीज़ होने वाले वर्शन से हटाया जा सकता है.
  • आइडेंटिकल कोड फ़ोल्डिंग ("आईसीएफ़") की सुविधा के साथ, mclinker को 2.8 पर अपडेट किया गया. इसका इस्तेमाल करके ICF तय करें --icf विकल्प.
  • x86 और x86_64 में arm_neon.h का बेहतर समर्थन, जिसमें से ~93% का कवरेज मिल रहा है नियॉन इंट्रिन्सिक्स. NEON से जुड़ी सहायता के बारे में ज़्यादा जानकारी के लिए:
    • एनडीके प्रोग्रामर की गाइड (docs/Programmers_Guide/html/) पर जाएं और यह देखें आर्किटेक्चर और सीपीयू > नियॉन.
    • samples/ में अपडेट किए गए hello-neon सैंपल की जांच करें.
    • ARM NEON से Intel SSE में पोर्ट करने के लिए Intel की गाइड देखें.
  • headers/libs/android-21 में _FORTIFY_SOURCE के लिए दस्तावेज़ी सहायता, जो r10 में दिखता था (जब android-21 को Android-L कहा जाता था), लेकिन उसके पास कोई दस्तावेज़ नहीं था.
अहम गड़बड़ियां ठीक की गईं:
अन्य गड़बड़ियां ठीक की गईं:
  • android-21 में ये हेडर और लाइब्रेरी सुधार किए गए:
    • और टीवी कीकोड जोड़े गए: android/keycodes.h
    • android/sensor.h में ज़्यादा कॉन्सटेंट और छह नए सेंसर फ़ंक्शन जोड़े गए: ASensorManager_getDefaultSensorEx, ASensor_getFifoMaxEventCount, ASensor_getFifoReservedEventCount, ASensor_getStringType, ASensor_getReportingMode और ASensor_isWakeUpSensor.
    • GCC 4.6 के साथ काम करने की क्षमता को बेहतर बनाने और सहायता देने के लिए stdatomic.h को ठीक किया गया <atomic> हेडर के लिए.
    • sys/ucontext.h और sys/user.h को सभी एपीआई लेवल में जोड़ा गया. कॉन्टेंट बनाने signal.h हेडर में अब <sys/ucontext.h> शामिल है. आप struct ucontext की सभी मौजूदा परिभाषा को हटाएं.
    • posix_memalign को एपीआई लेवल 17, 18, और 19 में जोड़ा गया.
    • सभी आर्किटेक्चर में ये फ़ंक्शन जोड़े गए: android_set_abort_message, posix_fadvise, posix_fadvise64, pthread_gettid_np.
    • native-media/AndroidManifest.xml में ज़रूरी अनुमतियां जोड़ दी गई हैं सैंपल. (समस्या 106640)
    • clock_nanosleep और clock_settime को एपीआई लेवल 21 में जोड़ा गया. (समस्या 77372)
    • इन सिंबल को सभी आर्किटेक्चर से हटाया गया है: get_malloc_leak_info, free_malloc_leak_info, __srget, __swbuf, __srefill, __swsetup, __sdidinit, __sflags, __sfp, __sinit, __smakebuf, __sflush, __sread, __swrite, __sseek, __sclose, _fwalk, __sglue, __get_thread, __wait4, __futex_wake, __open, __get_tls, __getdents64 और dlmalloc.
    • इन फ़ंक्शन को 64-बिट आर्किटेक्चर से हटाया गया: basename_r, dirname_r, __isthreaded, _flush_cache (mips64).
    • नीचे दिए गए फ़ंक्शन को 32-बिट आर्किटेक्चर से हटाया गया: __signalfd4.
    • इसमें तीसरे तर्क के टाइप को size_t से बदलकर int किया गया ये फ़ंक्शन: strtoll_l, strtoull_l, wcstoll_l, और wcstoull_l.
    • इन फ़ंक्शन को 64-बिट आर्किटेक्चर में वापस लाया गया: arc4random, arc4random_buf और arc4random_uniform.
    • cxa_* और new और delete ऑपरेटर को वापस लाया गया libstdc++.so तक. इस बदलाव से r9d व्यवहार पहले जैसा हो जाता है; r10 के पिछले वर्शन प्लेसहोल्डर फ़ाइलें शामिल थीं.
  • mips के लिए, GCC 4.8 और 4.9 में MXU सहायता को वापस लाया गया. इस सहायता के विकल्प मौजूद नहीं थे r10 और r10b, क्योंकि जीसीसी के उन वर्शन को binutils-2.24 के साथ कंपाइल किया गया था. MXU की सुविधा नहीं है. अब यह है.
  • make-standalone-toolchain.sh में --toolchain= को ठीक किया गया, ताकि यह अब यह Clang के वर्शन को तय करने वाले सफ़िक्स के इस्तेमाल का सही तरीके से इस्तेमाल करता है.
  • libc++/armeabi strtod() फ़ंक्शन को ठीक किया गया.
  • docs/ में एनडीके (NDK) दस्तावेज़ में सुधार किए गए.
अन्य बदलाव:
  • cpu-features को बेहतर बनाया गया, ताकि इनके लिए ARMv8 के साथ काम करने की सुविधा का पता लगाया जा सके निर्देश सेट: AES, CRC32, SHA2, SHA1, और 64-बिट PMULL/PMULL2. (समस्या 106360)
  • *-gcc-ar का इस्तेमाल करने के लिए ndk-build को बदला गया, जो GCC 4.8, GCC 4.9, और क्लैंग. *-ar के बजाय, Clang इसका इस्तेमाल करती है. इस सेटिंग से बेहतर एलटीओ मिलता है सहायता.
  • include-fixed/linux/a.out.h को हटाया और जीसीसी कंपाइलर के include-fixed/linux/compiler.h हेडर. (समस्या 73728)
  • Mac OS X पर GCC 4.8 वाले -flto से जुड़ी समस्या ठीक की गई. गड़बड़ी का मैसेज पढ़ें:
  • .../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so
    Symbol not found: _environ
    
  • build-binary.mk. में टाइपिंग से जुड़ी गड़बड़ी ठीक की गई (समस्या 76,992)
आम तौर पर होने वाली अहम समस्याएं:
  • GCC4.9 में -Os (-fauto-profile) तय करने से क्रैश हो सकता है. (समस्या 77571)
ज़रूरी सूचनाएं:
  • डाउनलोड किए जा सकने वाले पैकेज पर 512 एमबी के साइज़ की पाबंदी होती है. इसलिए, नीचे दिए गए 32-बिट आइटम, 32-बिट एनडीके डाउनलोड पैकेज में नहीं आते हैं. इसके बजाय, वे 64-बिट में मौजूद होते हैं:
    • Android-L हेडर
    • जीसीसी 4.9
  • फ़िलहाल, एनडीके से मिलने वाली 'रेंडरस्क्रिप्ट' सुविधा, Android 4.4 (एपीआई लेवल 19) वाले 32-बिट रेंडरस्क्रिप्ट के लिए ही उपलब्ध है. Renderscript (32- या 64-बिट) और Android वर्शन के किसी भी अन्य कॉम्बिनेशन का इस्तेमाल करके, HelloComputeNDK (रेंडरस्क्रिप्ट का एकमात्र सैंपल) नहीं बनाया जा सकता.
  • नेटिव-कोडेक को कंपाइल करने के लिए, आपको 64-बिट एनडीके पैकेज का इस्तेमाल करना होगा. इसमें सभी Android-L हेडर मौजूद होते हैं.
अहम गड़बड़ियां ठीक की गईं:
  • GCC 4.8/4.9 में gdb 7.6 को ठीक किया गया. (समस्याएं 74112 और 74371.)
  • x86 के लिए GCC 4.8/4.9 ठीक किया गया, ताकि वे अब डिफ़ॉल्ट रूप से -msse4.2 और -mpopcnt चालू न कर सकें. (समस्या 73843.)
अन्य गड़बड़ियां ठीक की गईं:
  • stdio.h को जीसीसी के सभी वर्शन की include-fixed/ डायरेक्ट्री से हटाया गया. (समस्या 73728.)
  • platforms/android-L/arch-*/usr/include/linux/netfilter*/ डायरेक्ट्री में, Windows पैकेज से डुप्लीकेट हेडर फ़ाइलें हटाई गईं. (समस्या 73704.)
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से Clang, HelloComputeNDK को नहीं बना पाई.
  • एक्ज़िट को ठीक किया गया. (समस्या 66595.)
  • docs/ और sources/third_party/googletest/README.NDK के दस्तावेज़ों में कई सुधार किए गए. (समस्या 74069.)
  • Android-L हेडर में ये सुधार किए गए:
    1. ctype.h और wchar.h में ये फ़ंक्शन जोड़े गए: dn_expand(), grantpt(), inet_nsap_addr(), inet_nsap_ntoa(), insque(), nsdispatch(), posix_openpt(), __pthread_cleanup_pop(), __pthread_cleanup_push(), remque(), setfsgid(), setfsuid(), splice(), tee(), twalk() (समस्या 73719), और 42 *_l() फ़ंक्शन.
    2. cmsg_nxthdr का नाम बदलकर __cmsg_nxthdr किया गया.
    3. __libc_malloc_dispatch को हटा दिया गया है.
    4. ptrace() प्रोटोटाइप को long ptrace(int, ...); में बदल दिया गया है.
    5. sha1.h को हटा दिया गया है.
    6. android/dlext.h में android_dlextinfo की अवधि बढ़ाई गई.
    7. stdlib.h, time.h, wchar.h, और complex.h में फ़्लोट या डबल-टाइप वैल्यू पाने या दिखाने वाले फ़ंक्शन के लिए, __NDK_FPABI__ एनोटेट किया गया है.
अन्य बदलाव:
  • mipsel-linux-android-4.9 और mips64el-linux-android-4.9 अपडेट किए गए, नया मल्टीलिब डायरेक्ट्री लेआउट लागू किया गया, और gdb-7.7 के साथ काम किया गया
  • आर्म64 की ज़्यादा सुविधाओं का पता लगाने के लिए, cpu-features को बेहतर बनाया गया. (सूची बदलें 100339.)
ज़रूरी बदलाव:
  • तीन नए एबीआई जोड़े गए, सभी 64-बिट: arm64-v8a, x86_64, mips64.
  • ध्यान दें:
    • GCC 4.9, 64-बिट एबीआई के लिए डिफ़ॉल्ट कंपाइलर है. फ़िलहाल, Clang का वर्शन 3.4 है. NDK_TOOLCHAIN_VERSION=clang अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है आर्म64-v8a और mips64 के लिए काम नहीं करेगा.
    • Android-L, 64-बिट की सुविधा वाला पहला लेवल है. ध्यान दें कि यह एपीआई लेवल कुछ समय के लिए है. यह सिर्फ़ एल-झलक के लिए है. एक वास्तविक एपीआई लेवल संख्या इसे इसकी जगह ले लेगी L-रिलीज़.
    • इस रिलीज़ में अब all32 और all64 शामिल हैं APP_ABI के लिए सेटिंग.
      • APP_ABI=all32 इसके बराबर है APP_ABI=armeabi,armeabi-v7a,x86,mips.
      • APP_ABI=all64 इसके बराबर है APP_ABI=arm64-v8a,x86_64,mips64.
      • APP_ABI=all सभी एबीआई को चुनता है.
    • Android-L के नए GNU libstdc++ में सभी <tr1/cmath> शामिल हैं अपना गणित फलन परिभाषित करने से पहले, _GLIBCXX_USE_C99_MATH_TR1 की जांच करें "एक से ज़्यादा परिभाषा" से बचने के लिए, उस नाम का फ़ंक्शन पहले से मौजूद है गड़बड़ियां लिंकर.
    • ARMv8 कर्नेल के लिए, सीपीयू की सुविधाओं की लाइब्रेरी को अपडेट कर दिया गया है. मौजूदा ऐसा हो सकता है कि सीपीयू की सुविधाओं की लाइब्रेरी, ARMv8 प्लैटफ़ॉर्म पर NEON की मौजूदगी का पता न लगा पाए. अपने डेटा को फिर से कंपाइल करें नए वर्शन के साथ कोड.
  • नई platforms/android-L/ एपीआई डायरेक्ट्री जोड़ी गई. इसमें ये चीज़ें शामिल हैं:
    • अपडेट किए गए बायोनिक हेडर, जिनमें Android एपीआई लेवल 3 से कोई बदलाव नहीं किया गया है (कपकेक) से 19 तक (KitKat). लेवल L के इस नए वर्शन को एओएसपी के साथ सिंक किया जाना है.
    • नए मीडिया एपीआई और नेटिव-कोडेक सैंपल.
    • एसएलएस/ओपनएसएलईएस के लिए अपडेट किया गया Android.h हेडर, जिससे AudioPlayer में, सिंगल-प्रेसिज़न और फ़्लोटिंग-पॉइंट ऑडियो फ़ॉर्मैट.
    • libGLESv3.so. के लिए GLES 3.1 और AEP एक्सटेंशन
    • GLES2 और GLES3 हेडर को नए आधिकारिक क्रोनोस वर्शन में अपडेट किया गया.
  • 32-/64-बिट एबीआई में GCC 4.9 कंपाइलर जोड़ा गया. GCC 4.9 डिफ़ॉल्ट (सिर्फ़) कंपाइलर है का उपयोग कर सकते हैं, जैसा कि पहले बताया गया है. 32-बिट एबीआई के लिए, आपको साफ़ तौर पर GCC 4.9 चालू करना होगा, क्योंकि GCC 4.6 अब भी डिफ़ॉल्ट है.
    • ndk-build के लिए, 32-बिट, GCC 4.9 बिल्डिंग को या तो NDK_TOOLCHAIN_VERSION=4.9 या Application.mk में एक्सपोर्ट किया जा रहा है कमांड लाइन से एनवायरमेंट वैरिएबल.
    • स्टैंडअलोन टूलचेन के लिए, --toolchain= विकल्प का इस्तेमाल करें: make-standalone-toolchain.sh स्क्रिप्ट. उदाहरण के लिए: --toolchain=arm-linux-androideabi-4.9.
  • GCC 4.8/4.9 और x86* में GDB को वर्शन 7.6 पर अपग्रेड किया गया. क्योंकि GDB अब भी GDB-7.3.x वर्शन पर है GCC 4.6 (ARM और MIPS के लिए डिफ़ॉल्ट), आपको इसे सेट करना होगा GDB 7.6 को चुनने के लिए ndk-gdb चालू करने के लिए NDK_TOOLCHAIN_VERSION=4.8 या 4.9.
  • SSSE3 सहायता देने के लिए -mssse3 बिल्ड विकल्प जोड़ा गया और इसे एबीआई x86 के लिए डिफ़ॉल्ट बनाया गया (SSE3 से अपग्रेड किया जा रहा है). Google ने जो इमेज रिलीज़ की है उसमें SSSE3 के निर्देश नहीं हैं.
  • GCC 4.8 को 4.8.3 से अपडेट किया गया.
  • gabi++ से libc++abi पर स्विच करके, ARM libc++ EH से जुड़ी बेहतर सुविधा. ज़्यादा जानकारी के लिए, "C++ सहायता" देखें सेक्शन में बताया गया है. ध्यान दें:
    • अब Clang 3.4 और GCC 4.8 के लिए, स्थान-भाषा को छोड़कर सभी टेस्ट पास हो जाते हैं. ज़्यादा के लिए जानकारी के लिए, "C++ सहायता" सेक्शन में बताया गया है.
    • X86 और MIPS libc++ के लिए libc++ लाइब्रेरी में अब भी gabi++ का इस्तेमाल किया जाता है.
    • GCC 4.7 और उसके बाद के वर्शन अब <atomic> का इस्तेमाल कर सकते हैं.
    • अगर आप <list> का इस्तेमाल करते हैं, तो आपको -fno-strict-aliasing जोड़ना होगा, क्योंकि __list_imp::_end_Break TBAA के नियम. (समस्या 61571.)
    • GCC 4.6 के बाद से, LIBCXX_FORCE_REBUILD:=true अब libc++ को फिर से नहीं बनाता. इसे फिर से बनाया जा रहा है इसके लिए एक अलग कंपाइलर का इस्तेमाल करना पड़ता है. ध्यान दें कि Clang 3.3 की जांच नहीं की गई है.
  • mclinker अब 2.7 वर्शन में है और इसमें arc64 Linux के साथ काम करता है.
  • LOCAL_PCH के तय किए गए हेडर के लिए, पहले से कंपाइल किया गया हेडर सपोर्ट जोड़ा गया. (समस्या 25412).
अहम गड़बड़ियां ठीक की गईं:
  • libc++ को ठीक किया गया, ताकि अब यह std::feof वगैरह को कंपाइल कर सके. (समस्या 66668).
  • Clang 3.3/3.4 एटॉमिक लाइब्रेरी कॉल को ठीक किया गया है, जिसकी वजह से कुछ libc++ में क्रैश हो गया था ABI Armeabi के लिए परीक्षण हैं.
  • पहले से कंपाइल किए गए हेडर पढ़ने के दौरान होने वाले Clang 3.4 क्रैश को ठीक कर दिया गया है. (समस्या 66657).
  • Clang 3.3/3.4 -O3 के दावे को ठीक किया गया:
  • llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef): Assertion Weights.size() >= 2 && "Need at least two branch weights!" (समस्या 57381).
  • Clang 3.3/3.4 के इन क्रैश को ठीक किया गया:
  • Assertion failed: (!Fn && "cast failed but able to resolve overload expression!!"), function CheckCXXCStyleCast, file Volumes/data/ndk-toolchain/src/llvm-3.3/llvm/tools/clang/lib/Sema/SemaCast.cpp, line 2018. (समस्या 66950).
अन्य गड़बड़ियां ठीक की गईं:
  • ठीक किए गए हेडर:
    • 32-बिट ssize_t को long int के बजाय int पर सेट किया गया.
    • WCHAR_MIN और WCHAR_MAX को ठीक कर दिया गया है, ताकि वे पर चलने वाले आर्किटेक्चर के हिसाब से सही साइनबोर्ड चुनें:
      • X86/MIPS: हस्ताक्षर किए गए.
      • ARM: साइन नहीं किया गया.
      • X86/MIPS को डिफ़ॉल्ट रूप से अनसाइन किया गया पर सेट करने के लिए इसका इस्तेमाल करें -D__WCHAR_UNSIGNED__.
      • wchar_t को 16 बिट बनाने के लिए, -fshort-wchar का इस्तेमाल करें.
    • 32-बिट libc.so से ऐसे चिह्न हटाए गए जो मौजूद नहीं हैं और pread64 जोड़े गए, pwrite64, ftruncate64 के लिए Android एपीआई लेवल 12 और उसके बाद के वर्शन. (समस्या 69319). ज़्यादा के लिए AOSP की बदलाव की सूची के साथ भेजे गए कमिट मैसेज की सूची देखें 94137.
  • putchar की परिभाषा बदलने के बारे में, GCC चेतावनी को ठीक किया गया. चेतावनी वाले मैसेज में लिखा है:
  • include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int); (91185 की सूची बदलें).
  • make-standalone-toolchain.sh --stl=libc++ को ठीक किया गया, ताकि यह:
    • cxxabi.h को कॉपी करता है. (समस्या 68001).
    • NDK इंस्टॉल डायरेक्ट्री के अलावा, दूसरी डायरेक्ट्री में काम करता है. (समस्याएं 67690 और 68647 हैं).
  • GCC/Windows को तब ठीक किया गया, जब वे सिर्फ़ आर्ग्युमेंट के लिए ज़रूरी हों बाहरी प्रोग्राम को ध्यान में रखकर बनाया गया है. इस बदलाव से, 32 हज़ार लंबाई वाली सीमा को पार करने की संभावना कम हो जाती है.
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से APP_PLATFORM में बदलाव नहीं किया जा सकता था एनवायरमेंट वैरिएबल.
  • crazy_linker में IsSystemLibrary() को लागू करने की प्रोसेस को ठीक किया गया, ताकि यह strrchr() का इस्तेमाल करता है strchr() के बजाय लाइब्रेरी पाथ का असली बेसनेम पता करने के लिए.
  • डीबग मोड में नेटिव ऑडियो की समस्या ठीक की गई.
  • बहुत ज़्यादा फ़्लोटिंग-पॉइंट नंबर प्रिंट करने में, gdb की क्षमता को ठीक किया गया. (समस्या 69203).
  • -Wl,-shared के साथ कंपाइल न कर पाने के लिए, Clang 3.4 की क्षमता को ठीक किया गया है -shared, जो इसमें कंपाइलेशन से जुड़ी कोई समस्या नहीं हुई). समस्या यह थी कि Clang ने Android के लिए -pie को जोड़ा -shared और -static दोनों ही मौजूद न होने पर लक्ष्य. यह व्यवहार ऐसा था गलत, लिंकर को यह शिकायत करने की वजह दी कि -shared और -pie ये काम नहीं कर सके साथ-साथ मौजूद रहेंगे.
अन्य बदलाव:
  • arm_neon.h को x86 टूलचेन में जोड़ा गया, ताकि यह अब तकरीबन ~47% नियॉन. फ़िलहाल, 64-बिट टाइप के लिए कोई सुविधा उपलब्ध नहीं है. ज़्यादा जानकारी के लिए, ARM पर सेक्शन देखें x86 दस्तावेज़ में नियॉन इंट्रिंसिक्स की सुविधा उपलब्ध है.
  • पोर्ट किया गया ARM/GOT_PREL ऑप्टिमाइज़ेशन (GCC google ब्रांच से बनाए गए GCC 4.6 में मौजूद) एआरएम जीसीसी 4.8/4.9. यह ऑप्टिमाइज़ेशन, ग्लोबल ऐक्सेस पर कभी-कभी निर्देशों की संख्या को कम कर देता है वैरिएबल. उदाहरण के लिए, create.sh स्क्रिप्ट को इसमें देखें $NDK/tests/build/b14811006-GOT_PREL-optimization/.
  • STL gabi++, stlport, और libc++ के लिए ARM वर्शन जोड़ा गया. अब उनके पास इसे और थंब, दोनों हैं मोड.
  • अब इसकी मदद से Make- Standalone-toolchain.sh स्क्रिप्ट को कॉल किया जा सकता है --toolchain=x86_64-linux-android-4.9, जो इसके बराबर है --toolchain=x86_64-4.9.
ज़रूरी बदलाव:
  • Clang 3.4 कंपाइलर के लिए सहायता जोड़ी गई. कॉन्टेंट बनाने अब NDK_TOOLCHAIN_VERSION=clang विकल्प, Clang 3.4 को चुनता है. जीसीसी 4.6 है अब भी डिफ़ॉल्ट कंपाइलर.
  • APP_ABI=armeabi-v7a-hard को जोड़ा गया, इसके साथ अतिरिक्त मल्टीलिब विकल्प -mfloat-abi=hard. ये विकल्प ARM GCC 4.6/4.8 और Clang 3.3/3.4 (जो 4.8 के असेंबलर, लिंकर, और लिब्स). इन विकल्पों का इस्तेमाल करते समय, इन बदलावों पर ध्यान दें:
    • ndk-build स्क्रिप्ट को एक्ज़ीक्यूट करते समय, Armeabi-v7a टारगेट के लिए नीचे दिए गए विकल्प:
      TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1
      TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
      बनाई गई लाइब्रेरी को libs/armeabi-v7a में कॉपी किया गया. मेक करने के लिए उम्मीद के मुताबिक काम करते हैं, तो आप armeabi-v7a और, दोनों को तय नहीं कर सकते armeabi-v7a-hard, टारगेट के तौर पर (यानी, APP_ABI= लाइन पर). ऐसा करने से उनमें से किसी एक को नज़रअंदाज़ किया जाता है. ध्यान दें कि APP_ABI=all अब भी इसके बराबर है armeabi armeabi-v7a x86 mips.
    • make-standalone-toolchain.sh स्क्रिप्ट की कॉपी /hard डायरेक्ट्री में मौजूद अतिरिक्त लाइब्रेरी. अपनेCFLAGSLFLAGS GCC या Clang को चालू करने के लिए Makefile /hard में लाइब्रेरी.
  • yasm असेंबलर जोड़ा गया. साथ ही, LOCAL_ASMFLAGS को जोड़ा गया और x86 के लिए EXPORT_ASMFLAGS फ़्लैग टारगेट के लिए. ndk-build स्क्रिप्ट, LOCAL_SRC_FILES बनाने के लिए prebuilts/*/bin/yasm* में .asm एक्सटेंशन होता है.
  • MClinker को 2.6.0 में अपडेट किया गया, जिससे -gc-sections जुड़ गया सहायता.
  • एक्सपेरिमेंट के लिए, libc++ की सुविधा जोड़ी गई (अपस्ट्रीम r201101). इस नए इसके लिए, यह तरीक़ा अपनाएँ:
    • Application.mk में APP_STL := c++_static या APP_STL := c++_shared जोड़ें. LIBCXX_FORCE_REBUILD := true के माध्यम से आप स्रोत से फिर से बना सकते हैं
    • make-standalone-toolchain.sh --stl=libc++ लागू करें libc++ हेडर/lib के साथ स्टैंडअलोन टूलचेन बनाने के लिए इस्तेमाल किया जा सकता है.
    ज़्यादा जानकारी के लिए, यह देखें CPLUSPLUS-SUPPORT.html. (समस्या 36496)
अहम गड़बड़ियां ठीक की गईं:
  • अचानक होने वाले थ्रो को ठीक किया गया GCC 4.6/4.8 ARM ईएबीआई के लिए अपवाद हैंडलर. (जीसीसी समस्या 59392)
  • GCC 4.8 को ठीक किया गया, ताकि अब यह आंशिक रूप से ठीक हो सके की विशेषज्ञता एक डिपेंडेंट, नॉन-टाइप टेंप्लेट आर्ग्युमेंट. (जीसीसी समस्या 59052)
  • पहले से बने Python में और मॉड्यूल जोड़े गए (समस्या 59902):
    • Mac OS X: zlib, bz2, _curses, _curses_panel, _hashlib, _ssl
    • Linux: zlib, nis, crypt, _curses, और _curses_panel
  • x86 और MIPS gdbserver को ठीक किया गया event_getmsg_helper.
  • RenderScript एनडीके टूलचेन की कई समस्याओं को ठीक किया गया. इनमें ये शामिल हैं पुराने डिवाइसों और C++ रिफ़्लेक्शन में साथ काम करने से जुड़ी समस्याएं होती हैं.

अन्य गड़बड़ियां ठीक की गईं:
  • हेडर से जुड़ी समस्याएं:
    • इसमें #include <sys/types.h> मौजूद न होने की समस्या को ठीक किया गया Android के एपीआई लेवल 13 और उसके बाद के वर्शन के लिए android/asset_manager.h. (समस्या 64988)
    • इसमें #include मौजूद न होने की समस्या को ठीक किया गया Android के एपीआई लेवल 14 और उसके बाद के वर्शन के लिए android/rect_manager.h.
    • JNICALL को JNI_OnLoad में जोड़ा और jni.h में JNI_OnUnload. ध्यान दें कि JNICALL को __NDK_FPABI__ के तौर पर तय किया गया है. ज़्यादा जानकारी के लिए, यहां देखें sys/cdefs.h.
    • इन हेडर को अपडेट किया गया, ताकि उन्हें शामिल किया जा सके इसके लिए, जानकारी अपनी डिपेंडेंसी को मैन्युअल तरीके से शामिल करें (समस्या 64679):
    • android/tts.h
      EGL
      /eglext.h
      fts
      .h
      GLES
      /glext.h
      GLES2
      /gl2ext.h
      OMXAL
      /OpenMAXSL_Android.h
      SLES
      /OpenSLES_Android.h
      sys
      /prctl.h
      sys
      /utime.h
    • सभी आर्किटेक्चर के लिए sys/cachectl.h को जोड़ा गया. एमआईपीएस डेवलपर अब #ifdef __mips__ लिखने के बजाय इस हेडर को शामिल कर सकते हैं.
    • फ़ंक्शन लेने या वापस करने वाले फ़ंक्शन में __NDK_FPABI__ जोड़कर, platforms/android-18/include/android/input.h को ठीक किया गया फ़्लोट या डबल वैल्यू का इस्तेमाल किया जा सकता है.
    • गलत तरीके से सेट एमआईपीएस struct stat को ठीक किया गया Android एपीआई लेवल 12 और इसके बाद के वर्शन के लिए, 64-बिट वर्शन वाली सुविधा. यह गलत है सेटिंग पहले रिग्रेशन की रिलीज़ r9c में पेश की गई.
    • परिभाषित __PTHREAD_MUTEX_INIT_VALUE, __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE, और Android API के लिए __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE लेवल 9 और उससे कम.
    • scalbln, scalblnf, और जोड़े गए एपीआई 18 और इसके बाद के वर्शन के लिए, scalblnl से x86 libm.so तक.
    • टाइप करने में हुई गड़बड़ी ठीक की गई sources/android/support/include/iconv.h. (समस्या 63806)
  • कॉल करने के लिए gabi++ std::unexpected() तय की गई std::terminate() ताकि उपयोगकर्ता के तय किए गए std::terminate() हैंडलर को चलाया जा सकता है.
  • std::nullptr को पकड़ने के लिए gabi++ वाली गड़बड़ी को ठीक किया गया.
  • टीपॉट और मोरे टीपॉट के तय सैंपल:
    • स्पेक्ट्रर को बदलकर, Tegra 2 और 3 चिप्स के साथ समस्या हल की गई वैरिएबल सेट अप करके उन्हें मीडियम लेवल की सटीक जानकारी के लिए बना सकते हैं. स्पेक्ट्रल पावर की वैल्यू अब कम हो सकती हैं 1.0 से भी कम हो.
    • सैंपल बदले गए, ताकि आवाज़ कम या ज़्यादा करने वाला बटन पहले जैसा हो जाए इमर्सिव मोड और अमान्य हो जाता है SYSTEM_UI_FLAG_IMMERSIVE_STICKY. स्क्रीन को घुमाना नहीं onSystemUiVisibilityChange को ट्रिगर करता है, इसलिए यह रीस्टोर नहीं होता इमर्सिव मोड.
  • जोड़ने के लिए, ndk-build स्क्रिप्ट को ठीक किया गया -rpath-link=$SYSROOT/usr/lib और ld.bfd का इस्तेमाल करने के लिए -rpath-link=$TARGET_OUT लिंक किए जा सकने वाले एक्ज़ीक्यूटेबल. (समस्या 64266)
  • -Bsymbolic को सभी एसटीएल बिल्ड से हटाया गया.
  • SHELL को इस तौर पर सेट करके, ndk-gdb-py.cmd गड़बड़ी ठीक की गई एनवायरमेंट वैरिएबल करने के बजाय python.exe, जो सेटिंग पर ध्यान नहीं देता. (समस्या 63054)
  • make-standalone-toolchain.sh स्क्रिप्ट को ठीक किया गया, ताकि --stl=stlport विकल्प इसके बजाय gabi++ हेडर को कॉपी करता है सिमलिंक कर रहे हैं; cmd.exe और MinGW के शेल हमारी सिग्विन के बनाए हुए सिमलिंक.
अन्य बदलाव:
  • सभी *cmd स्क्रिप्ट पर एक्ज़ीक्यूशन की अनुमतियां लागू की गईं पहले सिर्फ़ cmd.exe शेल में इस्तेमाल करने के लिए था, अगर डेवलपर अपने ब्राउज़र के बजाय साइगविन में ndk-build.cmd का इस्तेमाल करना पसंद करते हैं सुझाई गई ndk-build स्क्रिप्ट.
  • make-standalone-toolchain.sh की स्पीड बढ़ाई गई अगर बताई गई डेस्टिनेशन डायरेक्ट्री मौजूद नहीं है.

इस रिलीज़ में सिर्फ़ गड़बड़ियां ठीक की जा सकती हैं.

अहम गड़बड़ियां ठीक की गईं:
  • GCC 4.8 ARM वाली उस समस्या को ठीक किया गया, जिसमें स्टैक पॉइंटर है बहुत जल्दी बहाल किया गया. इस समस्या की वजह से फ़्रेम पॉइंटर सही तरीके से काम नहीं कर रहा था स्टैक फ़्रेम में किसी वैरिएबल को ऐक्सेस करता है. (जीसीसी समस्या 58854)
  • GCC 4.8 libstdc++ की उस समस्या को ठीक किया गया है जिसमें बग std::nth_element कोड जनरेट करने के कारण हो रहा था, जिसने सेगफ़ॉल्ट. (समस्या 62910)
  • cc1/cc1plus में तय GCC 4.8 ICE -fuse-ld=mcld, ताकि नीचे दी गई गड़बड़ी अब न हो:
    cc1: internal compiler error: in common_handle_option, at
    opts.c:1774
  • इसके लिए -mhard-float सहायता ठीक की गई __builtin गणित के फलन. समस्याओं को ठीक करने के बारे में जारी जानकारी के लिए -mhard-float एसटीएल में है, कृपया समस्या 61784 को फ़ॉलो करें.
अन्य गड़बड़ियां ठीक की गईं:
  • हेडर से जुड़ी समस्याएं:
    • poll.h में poll का प्रोटोटाइप बदलकर poll(struct pollfd *, nfds_t, int); किया गया.
    • Android के लिए utimensat को libc.so में जोड़ा गया एपीआई लेवल 12 और 19. ये लाइब्रेरी अब सभी Android API के लिए शामिल कर ली गई हैं लेवल 12 से 19.
    • Android API के लिए, libc.so में futimens को लॉन्च किया गया लेवल 19.
    • clock_settime() और जो मौजूद नहीं हैं उन्हें जोड़ा गया Android एपीआई लेवल 8 के लिए, clock_nanosleep() से time.h तक और भी कई नतीजों पर मिलेंगे.
    • CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, और को जोड़ा गया time.h. में CLOCK_BOOTTIME_ALARM
    • पुराना CLOCK_REALTIME_HR हटाया गया और CLOCK_MONOTONIC_HR.
  • टीपॉट, मोरे टीपॉट, और source/android/ndk_helper:
    • उन्हें बदल दिया है ताकि वे अब Armeabi-v7a के लिए हार्ड-फ़्लोट abi का उपयोग करें.
    • Android के एपीआई लेवल 19 पर इमर्सिव मोड का इस्तेमाल करने के लिए, उन्हें अपडेट किया गया और उच्च.
    • इसमें Check_ReleaseStringUTFChars से जुड़ी समस्या ठीक की गई /system/lib/libdvm.so जिसकी वजह से x86 डिवाइसों पर क्रैश हो रहा था.
  • एनडीके के होने पर साइगविन में होने वाली ndk-build को ठीक किया गया पैकेज है सिमलिंक के ज़रिए दिया जाता है.
  • विंडो में होने वाली, ndk-build.cmd को ठीक करने के बाद होने वाली समस्याएं cmd.exe जब LOCAL_SRC_FILES में ऐब्सलूट पाथ शामिल हैं. (समस्या 69992)
  • आगे बढ़ने के लिए, ndk-stack स्क्रिप्ट को ठीक किया गया, भले ही वह पार्स न हो सके कोई रूटीन, फ़ाइल नाम या लाइन नंबर ढूँढने में असमर्थता के कारण फ़्रेम. इनमें से किसी में भी इन मामलों में, यह ?? को प्रिंट करता है.
  • Windows-x64_64 टारगेट के लिए ndk-stack स्टैक को ठीक किया गया, ताकि अब यह गलती से फ़्रेम लाइन से मैच नहीं करता, जिस लाइन में stack: सेक्शन, जिसमें pc शामिल नहीं है, eip या ip. जैसे:
    I/DEBUG   ( 1151):     #00  5f09db68  401f01c4
    /system/lib/libc.so
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • gabi++ को ठीक किया गया है, ताकि:
    • C++ थ्रेड-लोकल आवंटित करने के लिए मैलओक() का इस्तेमाल नहीं करता ऑब्जेक्ट हैं.
    • ऐसे मामलों में gabi++ में डेडलॉक से बचें जहां libc.debug.malloc है userdebug/eng Android प्लैटफ़ॉर्म बिल्ड में नॉन-ज़ीरो.
अन्य बदलाव:
  • LOCAL_EXPORT_LDFLAGS को जोड़ा गया.
  • NDK_PROJECT_PATH=null सेटिंग को इस तरह से इस्तेमाल किया गया है: इंटिग्रेट किया गया बिल्ड सिस्टम, जहां विकल्प साफ़ तौर पर पास किए जाते हैं ndk-build. इस सेटिंग का इस्तेमाल करने पर, ndk-build अनुमति नहीं देता NDK_PROJECT_PATH. को खोजने की कोशिश की. यह सेटिंग, वैरिएबल की वैल्यू NDK_PROJECT_PATH से डिफ़ॉल्ट सेटिंग के रूप में हासिल की जाती हैं. इस वजह से, निम्नलिखित चरों को अब स्पष्ट रूप से दर्ज किया जाना चाहिए (उनके डिफ़ॉल्ट इस तरह की वैल्यू: NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG (ज़रूरी नहीं, डिफ़ॉल्ट तौर पर 0) और अन्य APP_* Application.mk में शामिल है.
  • APP_ABI को अब कॉमा-डीलिमिटेड सूची के तौर पर गिना जा सकता है. इसके लिए उदाहरण:
    APP_ABI := "armeabi,armeabi-v7a"
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • डीबग की जानकारी की मदद से, सारे एसटीएल को फिर से बनाने की सुविधा वैकल्पिक, कॉल किया गया अलग पैकेज android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip की ओर से -g विकल्प. यह विकल्प इससे ndk-stack स्क्रिप्ट को, एसटीएल में स्टैक डंप को बेहतर बनाने में मदद मिलती है. इस बदलाव से फ़ाइनल, स्ट्रिप फ़ाइल के कोड/साइज़ पर कोई असर नहीं पड़ेगा.
  • APP_ABI को रिपोर्ट करने के लिए बेहतर hello-jni नमूने कंपाइलेशन.
  • ar टूल का इस्तेमाल तय करने वाले मोड में किया गया (विकल्प -D). (समस्या 60705)
ज़रूरी बदलाव:
  • इस लेवल तक के सभी Android एपीआई लेवल के लिए, include/android/*h और math.h को अपडेट किया गया 18, जिसमें लेवल 13, 15, 16, और 17 शामिल हैं. जोड़े गए एपीआई के बारे में जानकारी के लिए, 'बदलावों के लिए प्रतिबद्ध मैसेज' देखें 68012 और 68014. (समस्याएं 47150, 58528, और 38,423)
  • Android एपीआई लेवल 19 के लिए सहायता जोड़ी गई. इसमें रेंडर स्क्रिप्ट बाइंडिंग की सुविधा भी शामिल है.
  • मौजूदा Armeabi-v7a एबीआई में -mhard-float के लिए सहायता जोड़ी गई. ज़्यादा के लिए Clang पर की गई पाबंदियों की जानकारी और मौजूदा पाबंदियां, tests/device/hard-float/jni/Android.mk.
  • GNU कंपाइलर कलेक्शन (जीसीसी) 4.8 से 4.8.2 में माइग्रेट किया गया, और डाइग्नोस्टिक्स कलर जोड़ा गया सहायता. डाइग्नोस्टिक्स के रंगों को चालू करने के लिए, -fdiagnostics-color=auto को सेट करें, -fdiagnostics-color=always, या GCC_COLORS को एक्सपोर्ट करें, जैसा कि नीचे दिखाया गया है:
    GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
    
    ज़्यादा जानकारी के लिए, यह देखें जीसीसी भाषा से जुड़े अपने हिसाब से विकल्प.
  • OpenGL ES 3.0 की सुविधाओं को दिखाने के लिए, दो नए सैंपल जोड़े गए: टीपॉट और मोरे टीपॉट. ये सैंपल, Android 4.1 (एपीआई लेवल 16) और उसके बाद के वर्शन वाले डिवाइसों पर चलते हैं.
  • GCC 4.7 और Clang 3.2 के साथ काम नहीं करती है. इसे अगले चरण में हटा दिया जाएगा रिलीज़.
अहम गड़बड़ियां ठीक की गईं:
  • ARM GCC 4.6 thumb2 16-बिट रिलेटिव जंप जनरेट करने में विफल होने की समस्या को ठीक कर दिया गया है टेबल. (जीसीसी की समस्या)
  • GCC 4.8 इंटरनल कंपाइलर एरर (ICE) को ठीक किया गया g++.dg/cpp0x/lambda/lambda-defarg3.C. (62770 बदलें, जीसीसी की समस्या)
  • Windows 32-बिट *-gdb.exe के एक्ज़ीक्यूटेबल के लॉन्च न हो पाने से जुड़ी समस्या ठीक कर दी गई है. (समस्या 58975)
  • बुलेट लाइब्रेरी बनाते समय, GCC 4.8 ICE को ठीक किया गया. गड़बड़ी का मैसेज यह है:
    internal compiler error: verify_flow_info failed
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है (समस्या 58916, जीसीसी की समस्या)
  • प्रस्तावना कोड में आराम करने के लिए ARM.exidx डेटा को छोड़ने के लिए GDB/ARM बिल्ड में बदलाव किया गया और ने exidx पर आधारित स्टैक को अनंडिंग कंट्रोल करने के लिए, कमांड (set arm exidx-unwinding) जोड़ा है. (समस्या 55826)
  • Clang 3.3 MIPS कंपाइलर समस्या का समाधान किया गया जहां HI और LO पंजीकरण गलत हैं फिर से इस्तेमाल किया गया.
  • dbx_reg_number में MIPS 4.7 ICE से जुड़ी समस्या ठीक कर दी गई है. गड़बड़ी का मैसेज ऐसा है अनुसरण करता है:
    external/icu4c/i18n/decimfmt.cpp:1322:1:
    internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है (जीसीसी पैच)
अन्य गड़बड़ियां ठीक की गईं:
  • हेडर ठीक करना
    • इसके अनुसार, ARM WCHAR_MIN और WCHAR_MAX को साइन न किए जाने के लिए ठीक किया गया spec (X86/MIPS वर्शन हस्ताक्षर किए गए हैं). _WCHAR_IS_ALWAYS_SIGNED को इसके तौर पर परिभाषित करें पुराने व्यवहार को पहले जैसा करने में आपकी मदद कर सकता है. (समस्या 57749)
    • TCP_INFO के स्टेट ईनम को शामिल करने के लिए, include/netinet/tcp.h को ठीक किया गया. (समस्या 38881)
    • जनरेट होने से रोकने के लिए, cdefs_elh.h मैक्रो _C_LABEL_STRING को ठीक किया गया c+11 मोड का इस्तेमाल करते समय, GCC 4.8 टूलचेन में चेतावनियां दिखाई जाएंगी. (समस्या 58135, समस्या 58652)
    • हेडर से ऐसे फ़ंक्शन imaxabs और imaxdiv हटाए गए जो मौजूद नहीं हैं inttypes.h.
    • pthread_exit() रिटर्न वैल्यू और pthread_self() से जुड़ी समस्या ठीक कर दी गई है. (समस्या 60686)
    • वह mkdtemp() फ़ंक्शन जोड़ा गया जो पहले से मौजूद नहीं है, bionic हेडर stdlib.h.
  • Android के एपीआई लेवल 11 पर, Clang की मदद से samples/gles3jni बनाने में आने वाली समस्या को ठीक कर दिया गया है.
  • नीचे दिए गए विकल्पों को एक से ज़्यादा बार दिखाने की अनुमति देने के लिए, MCLinker को ठीक किया गया है: -gc-sections और --eh-frame-hdr.
  • --no-warn-mismatch विकल्प को स्वीकार करने के लिए, MCLinker को ठीक किया गया.
  • cpu-features विकल्प को बदला गया, ताकि यह न माना जाए कि सभी VFPv4 डिवाइस, IDIV के साथ काम करते हैं. अब यह विकल्प IDIV को केवल श्वेत-सूची वाले डिवाइसों से जोड़ता है, जिनमें Nexus 4 भी शामिल है. (समस्या 57637)
  • इवेंट को गलत तरीके से लॉग करने वाली android_native_app_glue.c गड़बड़ियां ठीक की गईं प्रीडिसपैच ऑपरेशन.
  • gabi++ टर्मिनल और अनपेक्षित_हैंडलर की सभी संक्रियाओं को ठीक कर दिया गया है थ्रेड-सुरक्षित.
  • Clang -integrated-as विकल्प की कई समस्याओं को ठीक किया गया है, ताकि यह पास हो सके ssax-instructions और fenv की जांच की गई.
  • लिंकर विकल्प --eh-frame-hdr को भी पास करने के लिए GCC 4.6/4.7/4.8 कंपाइलर को ठीक किया गया के लिए, सभी फ़ॉर्मैट में बदलाव किए जा सकते हैं. ज़्यादा जानकारी के लिए, देखें जीसीसी पैच.
  • CPU-ARCH-ABIS.html में अतिरिक्त अपॉस्ट्रफ़ी को ठीक किया गया. ज़्यादा जानकारी के लिए, यह देखें NDK-DEPENDS.html. (समस्या 60142)
  • Windows पर ndk-build आउटपुट में अतिरिक्त कोटेशन को ठीक किया गया. (समस्या 60649)
  • ARM के बिल्ट-इन, ऐटमिक ऑपरेशन को कंपाइल करने के लिए, Clang 3.3 को ठीक किया गया है __atomic_fetch_add, __atomic_fetch_sub, और __atomic_fetch_or.
  • पसंद के मुताबिक बनाए गए vfprintf के साथ Clang 3.3 ICE को ठीक किया गया. (क्लैंग की समस्या)
अन्य बदलाव:
  • सभी GCC बिल्ड के लिए OpenMP चालू हो गई. इस सुविधा का इस्तेमाल करने के लिए, अपने वीडियो में ये फ़्लैग जोड़ें बिल्ड सेटिंग:
    LOCAL_CFLAGS += -fopenmp
    LOCAL_LDFLAGS += -fopenmp
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कोड के उदाहरणों के लिए, tests/device/test-openmp देखें
  • ld.mcld के साइज़ को काफ़ी कम किया गया (1.5 एमबी बनाम ld.bfd 3.5 एमबी और ld.gold 7.5 एमबी), इससे इंटरनेट की स्पीड करीब 20% तक बढ़ जाती है.
  • बताने के लिए LOCAL_CONLYFLAGS और APP_CONLYFLAGS जोड़े गए विकल्प सिर्फ़ C पर लागू होते हैं, C++ पर नहीं. मौजूदा LOCAL_CFLAGS और APP_CFLAGS का उपयोग C++ संकलन के लिए भी किया जाता है (किसी समस्या को ज़्यादातर विकल्पों को दो बार निर्दिष्ट करता है), इसलिए -std=gnu99 जैसे विकल्प विफल हो सकते हैं g++ एक चेतावनी के साथ बिल्ड करता है और clang++ किसी गड़बड़ी के साथ बनता है.
  • gabi++ अरे हेल्पर फ़ंक्शन जोड़े गए.
  • GCC बिल्ड में बदलाव किया जाता है, ताकि सभी libgcc.a फ़ाइलें -funwind-tables की मदद से स्टैक को पहले ब्लॉक किए गए पुराने आइटम से खोलकर बाहर रखा जा सकता है पॉइंट, जैसे कि __aeabi_idiv0.
  • नए -mmxu के साथ MIPS GCC4.6/4.7/4.8 में Ingenic MXU सहायता जोड़ी गई का विकल्प शामिल है.
  • ldxc1/sdxc1 को भी कंट्रोल करने के लिए MIPS GCC4.6/4.7/4.8 -mldc1-sdc1 को बढ़ाया गया
  • क्रेज़ी लिंकर जोड़ा गया. ज़्यादा जानकारी के लिए, यह देखें sources/android/crazy_linker/README.TXT.
  • 200x200 पिक्सल के बजाय फ़ुल स्क्रीन पर ड्रॉ करने के लिए, bitmap-plasma को ठीक किया गया क्षेत्र.
  • एक जैसी फ़ाइलों के लिए सिमलिंक बनाकर, Linux और डार्विन टूलचेन के साइज़ में 25% की कमी की गई.
ज़रूरी बदलाव:
  • Android 4.3 (एपीआई लेवल 18) के लिए सहायता जोड़ी गई. ज़्यादा जानकारी के लिए, यह देखें STABLE-APIS.html और samples/gles3jni/README में नए कोड के उदाहरण.
  • OpenGL ES 3.0 के लिए हेडर और लाइब्रेरी जोड़े गए, जो Android 4.3 पर काम करता है (एपीआई लेवल 18) और उसके बाद वाले वर्शन.
  • एनडीके में GNU कंपाइलर कलेक्शन (जीसीसी) 4.8 कंपाइलर जोड़ा गया. क्योंकि GCC 4.6 अब भी डिफ़ॉल्ट रूप से, आपको इस विकल्प को स्पष्ट रूप से सक्षम करना होगा:
    • ndk-build बिल्ड के लिए, NDK_TOOLCHAIN_VERSION=4.8 को एक्सपोर्ट करें या इसे Application.mk में जोड़ें.
    • स्टैंडअलोन बिल्ड के लिए, --toolchain= विकल्प का इस्तेमाल make-standalone-toolchain.sh, उदाहरण के लिए:
      --toolchain=arm-linux-androideabi-4.8

    ध्यान दें: -Wunused-local-typedefs विकल्प को -Wall ने चालू किया है. होना अगर कंपाइल-टाइम दावे का इस्तेमाल किया जाता है, तो __attribute__((unused)) को जोड़ना न भूलें sources/cxx-stl/stlport/stlport/stl/config/features.h, पंक्ति #311. ज़्यादा के लिए जानकारी, देखें 55460 बदलें

    ध्यान दें: GCC 4.7 रिलीज़ और उसके बाद के वर्शन में, ARM कंपाइलर इस तरह से अन अलाइन किया गया ऐक्सेस कोड जनरेट करते हैं: यह ARMv6 और उससे ज़्यादा बिल्ड टारगेट के लिए डिफ़ॉल्ट रूप से सेट किया जाता है. आपको यह लिंक जोड़ना पड़ सकता है काम न करने वाले कर्नेल के लिए बनाते समय -mno-unaligned-access बिल्ड विकल्प यह सुविधा.

  • Clang 3.3 की सुविधा जोड़ी गई. NDK_TOOLCHAIN_VERSION=clang बिल्ड का विकल्प अब डिफ़ॉल्ट रूप से Clang 3.3 को चुनता है.

    ध्यान दें: GCC 4.4.3 और Clang 3.1, दोनों अब काम नहीं करते. इसे अगले एनडीके से हटा दिया जाएगा रिलीज़.

  • Python 2.7.5 के साथ काम करने के लिए, GNU प्रोजेक्ट डीबगर (GDB) को अपडेट किया गया.
  • Windows होस्ट के साथ काम करने के लिए MCLinker जोड़ा गया. ld.gold से उपलब्ध होने पर डिफ़ॉल्ट रूप से सेट हो जाता है, आपको इसमें -fuse-ld=mcld जोड़ना होगा MCLinker चालू करने के लिए LOCAL_LDFLAGS या APP_LDFLAGS.
  • ndk-depends टूल जोड़ा गया, जो ईएलएफ़ लाइब्रेरी डिपेंडेंसी को प्रिंट करता है. ज़्यादा जानकारी के लिए, NDK-DEPENDS.html देखें. (समस्या 53486)
अहम गड़बड़ियां ठीक की गईं:
  • android_native_app_glue में संभावित इवेंट मैनेज करने की समस्या को ठीक कर दिया गया है. (समस्या 41755)
  • NEON लोड और स्टोर के लिए सही अलाइनमेंट जनरेट करने के लिए, ARM/GCC-4.7 बिल्ड को ठीक किया गया है VST और VLD के निर्देश देखें. (जीसीसी समस्या 57271)
  • कॉन्स्टेंट नेगेटिव इंडेक्स के लिए, GCC 4.4.3/4.6/4.7 इंटरनल कंपाइलर एरर (ICE) ठीक किया गया मान, जो स्ट्रिंग की लिटरल वैल्यू है. (समस्या 54623)
  • ऑब्जेक्ट पते को लगातार शुरू करने के लिए, GCC 4.7 सेगमेंटेशन गड़बड़ी को ठीक कर दिया गया है. (समस्या 56508)
  • बूस्ट का इस्तेमाल करते समय -O वैल्यू के लिए, GCC 4.6 ARM सेगमेंटेशन की गड़बड़ी ठीक की गई 1.52.0. (समस्या 42891)
  • wait4() फ़ंक्शन के साथ काम करने के लिए, libc.so और libc.a को ठीक किया गया. (समस्या 19854)
  • clone() को शामिल करने के लिए, x86 libc.so और libc.a फ़ाइलें अपडेट की गईं फ़ंक्शन का इस्तेमाल करना होगा.
  • linker.list फ़ाइल में LOCAL_SHORT_COMMANDS गड़बड़ी ठीक की गई खाली है या उसका इस्तेमाल नहीं किया गया है.
  • CFI डायरेक्टिव का इस्तेमाल करने के लिए, Mac OS पर GCC MIPS बिल्ड को ठीक किया जा चुका है और इसके बिना भी ld.mcld --eh-frame-hdr अक्सर काम नहीं करता.
  • llvm/lib/VMCore/Value.cpp में Clang 3.2 X86/MIPS की इंटरनल कंपाइलर गड़बड़ी को ठीक किया गया. (59021 बदलें)
  • GCC 4.7 64-बिट Windows असेंबलर क्रैश का समाधान किया गया. (गड़बड़ी: out of memory allocating 4294967280 bytes).
  • ndk-gdb स्क्रिप्ट अपडेट की गई, ताकि --start या --launch कार्रवाइयां की जा सकें अब GNU डीबग सर्वर की इंतज़ार करें, ताकि यह ब्रेकपॉइंट सेट को ज़्यादा भरोसेमंद तरीके से हिट कर सके (जैसे कि JNI कोड में ब्रेकपॉइंट). (समस्या 41278)

    ध्यान दें: इस सुविधा के लिए jdb की ज़रूरत होती है और यह रुके हुए ब्रेकपॉइंट के बारे में चेतावनी देती है. पिछली कार्रवाई को पहले जैसा करने के लिए, --nowait विकल्प चुनें.

  • लाइब्रेरी सूची खाली होने पर GDB क्रैश होने की समस्या को ठीक किया गया.
  • bx pc या के बाद stepi निर्देश का इस्तेमाल करने पर GDB क्रैश को ठीक किया गया blx pc थंबनेल के लिए निर्देश. (समस्या 56962, समस्या 36149)
  • इसके बजाय DT_MIPS_RLD_MAP को ढूंढने के लिए, MIPS gdbserver को ठीक किया गया DT_DEBUG. (समस्या 56586)
  • ndk-build स्क्रिप्ट में सर्कुलर डिपेंडेंसी को ठीक किया गया, उदाहरण के लिए: अगर A->B और B->B, फिर B को बिल्ड से हटा दिया गया था. (समस्या 56690)
अन्य गड़बड़ियां ठीक की गईं:
  • ndk-build स्क्रिप्ट को ठीक किया गया, ताकि आप Clang के वर्शन को कमांड लाइन का विकल्प (जैसे, NDK_TOOLCHAIN_VERSION=clang3.2). पहले, सिर्फ़ एनवायरमेंट वैरिएबल के तौर पर वर्शन तय करने से काम बन गया.
  • MIPS बिल्ड टारगेट के लिए _Unwind_Exception का तय gabi++ साइज़ 24 हो गया है Clang कंपाइलर का इस्तेमाल करके. (54141 बदलें)
  • ndk-build स्क्रिप्ट को ठीक किया गया, ताकि यह पक्का किया जा सके कि बनाई गई लाइब्रेरी वाकई को उन प्रोजेक्ट से हटा दिया जाता है, जिनमें पहले से बनी स्टैटिक लाइब्रेरी शामिल होती हैं, ndk-build clean निर्देश. (54461 बदलें, 54480 बदलें)
  • NDK_ANALYZE=1 विकल्प में बदलाव किया गया है, ताकि यह ज़्यादा शब्दों में जानकारी न दे.
  • बिल्ड के लिए backward/ पाथ शामिल करने के लिए, gnu-libstdc++/Android.mk को ठीक किया गया जो पुराने सिस्टम के साथ काम करने की सुविधा का इस्तेमाल करते हैं. (समस्या 53404)
  • उस समस्या का समाधान किया गया है जहां stlport new कभी-कभी रैंडम वैल्यू लौटाती थी.
  • APP_ABIS के बजाय, CPU_ABIS के क्रम से मिलान करने के लिए ndk-gdb तय किया गया. (समस्या 54033)
  • उस समस्या को ठीक कर दिया गया है जहां MacOSX पर NDK 64-बिट बिल्ड कंपाइलर. (समस्या 53769)
  • 64-बिट Windows Vista का पता लगाने के लिए बिल्ड स्क्रिप्ट को ठीक किया गया. (समस्या 54485)
  • x86 ntonl/swap32 की गड़बड़ी ठीक की गई: invalid 'asm': operand number out of range. (समस्या 54465, 57242 बदलें)
  • स्ट्रिंग की लिटरल वैल्यू मर्ज करने के लिए, ld.gold को ठीक किया गया.
  • बड़े सिंबल अलाइनमेंट को मैनेज करने के लिए, ld.gold को ठीक किया गया.
  • --sort-section=name विकल्प को चालू करने के लिए, ld.gold को अपडेट किया गया.
  • -export-dynamic विकल्प को बंद करने के लिए, GCC 4.4.3/4.6/4.7 को ठीक किया गया: स्टैटिक तरीके से लिंक किए गए प्रोग्राम. जीसीसी अब स्टैटिक तरीके से .interp सेक्शन नहीं जोड़ता लिंक किए गए प्रोग्राम पर क्लिक करने से बचें.
  • अलग-अलग typedef के बारे में, GCC 4.4.3 stlport कंपाइलेशन गड़बड़ी ठीक की गई _Unwind_Control_Block महीने में से. (समस्या 54426)
  • बनाई गई AndroidManifest.xml फ़ाइलों को मैनेज करने के लिए, awk स्क्रिप्ट को ठीक किया गया Windows के पीछे \r वर्ण हो सकते हैं और इसकी वजह से बिल्ड में गड़बड़ियां हो सकती हैं. (समस्या 42548)
  • prebuilts/ की जांच के लिए, make-standalone-toolchain.sh को ठीक किया गया डायरेक्ट्री की मदद से यह पता लगाया जा सकता है कि होस्ट 32 बिट है या 64 बिट.
  • Clang 3.2 -integrated-as विकल्प को ठीक किया गया.
  • Clang 3.2 ARM EHABI कॉम्पैक्ट मॉडल pr1 और pr2 हैंडलर डेटा को ठीक किया गया.
  • इस Clang गड़बड़ी को ठीक करने के लिए, Clang -mllvm -arm-enable-ehabi विकल्प जोड़ा गया:
    clang: for the -arm-enable-ehabi option: may only occur zero or one times!
  • ऐप्लिकेशन में कोई uses-sdk एलिमेंट न होने पर, बिल्ड फ़ेल होने की समस्या ठीक की गई मेनिफ़ेस्ट. (समस्या 57015)
अन्य बदलाव:
  • हेडर में सुधार
    • __set_errno को इनलाइन फ़ंक्शन बनाने के लिए, हेडर में बदलाव किए गए, क्योंकि errno.h में __set_errno के इस्तेमाल पर रोक लगा दी गई है और libc.so अब नहीं है इसे एक्सपोर्ट करता है.
    • stdint.h को शामिल करने के लिए, elf.h में बदलाव किया गया. (समस्या 55443)
    • sys/un.h को ठीक किया गया, ताकि उसे अन्य हेडर से अलग रखा जा सके. (समस्या 53646)
    • इसे लेने के लिए, MotionEvent_getHistorical एपीआई फ़ैमिली को ठीक कर दिया गया है const AInputEvent* motion_event. (समस्या 55873)
    • const void* से जाने के लिए, malloc_usable_size तय किया गया. (समस्या 55725)
    • C99 के साथ बेहतर ढंग से काम करने के लिए, sttint.h को ठीक कर दिया गया है. (46821 बदलें)
    • WCHAR_MAX को फिर से परिभाषित नहीं करने के लिए और wchar.h को संशोधित किया गया WCHAR_MIN
    • पॉइंटर से जुड़े PRI और<inttypes.h> SCN मैक्रो. (समस्या 57218)
    • sys/cdefs.h हेडर को बदला गया, ताकि __WCHAR_TYPE__ का डेटा 32-बिट हो एपीआई लेवल 9 से कम के लिए, इसका मतलब है कि wchat_t, सभी के लिए 32-बिट है एपीआई लेवल. पिछली कार्रवाई को पहले जैसा करने के लिए, _WCHAR_IS_8BIT तय करें बूलियन वैरिएबल. (समस्या 57267)
  • एनडीके docs/ में ज़्यादा फ़ॉर्मैटिंग जोड़ी गई और दस्तावेज़ों में कई तरह के सुधार किए गए.
  • स्टैटिक लाइब्रेरी बनाते समय, थिन आर्काइव तकनीक के लिए अतिरिक्त सुविधा जोड़ी गई. (समस्या 40303)
  • stlport के साथ काम करने के लिए, make-standalone-toolchain.sh स्क्रिप्ट को अपडेट किया गया यह विकल्प चुनने पर, gnustl के अलावा लाइब्रेरी --stl=stlport. ज़्यादा जानकारी के लिए, STANDALONE-TOOLCHAIN.html देखें.
  • make-standalone-toolchain.sh स्क्रिप्ट को अपडेट किया गया, ताकि --llvm-version= विकल्प, $TOOLCHAIN_PREFIX-clang और clang और के अलावा $TOOLCHAIN_PREFIX-clang++ स्क्रिप्ट clang++ का इस्तेमाल करें, ताकि होस्ट के क्लैंग और clang++ परिभाषाओं का इस्तेमाल गलती से किया जा सके.
  • अपस्ट्रीम Clang में दो ऑप्टिमाइज़ेशन फिर से चालू करने के लिए दो फ़्लैग जोड़े गए, लेकिन इतने समय में बंद कर दिया गया जीसीसी के इकट्ठा किए गए कोड के साथ बेहतर तरीके से काम करने के लिए एनडीके:
    • मिसिंग मोड को फिर से चालू करने के लिए, -fcxx-missing-return-semantics फ़्लैग जोड़ा गया वापस करना Clang 3.2+ में semantics. आम तौर पर, सभी पाथ को रिटर्न के साथ खत्म होना चाहिए वैल्यू दिखाने वाले फ़ंक्शन के लिए स्टेटमेंट. अगर ऐसा नहीं है, तो क्लैंग इंसर्ट पाथ पर बिना रिटर्न के एक तय नहीं किया गया निर्देश (या डीबग मोड में ट्रैप) स्टेटमेंट का इस्तेमाल करें. अगर आपको यकीन है कि आपका कोड सही है, तो इस फ़्लैग का इस्तेमाल करके ऑप्टिमाइज़ करने की सुविधा भी देता है. अगर आपको पक्के तौर पर नहीं पता है, तो ऐसा न करें इस फ़्लैग का इस्तेमाल करें. ऐसा हो सकता है कि कॉल करने वाले (कॉलर) को अब भी रैंडम तरीके से गलत वैल्यू दिखे, लेकिन ऑप्टिमाइज़र इसका गलत इस्तेमाल नहीं करेगा और आपके कोड को डीबग करना मुश्किल बना देगा.
    • फिर से चालू करने के लिए -fglobal-ctor-const-promotion फ़्लैग जोड़ा गया स्टैटिक कंस्ट्रक्टर वाले ग्लोबल वैरिएबल को कॉन्सटेंट के तौर पर प्रमोट करना. इस झंडे के साथ, LLVM का ग्लोबल वैरिएबल ऑप्टिमाइज़ेशन पास, ग्लोबल स्टैटिक कंस्ट्रक्टर वाले वैरिएबल के साथ ब्राउज़ करें और उन्हें ग्लोबल कॉन्सटेंट में प्रमोट करें. हालांकि यह ऑप्टिमाइज़ेशन सही है, हो सकता है कि इसकी वजह से, कोड का कंपाइल न किया जा सके जीसीसी के मुताबिक. उदाहरण के लिए, कॉन्स्टेंट को म्यूटेबल में कास्ट करने के लिए, कोड const_cast कर सकता है और उसमें बदलाव कर सके. जीसीसी में, वैरिएबल रीड-राइट में होता है और कोड दुर्घटना हुई. Clang में, Const वैरिएबल रीड-ओनली मेमोरी में होता है और इसकी वजह से ऐप्लिकेशन को क्रैश कर देता है.
  • -mldc1-sdc1 को MIPS GCC और Clang कंपाइलर में जोड़ा गया. डिफ़ॉल्ट रूप से, कंपाइलर 8-बाइट वाले ऑब्जेक्ट को सही अलाइन करें और ldc1 और sdc1 निर्देशों का पालन करें उन्हें एक जगह से दूसरी जगह ले जाने के लिए. अगर आपका ऐप्लिकेशन ऐसे कस्टम ऐलोकेटर का इस्तेमाल करता है जो हमेशा अलाइन नहीं होता किसी नए ऑब्जेक्ट की 8-बाइट वाली सीमा को डिफ़ॉल्ट ऐलोकेटर की तरह ही, आपका ऐप्लिकेशन अलाइन न की गई मेमोरी पर, ldc1 और sdc1 कार्रवाइयों की वजह से क्रैश हो सकता है. इसमें इस समस्या को हल करने के लिए, -mno-ldc1-sdc1 फ़्लैग का इस्तेमाल करें.
  • इवेंट की गंभीरता को चेतावनी से जानकारी में डाउनग्रेड किया गया. ऐसा तब किया गया, जब APP_PLATFORM_LEVEL APP_MIN_PLATFORM_LEVEL से ज़्यादा है. APP_PLATFORM_LEVEL इससे कम हो सकती है jni/Application.mk में APP_PLATFORM से ज़्यादा, क्योंकि NDK में हेडर इस्तेमाल करें. इस मामले में, असल लेवल नीचे की ओर शिफ़्ट हो जाता है. कॉन्टेंट बनाने APP_MIN_PLATFORM_LEVEL को android:minSdkVersion ने इसमें बताया है के मेनिफ़ेस्ट को भी शामिल करें. (समस्या 39752)
  • android_getCpuIdArm() और android_setCpuArm() तरीके इसमें जोड़े गए cpu-features.c. इससे ARM सीपीयूआईडी आसानी से वापस पाया जा सकता है जानकारी. (समस्या 53689)
  • Clang कंपाइलिंग के लिए GCC 4.7 की as/ld का उपयोग करने के लिए ndk-build को संशोधित किया गया.

    ध्यान दें: GCC 4.7 में, monotonic_clock और is_monotonic का नाम बदलकर यह कर दिया गया है steady_clock और is_steady, दोनों.

  • ndk-build स्क्रिप्ट में ये नई चेतावनियां जोड़ी गई हैं:
    • अगर स्टैटिक लाइब्रेरी में LOCAL_LDLIBS/LDFLAGS का इस्तेमाल किया जाता है, तो चेतावनियां जोड़ी गईं मॉड्यूल देखें.
    • अगर किसी कॉन्फ़िगरेशन में बनाने के लिए कोई मॉड्यूल नहीं है, तो एक चेतावनी जोड़ी गई.
    • इसमें इस्तेमाल की जा रही नॉन-सिस्टम लाइब्रेरी के लिए एक चेतावनी जोड़ी गई शेयर की गई लाइब्रेरी या एक्ज़ीक्यूटेबल मॉड्यूल का LOCAL_LDLIBS/LDFLAGS.
  • बिल्ड स्क्रिप्ट अपडेट की गई, ताकि अगर APP_MODULES के बारे में न बताया गया हो, तो सिर्फ़ स्टैटिक स्क्रिप्ट दी जा सके लाइब्रेरी Android.mk में दी गई हैं, स्क्रिप्ट फ़ोर्स-बिल्ड इन सभी को बनाती है. (समस्या 53502)
  • LOCAL_SRC_FILES में ऐब्सलूट पाथ के साथ काम करने के लिए, ndk-build को अपडेट किया गया.
  • *-gdbtui की एक्ज़ीक्यूटेबल हटा दी गई है, जो *-gdb के डुप्लीकेट हैं जिन एक्ज़ीक्यूटेबल में -tui विकल्प चालू हो.
  • बिल्ड स्क्रिप्ट को अपडेट किया गया, ताकि जब Edison Design Group (EDG) कंपाइलर आपको चेतावनी दे सके फ़्रंट-एंड, _STLP_HAS_INCLUDE_NEXT को फिर से चालू कर देता है. (समस्या 53646)
  • नई वैल्यू को बदलने की अनुमति देने के लिए, एनवायरमेंट वैरिएबल NDK_LIBS_OUT जोड़ा गया डिफ़ॉल्ट $PROJECT/libs से libraries/gdbserver का पाथ. ज़्यादा जानकारी के लिए, OVERVIEW.html देखें.
  • फ़ॉर्मैट स्ट्रिंग सुरक्षा के साथ कोड कंपाइल करने के लिए, ndk-build स्क्रिप्ट डिफ़ॉल्ट को बदला गया -Wformat -Werror=format-security. आप सेट कर सकते हैं इसे बंद करने के लिए LOCAL_DISABLE_FORMAT_STRING_CHECKS=true. ज़्यादा जानकारी के लिए, ANDROID-MK.html देखें
  • ndk-gdb-py में, एसटीएल प्रिटी-प्रिंट की सुविधा जोड़ी गई. ज़्यादा जानकारी के लिए, यह देखें NDK-GDB.html.
  • googletest फ़्रेमवर्क के आधार पर जोड़े गए टेस्ट.
  • टूलचेन बिल्ड स्क्रिप्ट में एक सूचना जोड़ी गई. यह सूचना आपको तब सूचना देती है, जब मौजूदा शेल bash नहीं है.
ज़रूरी बदलाव:
  • 64-बिट होस्ट टूलचेन सेट जोड़ा गया (पैकेज नाम प्रत्यय *-x86_64.*). ज़्यादा के लिए जानकारी के लिए, CHANGES.HTML और NDK-BUILD.html देखें.
  • Clang 3.2 कंपाइलर जोड़ा गया. GCC 4.6 अब भी डिफ़ॉल्ट है. इसका इस्तेमाल करने के बारे में जानकारी पाने के लिए, क्लैंग कंपाइलर, CHANGES.HTML देखें.
  • Linux/MacOSX होस्ट के लिए स्टैटिक कोड ऐनालाइज़र जोड़ा गया. इसका इस्तेमाल करने के बारे में जानकारी पाने के लिए, ऐनालाइज़र, CHANGES.HTML देखें.
  • Linux/MacOSX होस्ट के लिए MCLinker जोड़ा गया, जो प्रयोग के तौर पर उपलब्ध सुविधा के तौर पर जोड़ा गया है. ld.gold लिंकर डिफ़ॉल्ट रूप से उपलब्ध होता है, इसलिए आपको इसे साफ़ तौर पर चालू करना होगा. ज़्यादा के लिए जानकारी, CHANGES.HTML देखें.
  • मॉड्यूल डिपेंडेंसी के लिए टोपोलॉजिकल तरीके से क्रम में लगाने की सुविधा का इस्तेमाल करने के लिए, ndk-build को अपडेट किया गया. इसका मतलब है कि बिल्ड अपने-आप इसमें बताई गई लाइब्रेरी के क्रम को क्रम से लगाता है LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES, और LOCAL_SHARED_LIBRARIES. ज़्यादा जानकारी के लिए, CHANGES.HTML देखें. (समस्या 39378)
अहम गड़बड़ियां ठीक की गईं:
  • -O2 में सभी टूलचेन बनाने के लिए, बिल्ड स्क्रिप्ट को ठीक किया गया. पुराने टूल चेन रिलीज़ को गलत तरीके से, ऑप्टिमाइज़ेशन के बिना बनाया गया था.
  • बिल्ड स्क्रिप्ट को ठीक कर दिया गया है, जो MacOSX के लिए 64-बिट में Clang/llvm को बिना किसी शर्त के बनाती है.
  • GCC 4.6/4.7 इंंटरनल कंपाइलर गड़बड़ी को ठीक किया गया: gen_thumb_movhi_clobber at config/arm/arm.md:5832. (समस्या 52732)
  • बिल्ड की समस्या को ठीक कर दिया गया है, जहां GCC/ARM 4.6/4.7, 64-बिट एटॉमिक का इस्तेमाल करके कोड को लिंक नहीं कर पाता है पहले से मौजूद फ़ंक्शन. (समस्या 41297)
  • GCC 4.7 लिंकर DIV के इस्तेमाल से मेल न खाने वाली गड़बड़ियां ठीक की गईं. (सोर्सवेयर की समस्या)
  • जीसीसी 4.7 इंटरनल कंपाइलर की गड़बड़ी build_data_member_initialization, at cp/semantics.c:5790 को ठीक किया गया.
  • जीसीसी 4.7 इंटरनल कंपाइलर की गड़बड़ी redirect_eh_edge_1, at tree-eh.c:2214 को ठीक किया गया. (समस्या 52909)
  • जीसीसी 4.7 सेगफ़ॉल्ट ठीक किया गया. (जीसीसी की समस्या)
  • <chrono> वाली घड़ी का रिज़ॉल्यूशन ठीक किया गया और steady_clock को चालू किया गया. (समस्या 39680)
  • GCC 4.7 libstdc++ के लिए _GLIBCXX_HAS_GTHREADS चालू करने के लिए टूलचेन को ठीक किया गया है. (समस्या 41770, समस्या 41859)
  • X86 MXX/SSE कोड मौजूद न होने की वजह से लिंक न हो पाने की समस्या को ठीक कर दिया गया है posix_memalign. (51872 बदलें)
  • i386.c में GCC4.7/X86 सेगमेंटेशन गड़बड़ी को ठीक किया गया, फ़ंक्शन distance_non_agu_define_in_bb(). (50383 बदलें)
  • cmov के काम करने के तरीके को पहले जैसा करने के लिए, GCC4.7/X86 को ठीक कर दिया गया है. (जीसीसी की समस्या)
  • libstdc++/GCC4.7 में setlocale() की वैल्यू को ठीक करके हैंडल करने वाली शून्य वैल्यू दी गई है. (समस्या 46718)
  • __exidx_start के लिए ld.gold रनटाइम के तय न होने वाले रेफ़रंस को ठीक किया गया और __exidx_start_end. (52134 बदलें)
  • Eigen लाइब्रेरी का इस्तेमाल करते समय Clang 3.1 की अंदरूनी कंपाइलर गड़बड़ी ठीक की गई. (समस्या 41246)
  • C++11 में <chrono> वाली Clang 3.1 इंटरनल कंपाइलर की गड़बड़ी को ठीक किया गया मोड. (समस्या 39600)
  • किसी तरीके के लिए ऑब्जेक्ट कोड जनरेट करते समय, Clang 3.1 की इंटरनल कंपाइलर की गड़बड़ी को ठीक किया गया एक यूनिफ़ॉर्म शुरू किया गया rvalue. (समस्या 41387)
  • फ़िक्स्ड Clang 3.1/X86 स्टैक रीअलाइनमेंट. (52154 बदलें)
  • Android 4.1.2 पर डीबग करते समय GNU डीबगर (GDB) SIGILL की समस्या ठीक की गई. (समस्या 40941)
  • जब सिंबल की स्थिति में GDB source:line ब्रेकपॉइंट सेट नहीं कर पाता, तब उस समस्या को ठीक कर दिया गया है शामिल है लंबे, इनडायरेक्ट फ़ाइल पाथ. (समस्या 42448)
  • MIPS PIE के एक्ज़ीक्यूटेबल के लिए GDB read_program_header को ठीक किया गया. (49592 बदलें)
  • uncaught_exception() में, STLport सेगमेंटेशन गड़बड़ी को ठीक किया गया. (50236 बदलें)
  • इनके ऐक्सेस के अलाइन न होने की वजह से, अपवाद हैंडलिंग में बस की STLport गड़बड़ी ठीक की गई DW_EH_PE_udata2, DW_EH_PE_udata4, और DW_EH_PE_udata8.
  • nothrow new[] ऑपरेटर के साथ Gabi++ असीमित बार-बार होने वाली समस्या को ठीक किया गया. (समस्या 52833)
  • अपवाद हैंडलर पॉइंटर के लिए Gabi++ गलत ऑफ़सेट को ठीक किया गया. (53446 बदलें)
  • अपवाद ऑब्जेक्ट पर Gabi++ अनावश्यक को हटाया गया (53447 बदलें)
अन्य गड़बड़ियां ठीक की गईं:
  • ठीक किए गए एनडीके हेडर:
    • size_t, ssize_t, और ptrdiff_t.
    • MIPS और ARM fenv.h हेडर को ठीक किया गया.
    • stddef.h को ठीक किया गया, ताकि offsetof को फिर से तय न किया जा सके, क्योंकि यह पहले से मौजूद है में शामिल हो सकते हैं.
    • Elf32_auxv_t और Elf64_auxv_t को शामिल करने के लिए, elf.h को ठीक किया गया. (समस्या 38441)
    • इसमें #ifdef C++ परिभाषाओं को ठीक किया गया OpenSLES_AndroidConfiguration.h हेडर फ़ाइल. (समस्या 53163)
  • चुपचाप बाहर निकलने के बजाय मेमोरी गड़बड़ी के खत्म होने के बाद निरस्त करने के लिए STLport को ठीक किया गया.
  • एपीआई लेवल 8 और इससे पहले के लेवल के साथ कंपाइल करने के लिए, फ़िक्स्ड सिस्टम और Gabi++ हेडर.
  • /proc/self/auxv को पार्स न करने के लिए, cpufeatures को ठीक किया गया. (समस्या 43055)
  • होस्ट libstdc++ और Windows प्लैटफ़ॉर्म पर निर्भर न रहने के लिए ld.gold को ठीक किया गया, इसके लिए, libgcc_sjlj_1.dll लाइब्रेरी पर निर्भर नहीं रहना पड़ता.
  • Clang 3.1 को ठीक कर दिया गया है, जिससे .vsave में अलग-अलग रजिस्टर सूची मिलती है और काम नहीं करता असेंबलर. (49930 बदलें)
  • libgabi++ को कंपाइल करने और test-stlport को पास करने के लिए, Clang 3.1 को ठीक किया गया है MIPS बिल्ड टारगेट के लिए टेस्ट. (51961 बदलें)
  • सिर्फ़ C++ के लिए डिफ़ॉल्ट रूप से अपवाद चालू करने के लिए Clang 3.1 को ठीक किया गया है, C के लिए नहीं.
  • ज़्यादातर GNU अपवाद टेस्ट को पास करने के लिए, Clang 3.1 में कई समस्याओं को ठीक किया गया है.
  • स्टैंडअलोन एनडीके कंपाइलर में clang और clang++ स्क्रिप्ट को ठीक किया गया, ताकि इनका पता लगाया जा सके -cc1 के साथ-साथ यह भी ज़रूरी है कि -target मिलने पर इसकी जानकारी न दी जाए.
  • Application.mk में NDK_APP_OUT को निगरानी में रखने के लिए, ndk-build गड़बड़ी को ठीक किया गया.
  • sigsetjmp मौजूद न होने वाले X86 libc.so और lib.a को ठीक कर दिया गया है और siglongjmp फ़ंक्शन का एलान पहले ही setjmp.h में कर दिया गया है. (समस्या 19851)
  • C++ 11 में Clang के साथ काम करने के लिए पैच GCC 4.4.3/4.6/4.7 libstdc++. (क्लैंग की समस्या)
  • HOST_AWK को दिए गए आर्ग्युमेंट में, साइगविन पाथ ठीक किया गया.
  • प्रोजेक्ट के JNI से चलाने पर, विंडो में ndk-build स्क्रिप्ट चेतावनी ठीक की गई डायरेक्ट्री. (समस्या 40192)
  • अगर Makefile ने ndk-build स्क्रिप्ट नहीं बनाई थी, तो उस समस्या को ठीक कर दिया गया है LOCAL_PATH परिभाषा के पीछे की खाली सफ़ेद जगह. (समस्या 42841)
अन्य बदलाव:
  • जीसीसी/एमआईपीएस टूलचेन में, थ्रेडिंग की सुविधा चालू की गई.
  • अपडेट किए गए जीसीसी अपवाद मैनेज करने वाले हेल्पर __cxa_begin_cleanup और पिछले इवेंट की तुलना में डिफ़ॉल्ट तौर पर दिखाने के लिए __cxa_type_match GNU libstdc++ में छिपाई गई दृश्यता. ज़्यादा जानकारी के लिए, यह देखें CHANGES.HTML.
  • बिल्ड स्क्रिप्ट को अपडेट किया गया, ताकि Gabi++ और STLport की स्टैटिक लाइब्रेरी अपवाद को मैनेज करने वाले हेल्पर को छोड़कर, छिपी हुई विज़िबिलिटी.
  • बिल्ड को अपडेट किया गया, ताकि STLport को 'थंब मोड' में ARM के लिए बनाया जा सके.
  • Gabi++ में std::set_new_handler के लिए सहायता जोड़ी गई. (समस्या 52805)
  • GNU libstdc++ में FUTEX सिस्टम कॉल चालू किया गया.
  • ndk-build को अपडेट किया गया, ताकि यह पहले से बनी स्टैटिक लाइब्रेरी को कॉपी न करे प्रोजेक्ट की obj/local/<abi>/ डायरेक्ट्री. (समस्या 40302)
  • __ARM_ARCH_5*__ को ARM toolchains/*/setup.mk स्क्रिप्ट से हटाया गया. (समस्या 21132)
  • ARM के लिए, पहले से ज़्यादा GNU libstdc++ लाइब्रेरी बनाई गई.
  • MIPS फ़्लोटिंग-पॉइंट madd/msub/nmadd/nmsub/recip/rsqrt चालू किया गया 32-बिट FPU के साथ निर्देश.
  • ज़्यादा ऑप्टिमाइज़ेशन की अनुमति देने के लिए, GCC 4.6 और 4.7 में ग्रेफ़ाइट लूप ऑप्टिमाइज़र को चालू किया गया: -fgraphite, -fgraphite-identity, -floop-block, -floop-flatten, -floop-interchange, -floop-strip-mine, -floop-parallelize-all, और -ftree-loop-linear. (जानकारी)
  • Linux पर Clang 3.1 और Max OS X 32-बिट होस्ट के लिए polly को चालू किया गया, जो विश्लेषण करता है और मेमोरी के ऐक्सेस को ऑप्टिमाइज़ करता है. (जानकारी)
  • Linux (Clang LTO) पर GCC 4.7, 4.6, Clang 3.2, और Clang 3.1 में -flto को चालू किया गया है LLVMgold.so के ज़रिए किया जाता है). एमआईपीएस कंपाइलर टारगेट काम नहीं करते, क्योंकि ld.gold उपलब्ध नहीं है.
  • GCC 4.6/4.7 में ld.gold के लिए --plugin और --plugin-opt चालू किए गए.
  • GCC 4.7 में ld.gold के लिए --text-reorder को चालू किया गया.
  • _GLIBCXX_USE_C99_MATH के साथ GNU libstdc++ को कॉन्फ़िगर किया गया है. यह बायोनिक हेडर में isinf स्क्रिप्ट. ज़्यादा जानकारी के लिए, यह देखें CHANGES.html.
  • बिल्ड स्क्रिप्ट में APP_LDFLAGS को जोड़ा गया. ज़्यादा जानकारी के लिए, यह देखें ANDROID-MK.html.
  • NDK_LOG=0 को NDK_LOG बंद करने की अनुमति देने के लिए, बिल्ड स्क्रिप्ट को अपडेट किया गया.
  • NDK_HOST_32BIT=0 को होस्ट डेवलपर बंद करने की अनुमति देने के लिए बिल्ड स्क्रिप्ट अपडेट की गई एनवायरमेंट 32-बिट टूलचेन.
  • -march= और -mtune= के डिफ़ॉल्ट फ़्लैग को इससे बदला गया pentiumpro और generic से i686 और atom के लिए.
  • बेहतर टूलचेन बिल्ड स्क्रिप्ट:
    • mingw बिल्ड टाइप के लिए, build-gcc.sh में रेस कंडिशन को ठीक किया गया इसकी वजह से, पैरलल बिल्ड प्रोसेस करने में काफ़ी दिक्कत आ रही थी.
    • build-gabi++.sh और build-stlport.sh अपडेट किए गए हैं, ताकि अब इन्हें चलाया जा सके NDK पैकेज में जाकर. (समस्या 52835)
    • MSys उपयोगिता संग्रह में run-tests.sh को ठीक किया गया.
    • बेहतर 64-बिट होस्ट टूलचेन और कैनेडियन क्रॉस बिल्ड सपोर्ट.
    • build-mingw64-toolchain.sh स्क्रिप्ट को सबसे नए वर्शन में अपडेट किया गया.
    • libgnustl_static.a और stlport_static.a बिल्ड में विकल्प जोड़ा गया वह भी छिपा हुआ हो.
ज़रूरी बदलाव:
  • एनडीके में GNU कंपाइलर कलेक्शन (जीसीसी) 4.7 कंपाइलर जोड़ा गया. जीसीसी 4.6 कंपाइलर अब भी डिफ़ॉल्ट है, इसलिए आपको नया वर्शन साफ़ तौर पर इस तरीके से चालू करना होगा:
    • ndk-build के लिए, NDK_TOOLCHAIN_VERSION=4.7 वैरिएबल एक्सपोर्ट करें या इसे Application.mk में जोड़ें.
    • स्टैंडअलोन बिल्ड के लिए, --toolchain= विकल्प को इनमें जोड़ें make-standalone-toolchain.sh का उदाहरण:
      --toolchain=arm-linux-androideabi-4.7

    ध्यान दें: यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. कृपया इसे आज़माएं और किसी भी समस्या की शिकायत करें.

  • gabi++ की मदद से, stlport अपवाद के लिए सहायता जोड़ी गई. ध्यान दें कि नया gabi++ dlopen और उससे जुड़े कोड पर निर्भर करता है. इसका मतलब है कि:
    • अब आप -static का इस्तेमाल करके स्टैटिक फ़ाइल नहीं बना सकते विकल्प चुनें या इसका इस्तेमाल करके libstlport_static.a को शामिल करें APP_STL := stlport_static. (आप अब भी -static विकल्प का इस्तेमाल कर सकते हैं से अलग हैं.) डाइनैमिक एक्ज़ीक्यूटेबल का इस्तेमाल करके कंपाइल किया जा रहा है कंपाइलर की वजह से include $(BUILD_EXECUTABLE) काम करना जारी रखेगा -ldl विकल्प अपने-आप जोड़ देता है.
    • अगर आपका प्रोजेक्ट -nostdlib और {-Wl,--no-undefined} का इस्तेमाल करके लिंक करता है, तो -ldl विकल्प को मैन्युअल तौर पर शामिल करना चाहिए.
    ज़्यादा जानकारी के लिए, CPLUSPLUS-SUPPORT.html देखें.

    ध्यान दें: इस सुविधा को फ़िलहाल आज़माया जा रहा है और यह जीसीसी के साथ बेहतर तरीके से काम करती है 4.6/4.7 कंपाइलर, GCC 4.4.3 या Clang 3.1 के मुकाबले. कृपया इसे आज़माएं और किसी भी समस्या की शिकायत करें.

  • x86 के लिए, -mstack-protector-guard= विकल्प जोड़ा गया, ताकि ग्लोबल डिफ़ॉल्ट पाथ, जो पुरानी Android C लाइब्रेरी (बायोनिक) के साथ काम करता है और -fstack-protector के लिए एक नया tls पाथ (%gs:20) है, GCC 4.6 का इस्तेमाल कर रहे -fstack-protector-all और -fstack-protector-strong और कंपाइलर के तौर पर भी रिकॉर्ड किया जा सकता है.

    ध्यान दें: -mstack-protector-guard सेटिंग अपने-आप में ये काम नहीं करती -fstack-protector* के किसी भी विकल्प को चालू करें.

  • android_setCpu() फ़ंक्शन को इसमें जोड़ा गया इसके ज़रिए अपने-आप पहचान होने पर इस्तेमाल करने के लिए sources/android/cpufeatures/cpu-features.c Android 4.1 और इसके बाद के वर्शन में /proc संभव नहीं है. (Chromium समस्या 164154)
अहम गड़बड़ियां ठीक की गईं:
  • ndk-build स्क्रिप्ट का इस्तेमाल करते समय, ऑब्जेक्ट फ़ाइलों को फिर से बनाने की गैर-ज़रूरी समस्या ठीक की गई. (समस्या 39810)
  • Mac OS X 10.6.x के लिए NDK 8c रिलीज़ के साथ, लिंकर के काम न करने की समस्या को ठीक किया गया, जिससे निम्न गड़बड़ी:
    dyld: lazy symbol binding failed: Symbol not found: _memmem
    Referenced from: ...../arm-linux-androideabi/bin/ld
    Expected in: /usr/lib/libSystem.B.dylib
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है यह समस्या Mac OS X 10.7 पर बनाने की वजह से आई थी, जिससे ऐसी बाइनरी बनाई गईं जो Mac OS 10.6.x और NDK के साथ काम नहीं करता.
  • Clang++ स्टैंडअलोन बिल्ड स्क्रिप्ट से -x c++ विकल्प हटाए गए. (समस्या 39089)
  • सिगविन में NDK_TOOLCHAIN_VERSION=clang3.1 विकल्प का इस्तेमाल करने से जुड़ी समस्याओं को ठीक किया गया. (समस्या 39585)
  • make-standalone-toolchain.sh स्क्रिप्ट को ठीक किया गया, ताकि ऐसा स्टैंडअलोन टूलचेन जो सिगविन या MinGW एनवायरमेंट का इस्तेमाल करता है. नतीजे के तौर पर मिलने वाला टूलचेन का इस्तेमाल Cygsin, MingGW या CMD.exe एनवायरमेंट में किया जा सकता है. (समस्या 39915, समस्या 39585)
  • इसके लिए, Android-14 के बिल्ड में SL_IID_ANDROIDBUFFERQUEUESOURCE का वह विकल्प जोड़ा गया जो मौजूद नहीं था ARM और X86. (समस्या 40625)
  • ANDROID_CPU_X86_FEATURE_MOVBE सुविधा के लिए x86 सीपीयू की पहचान को ठीक किया गया. (समस्या 39317)
  • स्टैंडर्ड टेंप्लेट लाइब्रेरी (एसटीएल) को C++ का इस्तेमाल करने से रोकने वाली समस्या ठीक कर दी गई है वे स्रोत जिनमें .cpp फ़ाइल एक्सटेंशन नहीं है.
  • फिर से लोड1.c:1061 पर GCC 4.6 ARM इंटरनल कंपाइलर की गड़बड़ी ठीक की गई. (समस्या 20862)
  • emit-rtl.c:1954 पर जीसीसी 4.4.3 एआरएम इंटरनल कंपाइलर की गड़बड़ी ठीक की गई. (समस्या 22336)
  • postreload.c:396 पर GCC 4.4.3 ARM इंटरनल कंपाइलर गड़बड़ी ठीक की गई. (समस्या 22345)
  • GCC 4.6/4.7 लैम्डा फ़ंक्शन को स्किप करने से जुड़ी समस्या ठीक कर दी गई है. (समस्या 35933)
अन्य गड़बड़ियां ठीक की गईं:
  • NDK हेडर फ़ाइल में सुधार:
    • __WINT_TYPE__ और wint_t को एक ही टाइप के लिए सेट किया गया.
    • android/bitmap.h में टाइपिंग की गलती को ठीक किया गया. (समस्या 15134)
    • errno.h में टाइपिंग की गलती को ठीक किया गया.
    • sys/cdefs.h में __STDC_VERSION__ की मौजूदगी का पता लगाने की सुविधा जोड़ी गई. (समस्या 14627)
    • byteswap.h और dirent.h में फिर से व्यवस्थित किए गए हेडर.
    • PAGE_SIZE देने वाले page.h को शामिल करने के लिए, limits.h को ठीक किया गया सेटिंग. (समस्या 39983)
    • glGetAttribLocation() और प्रॉडक्ट के रिटर्न का तरीका तय किया गया int से GLint तक glGetUniformLocation().
    • x86 बिल्ड के लिए __BYTE_ORDER कॉन्सटेंट को ठीक किया गया. (समस्या 39824)
  • ARM के लिए, -Os को -O2 से ओवरराइट नहीं करने वाली ndk-build स्क्रिप्ट को ठीक किया गया बिल्ड.
  • बिल्ड स्क्रिप्ट को ठीक किया गया, ताकि HOST_AWK, HOST_SED, और अन्य डेटा को ओवरराइट किया जा सके HOST_MAKE सेटिंग.
  • fsck_msdos पर ld.gold की समस्या ठीक कर दी गई है, ताकि इसके बनाए गए ऑब्जेक्ट को लिंक किया जा सके Intel C/C++ कंपाइलर (ICC).
  • Clang में ARM EHABI सहायता को खास निर्देशों के मुताबिक बनाया गया है.
  • टारगेट लिंक मैप पर चलने में लगने वाले समय को कम करने के लिए, जीएनयू डीबगर (जीडीबी) को ठीक किया गया solib इवेंट के दौरान. (समस्या 38402)
  • शेयर की गई लाइब्रेरी को लिंक करते समय, libgcc.a फ़ाइल के मौजूद न होने की समस्या ठीक की गई.
अन्य बदलाव:
  • ARM से GCC 4.6 के लिए, बैकपोर्ट किए गए 64-बिट बिल्ट-इन ऐटॉमिक फ़ंक्शन.
  • ऑडियो आउटपुट में लगने वाले समय के लिए, अन्य दस्तावेज़ और और साथ ही अन्य दस्तावेज़ और समाधान.
  • Clang की मदद से डीबग बिल्ड को ठीक किया गया है. इससे नॉन-ज़ीर फ़ंक्शन अब SIGILL बढ़ा देते हैं बिना रिटर्न स्टेटमेंट वाले पाथ के लिए सिग्नल.
  • -clang3.1 सफ़िक्स को स्वीकार करने के लिए, make-standalone-toolchain.sh को अपडेट किया गया जो GCC 4.6 टूलचेन में --llvm-version=3.1 को जोड़ने के बराबर है.
  • GCC और Clang की गड़बड़ी की रिपोर्ट के यूआरएल को इस पर अपडेट किया गया: https://source.android.com/source/report-bug s.html पर लागू होता है.
  • llvm-objdump में ARM ELF की सुविधा जोड़ी गई.
  • Clang बिल्ड के लिए c इनपुट को c++ के तौर पर ट्रीट करने की चेतावनी को सीमित किया गया.
  • बिल्ड को अपडेट किया गया, ताकि libiberty.a का सिर्फ़ 32-बिट वर्शन ही तैयार हो सके और lib32/ में रखा गया है.
ज़रूरी बदलाव:
  • Clang 3.1 कंपाइलर को एनडीके में जोड़ा गया. GNU कंपाइलर कलेक्शन (जीसीसी) 4.6 अब भी डिफ़ॉल्ट है, इसलिए आपको इस तरह से Clang कंपाइलर विकल्प को साफ़ तौर पर चालू करना होगा:
    • ndk-build के लिए, NDK_TOOLCHAIN_VERSION=clang3.1 एक्सपोर्ट करें या इस एनवायरमेंट वैरिएबल सेटिंग को Application.mk में जोड़ें.
    • स्टैंडअलोन बिल्ड के लिए --llvm-version=3.1 को जोड़ें make-standalone-toolchain.sh और CC और CXX को अपने बनाने के लिए <tool-path>/bin/clang और <tool-path>/bin/clang++. इनके लिए STANDALONE-TOOLCHAIN.html देखें विवरण.

    ध्यान दें: यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. कृपया इसे आज़माएं और किसी भी समस्या की शिकायत करें.

  • Windows टूलचेन के लिए, गोल्ड लिंकर ld.gold जोड़ा गया. गोल्ड लिंकर, सभी होस्ट पर ARM और X86 के लिए डिफ़ॉल्ट सेटिंग. ld.bfd का इस्तेमाल करने के लिए, इसे बदला जा सकता है LOCAL_LDFLAGS += -fuse-ld=bfd को Android.mk में जोड़कर या इसके हिसाब से लिंकर पासिंग -fuse-ld=bfd को g++/clang++ कमांड लाइन पर ले जाएं, जो लिंक करती है.
  • ndk-build[.cmd] के एनडीके पाथ में स्पेस के लिए जांच जोड़ी गई ndk-gdb स्क्रिप्ट, बिल्ड की ऐसी गड़बड़ियों को रोकने के लिए जिनका पता लगाना मुश्किल है.
  • एपीआई लेवल को मैनेज करने की प्रोसेस में, ये बदलाव किए गए:
    • बिल्ड लॉजिक को बदला गया, ताकि जिन प्रोजेक्ट से android-10 के बारे में जानकारी मिलती हो APP_PLATFORM, project.properties में android-13 या के बजाय, android-9 से default.properties लिंक करें android-14.
    • बिल्ड को अपडेट किया गया है ताकि android-16 (ज़ेली बीन) या उसके बाद के वर्शन का इस्तेमाल करने वाले एक्ज़ीक्यूटेबल को पोज़िशन-इंडिपेंडेंट एक्ज़ीक्यूटेबल (पीआईई) के लिए -fPIE विकल्प के साथ कंपाइल किया गया है. APP_PIE के नए विकल्प की मदद से, इस व्यवहार को कंट्रोल किया जा सकता है. ज़्यादा जानकारी के लिए, APPLICATION-MK.html पर जाएं.

      ध्यान दें: 14 से ऊपर के सभी एपीआई लेवल अब भी platforms/android-14 से लिंक हैं. साथ ही, कोई नया platforms/android-N नहीं जोड़ा गया है.

    • अडजस्ट किए गए एपीआई लेवल का साइज़ बड़ा होने पर चेतावनी देने के लिए, ndk-build में बदलाव किया गया प्रोजेक्ट के AndroidManifest.xml में android:minSdkVersion से भी ज़्यादा है.
  • ARM से जुड़ी ज़्यादा सुविधाओं को शामिल करने के लिए, cpu-features हेल्पर लाइब्रेरी को अपडेट किया गया. ज़्यादा जानकारी के लिए, sources/android/cpufeatures/cpu-features.h पर जाएं.
  • X86 प्लैटफ़ॉर्म के लॉन्ग डबल को बदलकर 8 बाइट किया गया. इस डेटा टाइप का नाम अब दुगुनी आकार के समान है, लेकिन फिर भी इसे एक अलग प्रकार के रूप में माना जाता है.
  • APP_ABI=armeabi-v7a के लिए अपडेट किया गया बिल्ड:
    • -march=armv7-a पैरामीटर को पास करने के लिए, इस बिल्ड टाइप में बदलाव किया गया लिंकर पर ले जाएगा. इस बदलाव से पक्का होता है कि v7 से जुड़ी लाइब्रेरी और crt*.o सही तरीके से लिंक किया गया.
    • इसके बजाय -mfpu=vfpv3-d16 को ndk-build में जोड़ा गया पिछली रिलीज़ में -mfpu=vfp विकल्प का इस्तेमाल किया गया.
अहम गड़बड़ियां ठीक की गईं:
  • रूट खास अधिकारों के साथ make-standalone-toolchain.sh को चलाने से जुड़ी समस्या ठीक की गई जिसकी वजह से कुछ उपयोगकर्ता, स्टैंडअलोन टूल चेन का इस्तेमाल नहीं कर पाए. (समस्या 35279)
    • एनडीके रिलीज़ पैकेज की सभी फ़ाइलों और एक्ज़ीक्यूटेबल को इस तरह से सेट किया गया है कि वे सभी के लिए अनुमतियां लागू करें.
    • कॉपी करने के दौरान libstdc++.a का मालिकाना हक/ग्रुप सुरक्षित रखा जाता है.
  • Windows में पहले से बने echo.exe से ग़ैर-ज़रूरी \r को हटाया गया. गैर-ज़रूरी \r की वजह से, GNU डीबगर (GDB) में gdb.setup फ़ेल हो गया, क्योंकि यह गलत तरीके से पथ का हिस्सा बन गया. (समस्या 36054)
  • ठीक किए गए Windows समानांतर बिल्ड जो कभी-कभी host-mkdir लागू करना. (समस्या 25875)
  • typeinfo के नामों को मर्ज नहीं करने के लिए, GCC 4.4.3 GNU libstdc++ को तय किया गया डिफ़ॉल्ट. ज़्यादा जानकारी के लिए, यह देखें toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo. (समस्या 22165)
  • GCC 4.6 में null कॉन्टेक्स्ट से जुड़ी समस्या ठीक की गई cp/mangle.c::write_unscoped_name, जहां कॉन्टेक्स्ट के मुताबिक GCC क्रैश हो सकता है null और TREE_CODE में इसका रेफ़रंस दिया गया है.
  • फ़्लोट के लिए ARM NEON-खास प्रकार की परिभाषाओं पर GCC 4.4.3 क्रैश को ठीक किया गया है. (समस्या 34613)
  • STLport के अंदरूनी _IteWrapper::operator*() को लागू करने की गड़बड़ी ठीक की गई जहां बहिष्कृत मान वाले पुराने स्टैक स्थान को वापस लौटाया जाता है और रनटाइम क्रैश हो जाता है. (समस्या 38630)
  • ARM से जुड़े समाधान:
    • इस समस्या को ठीक करने के लिए, ARM GCC 4.4.3/4.6 g++ को ठीक कर दिया गया है, ताकि इस बात की चेतावनी न दी जा सके कि <va_list> को GCC 4.4 में बदला गया था. वेब पेजों पर मौजूद इस चेतावनी से बचने के लिए, -Wno-psabi को स्विच करने की अब ज़रूरत नहीं है.
    • .arm या .neon सफ़िक्स वाले प्रोजेक्ट में हुई गड़बड़ी ठीक की गई LOCAL_SRC_FILES ने APP_STL का भी इस्तेमाल किया है. APP_STL के साथ, ndk-build स्क्रिप्ट ने पहले LOCAL_SRC_FILES में C++ फ़ाइलों की खोज की कंपाइलेशन में STL header/lib पाथ जोड़ रहा है. ndk-build को यहां बदला गया: खोज से पहले .arm और .neon सफ़िक्स को फ़िल्टर कर दें. अगर ऐसा नहीं है, तो आइटम LOCAL_SRC_FILES में, जैसे myfile.cpp.arm.neon को C++ के तौर पर कंपाइल नहीं किया जाएगा कोड.
    • पुराने से ऑब्जेक्ट को लिंक करने की सुविधा के लिए, binutils-2.21/ld.bfd को ठीक किया गया tag_FP_arch के बिना binutils, जिसकी वजह से पुष्टि नहीं हो सकी GNUbinutils में गड़बड़ी संदेश. (समस्या 35209)
    • अनजान ईएबीआई ऑब्जेक्ट एट्रिब्यूट 44 चेतावनी को हटाया गया, जब binutils-2.19/ld नए binutils-2.21 के ज़रिए पहले से बने ऑब्जेक्ट को लिंक करता है
    • GNU stdc++ के कंपाइलेशन में -mthumb और, दोनों के साथ हुई गड़बड़ी ठीक की गई जानकारी भरने के लिए, make-standalone-toolchain.sh में बदलाव करके -march=armv7-a सब-डायरेक्ट्री armv7-a/thumb में headers/libs. (समस्या 35616)
    • R_ARM_THM_CALL रीलोकेशन की गड़बड़ी को ठीक किया गया है, जिसे ठीक नहीं किया जा सकता. (समस्या 35342)
    • reload1.c:3633 में, ARM की वजह से हुई इंटरनल कंपाइलर की गड़बड़ी को ठीक किया गया char से साइन-एक्सटेंमेंट के दौरान गलत ऑपरेंड टाइप की उम्मीद करने वाला बैक-एंड. (जीसीसी समस्या 50099)
    • ऋणात्मक शिफ़्ट राशि के साथ आंतरिक कंपाइलर गड़बड़ी ठीक की गई. (जीसीसी की समस्या)
  • X86 के लिए -fstack-protector को ठीक किया गया, जो कि ndk-build x86 एबीआई टारगेट.
  • MIPS से जुड़े खास सुधार:
    • _STLP_LITTLE_ENDIAN को 1 पर सेट करके, STLport की एंडियननेस को ठीक किया गया. ऐसा तब किया गया, जब MIPS libstlport_* कंपाइलेशन.
    • LLVM को कंपाइल करते समय, जीसीसी __builtin_unreachable समस्या ठीक की गई. (जीसीसी समस्या 54369)
    • cc1 कंपाइल प्रोसेस की 100% सीपीयू की खपत करने वाला बैकपोर्ट किया गया समाधान. (GCC समस्या 50380)
  • GNU डीबगर से जुड़े खास समाधान:
    • बिल्ड के समय gdb-7.x में Python सहायता बंद कर दी जाती है, नहीं तो gdb-7.x कॉन्फ़िगर कर सकता है फ़ंक्शन, होस्ट और बिल्ड में उपलब्ध Python वर्शन को चुन सकता है Python के किसी खास वर्शन पर हार्ड-वायर वाली डिपेंडेंसी के साथ gdb. (समस्या 36120)
    • APP_ABI में all मौजूद होने और किसी से मेल न खाने पर, ndk-gdb की गड़बड़ी को ठीक किया गया के बारे में जानते हैं. (समस्या 35392)
    • अगर : वर्ण दिखता है, तो उसे बनाए रखकर, Windows पाथनेम की सुविधा को ठीक किया गया है जैसे, वह ड्राइव लेटर से शुरू होने वाले Windows पाथ का हिस्सा हो. (जीडीबी समस्या 12843)
    • gdbserver में, ARM के लिए हार्डवेयर ब्रेकपॉइंट की सुविधा ठीक की गई. (GDB समस्या)
    • लिंकर एक जैसा होने पर ही मौजूदा solibs को पढ़ने के लिए, सुधार जोड़ा गया. इस बदलाव से, solib इवेंट को तेज़ी से मैनेज किया जा सकता है. (समस्या 37677)
    • solib ब्रेकपॉइंट ढूंढने के लिए, बार-बार कोशिश करने के लिए सुधार जोड़ा गया. अब GDB svr4_current_sos() को किए जाने वाले हर कॉल के दौरान enable_break() बार कोशिश करेगा तो वह सफल हो जाता है. (43563 बदलें)
    • उस समस्या को ठीक किया गया है जिसकी वजह से gdb, ब्रेकपॉइंट पर नहीं रुकेगा dlopen-ed लाइब्रेरी. (समस्या 34856)
    • सिस्टम पर dlopen() को कॉल करते समय, डाइनैमिक लिंकर में मौजूद SIGILL से जुड़ी गड़बड़ी को ठीक किया गया जहां /system/bin/linker में चिह्न हटा दिए गए हैं और संरक्षण नहीं होने की वजह से, rtld_db_dlactivity() को Thumb के तौर पर लागू किया गया है sym_addr में से LSB. (समस्या 37147)
अन्य गड़बड़ियां ठीक की गईं:
  • ठीक किए गए एनडीके हेडर:
    • यहां से गलती से हटाए गए arch-mips/include/asm/* कोड को ठीक कर दिया गया है ओरिजनल कर्नेल के बीच में होना चाहिए. (बदलें 43335)
    • सदस्य के स्ट्रक्चर से जुड़े डेटा __unused को __linux_unused से बदला गया linux/sysctl.h और linux/icmp.h के साथ टकराव से बचने के लिए sys/cdefs.h में #define __unused.
    • __BEGIN_DECLS और__BEGIN_DECLS के साथ बंद सी फ़ंक्शन के लिए, fenv.h तय किया गया __END_DECLS.
    • malloc.h में लागू नहीं किए गए फ़ंक्शन हटाए गए.
    • एएनएसआई कंपाइलर के लिए, uint64_t की stdint.h परिभाषा तय की गई. (समस्या 1952)
    • <arch>/include/machine/* में प्रीप्रोसेसर मैक्रो ठीक किए गए.
    • link.h को MIPS के हिसाब से बदला गया, ताकि सभी प्लैटफ़ॉर्म के साथ काम करने वाला नया वर्शन इस्तेमाल किया जा सके.
    • linux-unistd.h को हटाया गया
    • GLibc-विशिष्ट मैक्रो LONG_LONG_MIN, LONG_LONG_MAX और <pthread.h> से <limits.h> तक ULONG_LONG_MAX.
  • ndk-stack-parser में बफ़र ओवरफ़्लो ठीक किया गया.
  • तय न किए जाने पर, सभी एलानों को छोड़ने के लिए, _STLP_USE_EXCEPTIONS को ठीक किया गया और __Named_exception का इस्तेमाल. __Named_exception को कंपाइल और इस्तेमाल करना सेटिंग सिर्फ़ तब लागू होती हैं, जब STLport को अपवादों का इस्तेमाल करने की अनुमति होती है.
  • Windows कोड बनाए बिना, सिर्फ़ Linux के लिए NDK पैकेज बनाने की समस्या को ठीक किया गया. इसका इस्तेमाल करें इस तरह की बिल्ड करने के लिए सेटिंग:
    ./build/tools/make-release.sh --force --systems=linux-x86
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • libc.so को ठीक किया गया, ताकि यह atexit() और __do_handler को एक्सपोर्ट न करे. इन सिंबल को C लाइब्रेरी के सिस्टम वर्शन की मदद से, ARM बिल्ड के लिए एक्सपोर्ट किया जाता है पर लेगसी नेटिव लाइब्रेरी का इस्तेमाल किया जा सकता है. एनडीके से जनरेट किए गए एनडीके से सीधे तौर पर उनका रेफ़रंस नहीं लेना चाहिए. इसके बजाय, शेयर की गई लाइब्रेरी या एक्ज़ीक्यूटेबल फ़ाइल में इन सिंबल का अपना ही वर्शन एम्बेड किया जाना चाहिए, crtbegin_*.o की ओर से दिया गया.

    अगर आपका प्रोजेक्ट, -nostdlib -Wl,--no-undefined विकल्पों से लिंक है, तो आपको अपना __dso_handle देना होगा, क्योंकि crtbegin_so.o को इससे लिंक नहीं किया गया है यह मामला. __dso_handle का कॉन्टेंट मायने नहीं रखता, जैसा कि यहां दिखाया गया है उदाहरण कोड:

    extern "C" {
     
    extern void *__dso_handle __attribute__((__visibility__ ("hidden")));
     
    void *__dso_handle;
    }
  • ARM के लिए, तय सिंबल डिकोडर का इस्तेमाल किया गया. इसे objdump में, plt एंट्री के लिए इस्तेमाल किया गया था ज़्यादा आसानी से पढ़ा जा सकने वाला function@plt फ़ॉर्म जनरेट करें.
  • GCC 4.6 libgcc.a में पेश किए गए इन चिह्नों को हटाया गया X86 प्लैटफ़ॉर्म libc.so लाइब्रेरी: __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1, और __aeabi_unwind_cpp_pr2.
  • MIPS में इस्तेमाल नहीं किए गए .ctors, .dtors, और .eh_frame हटाए गए crt*_so.S.
  • ndk-gdb को अपडेट किया गया, ताकि यह आउटपुट की सिर्फ़ आखिरी लाइन को मिले DUMP_XXXX ndk-build. इस बदलाव से पक्का होता है कि अगर Application.mk या Android.mk, $(info ...) सिंटैक्स के साथ कुछ प्रिंट करता है, वह नहीं मिलता DUMP_XXXX के नतीजे में शामिल किया गया. (ज़्यादा जानकारी)
अन्य बदलाव:
  • arch-x86 और arch-mips हेडर हटाए गए platforms/android-[3,4,5,8]. वे हेडर अधूरे थे, क्योंकि X86 और MIPS एबीआई सिर्फ़ एपीआई 9 या उसके बाद के वर्शन पर काम करते हैं.
  • आसान c++ में स्टैंडअलोन पैकेज का पाथ शामिल है, जैसा कि नीचे दिखाया गया है. (समस्या 35279)
    <path>/arm-linux-androideabi/include/c++/4.6.x-google
      to:
    <path>/include/c++/4.6/
    
  • डिफ़ॉल्ट रूप से, ज़्यादा C++ फ़ाइल एक्सटेंशन की पहचान करने के लिए, ndk-build को ठीक किया गया: .cc .cp .cxx .cpp .CPP .c++ .C. आप अब भी LOCAL_CPP_EXTENSION का इस्तेमाल इन कामों के लिए कर सकते हैं इन एक्सटेंशन सेटिंग को ओवरराइट कर दें.
  • samples/san-angeles में ब्लैक स्क्रीन या फ़्रीज़ होने की समस्या को ठीक कर दिया गया है फ़्रेम रेंडर होने में लगने वाला समय सेट करें.
  • एनडीके सैंपल में, काम न करने वाले एपीआई बदले गए. (समस्या 20017)
    • Android-5 से android-7 तक hello-gl2 में
    • android-9 से android-10 तक native-activity में
    • android-9 से android-10 तक native-audio में
    • android-9 से android-10 तक native-plasma में
  • सेक्शन में दी गई आसान स्कीम के साथ, Android के एक्ज़ीक्यूटेबल के लिए नई ब्रैंडिंग जोड़ी गई है .note.android.ident (crtbegin_static/dynamic.o में तय किया गया) का इस्तेमाल करता है, डीबग करने वाले टूल उसी हिसाब से काम कर सकते हैं. स्ट्रक्चर के सदस्य और वैल्यू को इस तरह परिभाषित किया गया है अनुसरण करता है:
    static const struct {
      int32_t namesz
    ;  /* = 8,  sizeof ("Android") */
      int32_t descsz
    ;  /* = 1 * sizeof(int32_t) */
      int32_t type
    ;    /* = 1, ABI_NOTETYPE */
     
    char name[sizeof "Android"];  /* = "Android" */
      int32_t android_api
    ; /* = 3, 4, 5, 8, 9, 14 */
    }
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

    सेक्शन .note.ABI-tag में ब्रैंडिंग के पिछले विकल्प अब काम नहीं करते.

  • एक नई स्क्रिप्ट जोड़ी गई. run-tests-all.sh, जो run-tests.sh और standalone/run.sh के लिए शर्तें अलग-अलग हैं. run-tests.sh स्क्रिप्ट चलती है इसके लिए, --abi विकल्प का इस्तेमाल नहीं किया जाता. साथ ही, इसे सभी के लिए, ज़्यादातर जांचों को इकट्ठा करने के लिए बेहतर बनाया गया है काम करने वाले एबीआई और अटैच किए गए सभी डिवाइसों पर काम करते हैं

इस रिलीज़ की मुख्य सुविधाएं, नया GNU कंपाइलर कलेक्शन (GCC) 4.6 टूलचेन हैं और GNU डीबगर (GDB) 7.3.x जो Android 4.1 (एपीआई लेवल 16) सिस्टम के लिए डीबग करने की सुविधा जोड़ता है इमेज.

अहम गड़बड़ियां ठीक की गईं:
  • Mac OS पर LOCAL_SHORT_COMMANDS समस्याएं ठीक की गईं, इसके लिए Windows सिगविन एनवायरमेंट स्टैटिक लाइब्रेरी पर लागू होता है. सूची वाली फ़ाइल तेज़ी से जनरेट होती है. साथ ही, उसे बार-बार होने से बचाने के लिए उसे फिर से जनरेट नहीं किया जाता प्रोजेक्ट रीबिल्ड करता है.
  • ndk-gdb की कई समस्याएं ठीक की गईं:
    • adb ज़्यादा के लिए -e, -d, और -s फ़्लैग पास करने के लिए टूल अपडेट किया गया किया जा सकता है.
    • स्पेस वाले डिवाइसों के सीरियल नाम स्वीकार करने के लिए, टूल को अपडेट किया गया.
    • /system/bin/link की जानकारी वापस पाने के लिए टूल को अपडेट किया गया, इसलिए gdb चालू रहा होस्ट, __dl_rtld_db_dlactivity में ब्रेकपॉइंट सेट कर सकता है. साथ ही, वह लिंकर गतिविधि के बारे में जानकारी रख सकता है (उदाहरण के लिए, dlopen() को कॉल करने पर solib सिंबल दोबारा स्कैन करें).
  • Windows पर ndk-build clean को ठीक किया गया, जो हटाई नहीं जा सकी ./libs/*/lib*.so.
  • make होने पर गैर-शून्य ERRORLEVEL वापस करने के लिए ndk-build.cmd तय किया गया विफल होता है.
  • __exidx_start को गलत तरीके से एक्सपोर्ट होने से रोकने के लिए, libc.so गड़बड़ी को ठीक किया गया और __exidx_end सिंबल.
  • ARM औरSEGV__libc_init एमआईपीएस.
ज़रूरी बदलाव:
  • GCC 4.6 टूलचेन (gold और GDB 7.3.x के साथ binutils 2.21) को इसमें जोड़ा गया यह मूल GCC 4.4.3 टूलचेन (binutils 2.19 और GDB 6.6) के साथ मौजूद है.
    • GCC 4.6 अब डिफ़ॉल्ट टूलचेन है. मूल जवाब चुनने के लिए, Application.mk में NDK_TOOLCHAIN_VERSION=4.4.3 को सेट किया जा सकता है.
    • gold लिंकर के लिए सहायता सिर्फ़ ARM और x86 के लिए उपलब्ध है आर्किटेक्चर के बारे में ज़्यादा जानें. यह सहायता डिफ़ॉल्ट रूप से बंद होती है. इसे चालू करने के लिए, Android.mk में LOCAL_LDLIBS += -fuse-ld=gold जोड़ें.
    • -fPIE के साथ कंपाइल किए गए प्रोग्राम को डीबग करने के लिए, नए GDB की ज़रूरत होती है, इसमें Android 4.1 (एपीआई लेवल 16) की सिस्टम इमेज में बाइनरी भी शामिल हैं.
    • binutils 2.21 ld टूल में, बैक-पोर्ट किए गए सुधार शामिल हैं वर्शन 2.22:
      • ld --gc-sections को ठीक कर दिया गया है, जो ज़ॉम्बी के रेफ़रंस को गलती से सेव रखता है बाहरी लाइब्रेरी पर क्लिक करें. (और जानकारी).
      • ओरिजनल p_align औरstrip अगर वे मान्य हैं, तो GNU_RELRO सेक्शन में p_flags. इस समस्या को ठीक किए बिना, प्रोग्राम में -fPIE के साथ बनाया गया डिबग नहीं किया जा सका. (मोर ई की जानकारी)
    • पुराने वर्शन के साथ काम करने के लिए, sincos() ऑप्टिमाइज़ेशन बंद किया गया प्लैटफ़ॉर्म.
  • नेवर eXeute (NX) बिट और relro/bind_now सुरक्षा को डिफ़ॉल्ट रूप से चालू करने के लिए, बिल्ड के विकल्पों को अपडेट किया गया:
    • --noexecstack को असेंबलर में और -z noexecstack को लिंकर में जोड़ा गया जो स्टैक पर NX बिट को चालू करके बफ़र ओवरफ़्लो हमलों से NX सुरक्षा देती है और हीप.
    • अंदरूनी हिस्सों को मज़बूत बनाने के लिए, लिंकर में -z relro और -z now को जोड़ा गया डेटा सेक्शन के लिंक शामिल हैं. (ज़्यादा जानकारी के लिए यहां जाएं: 1, 2)
    • इन सुविधाओं को बंद करने के लिए, नीचे दिए गए विकल्पों का इस्तेमाल करें:
      1. इस विकल्प के लिए --execstack विकल्प सेट करके, NX की सुरक्षा बंद करें: असेंबलर और -z execstack लिंकर के लिए.
      2. -z norelro को सेट करके और लिंकर के लिए -z lazy विकल्प.
      3. एनडीके jni/Android.mk में इन सुरक्षा सुविधाओं को बंद करें. इसके लिए, निम्न विकल्प:
        LOCAL_DISABLE_NO_EXECUTE=true  # disable "--noexecstack" and "-z noexecstack"
        DISABLE_RELRO=true             # disable "-z relro" and "-z now"
        

      ज़्यादा जानकारी के लिए, docs/ANDROID-MK.html पर जाएं.

  • .note.ABI-tag सेक्शन के साथ Android के एक्ज़ीक्यूटेबल के लिए ब्रैंडिंग जोड़ी गई (इसमें crtbegin_static/dynamic.o). साथ ही, डीबग करने वाले टूल ज़रूरत के हिसाब से काम कर सकें. स्ट्रक्चर सदस्य और मान इस तरह परिभाषित किए गए हैं:
    static const struct {
      int32_t namesz
    ;  /* = 4,  sizeof ("GNU") */
      int32_t descsz
    ;  /* = 6 * sizeof(int32_t) */
      int32_t type
    ;    /* = 1 */
     
    char  name[sizeof "GNU"];  /* = "GNU" */
      int32_t os
    ;      /* = 0 */
      int32_t major
    ;   /* = 2 */
      int32_t minor
    ;   /* = 6 */
      int32_t teeny
    ;   /* = 15 */
      int32_t os_variant
    ;  /* = 1 */
      int32_t android_api
    ; /* = 3, 4, 5, 8, 9, 14 */
    }
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
अन्य गड़बड़ियां ठीक की गईं:
  • R_MIPS_TLS_LDM की गड़बड़ी को पूरा करने के लिए, mips-linux-gnu की जगह बदलने की समस्या ठीक कर दी गई. (ज़्यादा जानकारी)
  • --gc-sections का इस्तेमाल करते समय होने वाले ld टूल सेगफ़ॉल्ट को ठीक कर दिया गया है. (ज़्यादा जानकारी)
  • MIPS की GOT_PAGE गिनती से जुड़ी समस्या ठीक की गई. (ज़्यादा जानकारी)
  • mips_elf_count_got_symbols के लिए, फ़ॉलो किए जाने वाले चेतावनी के चिह्न का लिंक ठीक कर दिया गया है.
  • mips_elf_allocate_lazy_stub के लिए, फ़ॉलो किए जाने वाले चेतावनी के चिह्न का लिंक ठीक कर दिया गया है.
  • MIPS .dynamic को डेटा सेगमेंट में ले जाया गया, ताकि उसे लिखा जा सके.
  • MIPS के लिए सही सेगमेंट साइज़ के साथ प्रतीकों के लिए हार्ड कोड की गई वैल्यू बदली गईं.
  • MIPS टूलचेन में डिफ़ॉल्ट के तौर पर सेट किए गए -mno-shared विकल्प को हटा दिया गया. Android टूलचेन के लिए डिफ़ॉल्ट वैल्यू -fPIC है. अगर यह काम करता है, तो -fpic को डिफ़ॉल्ट तौर पर सेट किया जाता है. अगर आपको -mshared, -fpic, -fPIC, -fpie या -fPIE को साफ़ तौर पर बताता है, MIPS कंपाइलर -mno-shared जोड़ देता है, जो PIC को बंद कर देता है. जोड़ने के लिए फ़िक्स किया गया कंपाइलर इस मामले में -mno-shared.
  • hello-jni और two-libs सैंपल में पैकेज के गलत नाम ठीक किए गए हैं, इसके नीचे मौजूद tests प्रोजेक्ट को कंपाइल किया जा सकता है.
अन्य परिवर्तन:
  • बाइनरी की बदली गई जगहें:
    • gdbserver को यहां से ले जाया गया toolchain/<arch-os-ver>/prebuilt/gdbserver से prebuilt/android-<arch>/gdbserver/gdbserver.
    • x86 टूलचेन प्रीफ़िक्स का नाम i686-android-linux- से बदलकर यह किया गया i686-linux-android-.
    • sources/cxx-stl/gnu-libstdc++/include और lib को यहां ले जाया गया GCC 4.6 के साथ कंपाइल करते समय sources/cxx-stl/gnu-libstdc++/4.6 या GCC 4.4.3 के साथ कंपाइल करते समय sources/cxx-stl/gnu-libstdc++/4.4.3.
    • libbfd.a और libintl.a को lib/ से lib32/ में ले जाया गया.
  • एनडीके टूलचेन को फिर से बनाने और टेस्ट करने के लिए, कई स्क्रिप्ट जोड़ी गई हैं और उन्हें बेहतर बनाया गया है:
    • Linux पर होस्ट किया जाने वाला नया टूलचेन जनरेट करने के लिए, build-mingw64-toolchain.sh को जोड़ा गया जो Win32 और Win64 एक्ज़ीक्यूटेबल जनरेट करता है.
    • clone निर्देश का इस्तेमाल करके और सिर्फ़ उन डायरेक्ट्री के लिए checkout का इस्तेमाल करके जो एनडीके बनाने के लिए ज़रूरी हैं, download-toolchain-sources.sh की स्पीड को बेहतर किया गया टूलचेन बाइनरी.
    • build-host-gcc.sh और build-host-gdb.sh स्क्रिप्ट जोड़ी गईं.
    • दिए गए एनडीके के कॉन्टेंट की जांच करने के लिए, tests/check-release.sh को जोड़ा गया या कोई मौजूदा NDK पैकेज.
    • tests/standalone/run.sh स्टैंडअलोन टेस्ट को फिर से बनाया गया .
  • सभी प्लैटफ़ॉर्म और आर्किटेक्चर से if_dl.h हेडर हटाया गया. इसमें, जिन AF_LINK और sockaddr_dl एलिमेंट के बारे में बताया गया है वे खास तौर पर बीएसडी के लिए हैं. इसका मतलब है कि ये एलिमेंट मौजूद नहीं हैं Linux में).

एनडीके के इस रिलीज़ में, MIPS एबीआई के साथ काम करने के साथ-साथ कुछ और सुधार भी शामिल हैं.

नई सुविधाएं:
  • MIPS एबीआई के लिए सहायता जोड़ी गई, जिससे आप ऐसा मशीन कोड जनरेट कर सकते हैं जो MIPS की मदद से काम करने वाले Android डिवाइस MIPS की मुख्य सुविधाओं में MIPS से जुड़ी खास सुविधाएं शामिल हैं टूलचेन, सिस्टम हेडर, लाइब्रेरी, और डीबग करने की सुविधा. इसके बारे में ज़्यादा जानकारी के लिए MIPS के लिए सहायता, NDK पैकेज में docs/CPU-MIPS.html देखें.

    डिफ़ॉल्ट रूप से, ARM पर आधारित डिवाइसों के लिए कोड जनरेट किया जाता है. mips को इसमें जोड़ा जा सकता है बिल्ड के लिए आपकी Application.mk फ़ाइल में APP_ABI की परिभाषा MIPS प्लैटफ़ॉर्म के लिए उदाहरण के लिए, नीचे दी गई लाइन ndk-build का निर्देश देती है ताकि तीन अलग-अलग एबीआई के लिए अपना कोड बनाया जा सके:

    APP_ABI := armeabi armeabi-v7a mips

    जब तक कि आप आर्किटेक्चर के हिसाब से असेंबली सोर्स, जैसे कि ARM असेंबली पर निर्भर न हों कोड, MIPS बनाने के लिए आपको अपनी Android.mk फ़ाइलों को छूने की ज़रूरत नहीं होनी चाहिए मशीन कोड.

  • --arch=mips का इस्तेमाल करके, एक स्टैंडअलोन MIPS टूलचेन बनाया जा सकता है make-standalone-toolchain.sh पर कॉल करते समय विकल्प दिखाई देगा. यहां जाएं: ज़्यादा जानकारी के लिए, docs/STANDALONE-TOOLCHAIN.html.

ध्यान दें: यह पक्का करने के लिए कि आपके ऐप्लिकेशन उपलब्ध हैं ऐप्लिकेशन इस्तेमाल करने वालों को तभी दिए जाते हैं, जब उनके डिवाइस उन पर काम कर सकते हों. Google Play, ऐप्लिकेशन के हिसाब से आपके ऐप्लिकेशन में शामिल निर्देश सेट जानकारी पर ? आपको कुछ करने की ज़रूरत नहीं है ताकि फ़िल्टर करने की सुविधा चालू हो सके. अतिरिक्त रूप से, Android सिस्टम भी और उस समय इंस्टॉलेशन की अनुमति देता है, जब ऐप्लिकेशन ऐसी लाइब्रेरी उपलब्ध कराता हो को डिवाइस के सीपीयू आर्किटेक्चर के लिए कंपाइल किया जाता है.

अहम गड़बड़ियां ठीक की गईं:
  • GAbi++ लागू करने में हुई गड़बड़ी को ठीक किया गया है, जहां बेस क्लास ऑब्जेक्ट b का dynamic_cast<D>(b) से डिराइव्ड क्लास D में नतीजा मिला बेस क्लास से उलटी दिशा में गलत तरीके से अडजस्ट किया गया. (समस्या 28721)
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से make-standalone-toolchain.sh कॉपी नहीं हो सका libsupc++.*.
अन्य गड़बड़ियां ठीक की गईं:
  • ndk-build.cmd ठीक से काम कर रहा है, यह पक्का करने के लिए ndk-build.cmd को ठीक किया गया अगर उपयोगकर्ता ने SHELL एनवायरमेंट वैरिएबल को फिर से तय किया है. हालांकि, इस वैरिएबल को बदला जा सकता है कई तरह के डेवलपमेंट टूल इंस्टॉल करते समय.

एनडीके (NDK) के इस रिलीज़ में, Tegra2 पर आधारित डिवाइसों के लिए एक अहम सुधार शामिल है. इसके अलावा, अतिरिक्त सुधार और सुधार:

अहम गड़बड़ियां ठीक की गईं:
  • GNU STL armeabi-v7a बाइनरी को ठीक किया गया, ताकि गैर-NEON पर क्रैश न हो डिवाइस. NDK r7b के साथ दी गई फ़ाइलें ठीक से कॉन्फ़िगर नहीं की गई थीं, की वजह से, Tegra2-आधारित डिवाइसों और अन्य डिवाइसों पर क्रैश हो जाते हैं कुछ फ़्लोटिंग-पॉइंट फ़ंक्शन (उदाहरण के लिए, cosf, sinf, और expf).
ज़रूरी बदलाव:
  • NDK_OUT के ज़रिए, कस्टम आउटपुट डायरेक्ट्री के लिए सहायता जोड़ी गई एनवायरमेंट वैरिएबल. तय किए जाने पर, इस वैरिएबल का इस्तेमाल सभी को स्टोर करने के लिए किया जाता है $PROJECT_PATH/obj के बजाय, जनरेट की गई इंटरमीडिएट फ़ाइलें वैरिएबल यह है ndk-gdb ने भी पहचाना.
  • सैकड़ों या हज़ारों सोर्स के साथ मॉड्यूल बनाने की अतिरिक्त सुविधा फ़ाइलों को अपने Android.mk में LOCAL_SHORT_COMMANDS से true पर परिभाषित करके.

    इस बदलाव से एनडीके बिल्ड सिस्टम के लिए, लिंकर या आर्काइवर के ज़्यादातर विकल्प इस्तेमाल करने पड़ते हैं की सूची बनाई जा सकती है. ज़्यादा जानकारी के लिए, docs/ANDROID-MK.html पर जाएं.

अन्य गड़बड़ियां ठीक की गईं:
  • cpufeatures में android_getCpuCount() को लागू करने की समस्या ठीक कर दी गई है हेल्पर लाइब्रेरी पर जाएं. कुछ डिवाइसों में, जहां कोर को सिस्टम की मदद से डाइनैमिक तौर पर चालू किया जाता है वहां पिछले लागू करने पर, पहली बार फ़ंक्शन में ऐक्टिव कोर की कुल संख्या की रिपोर्ट मिलेगी फ़िज़िकल तौर पर उपलब्ध कोर की कुल संख्या के बजाय, कोर कॉल किया गया.

एनडीके के इस रिलीज़ में, Windows के नेटिव बिल्ड, Cygwin वगैरह के लिए किए गए सुधार शामिल हैं सुधार:

अहम गड़बड़ियां ठीक की गईं:
  • गड़बड़ी के सटीक होने से जुड़ी समस्याओं से बचने के लिए, sys/atomics.h को अपडेट किया गया यह सुविधा, मल्टी-कोर ARM वाले डिवाइसों पर इस्तेमाल की जा सकती है. इसकी मदद से, अपने उन सोर्स को फिर से बनाएं जिनमें कोई बदलाव नहीं किया गया है का सुझाव दिया जाना चाहिए और इस समस्या को पूरी तरह से खत्म किया जाना चाहिए. ज़्यादा जानकारी के लिए, docs/ANDROID-ATOMICS.html पढ़ें.
  • डीबग करने से जुड़ी समस्याओं को ठीक करने के लिए, binutils के वर्शन 2.19 पर वापस लाया गया NDK r7 में दिखा (जिसे binutils 2.20.1 पर स्विच किया गया).
  • 32-बिट Linux पर ndk-build को ठीक किया गया. पैकेजिंग की गड़बड़ी की वजह से, 64-बिट वर्शन वाला पैकेज डिलीवर हो गया है NDK r7 में, prebuilt/linux-x86/bin के तहत एक्ज़ीक्यूटेबल फ़ाइल है.awk
  • Windows के लिए बनाए गए नेटिव बिल्ड (ndk-build.cmd) को ठीक किया गया. अन्य बिल्ड मोड उपलब्ध नहीं थे प्रभावित. इनमें ये सुधार शामिल हैं:
    • अनंत लूप / स्टैक ओवरफ़्लो गड़बड़ी को हटाया गया जो कोशिश करते समय हुई उस डायरेक्ट्री से ndk-build.cmd को कॉल करने के लिए जो सबसे ऊपर नहीं थी आपका प्रोजेक्ट पाथ (जैसे, इसकी किसी भी सब-डायरेक्ट्री में).
    • अपने-आप जनरेट हुई डिपेंडेंसी फ़ाइलों को अनदेखा करने की समस्या को ठीक कर दिया गया है. यह इसका मतलब यह हुआ कि हेडर को अपडेट करने से सोर्स को फिर से कंपाइल नहीं किया गया. इसे.
    • उस समस्या को ठीक किया गया है जहां फ़ाइलों या पाथ में स्पेस के अलावा दूसरे खास वर्णों और कोट, सही तरीके से हैंडल नहीं किए गए थे.
  • इस्तेमाल करते समय सही बाइनरी जनरेट करने के लिए, स्टैंडअलोन टूलचेन को ठीक किया गया -lstdc++ (उदाहरण के लिए, GNU libstdc++ C++ रनटाइम से लिंक करना). आपने लोगों तक पहुंचाया मुफ़्त में अगर आपको शेयर की गई लाइब्रेरी से लिंक करना है, तो -lgnustl_shared का इस्तेमाल करना चाहिए वर्शन या स्टैटिक वर्शन के लिए -lstdc++ का इस्तेमाल करें.

    इस समस्या के बारे में ज़्यादा जानने के लिए, docs/STANDALONE-TOOLCHAIN.html पर जाएं.

  • सिगविन पर gnustl_shared को ठीक किया गया. लिंक करने वाले ने शिकायत की कि उसे ढूंढा नहीं जा सका libsupc++.a, भले ही फ़ाइल सही जगह पर हो.
  • किसी खास C++ रनटाइम का इस्तेमाल न करने पर, सिगविन C++ लिंक को ठीक कर दिया गया है APP_STL.
अन्य बदलाव:
  • जब आपका ऐप्लिकेशन, GNU के libstdc++ रनटाइम का इस्तेमाल करता है, तो कंपाइलर अपवाद और आरटीटीआई को ज़बरदस्ती चालू नहीं करेगा. इस बदलाव की वजह से कोड छोटा हो जाएगा.

    अगर आपको ये सुविधाएं चाहिए, तो आपको इनमें से कोई एक काम करना होगा:

    • अपने मॉड्यूल में अपवाद और/या RTTI साफ़ तौर पर चालू करें या Application.mk. (सुझाया गया)
    • APP_GNUSTL_FORCE_CPP_FEATURES को 'exceptions' के तौर पर परिभाषित करें, 'rtti' या आपके Application.mk में दोनों. यहां जाएं: ज़्यादा जानकारी के लिए, docs/APPLICATION-MK.html.
  • आपके ऐप्लिकेशन में निजी सेवाएं होने पर, ndk-gdb अब ठीक से काम करता है स्वतंत्र प्रक्रियाओं में चल रहे हों. यह मुख्य प्रोसेस के बजाय, आवेदन करने की मुख्य प्रोसेस को डीबग करता है पहली प्रोसेस की सूची ps ने दी है, जो आम तौर पर एक सेवा प्रोसेस होती है.
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से NDK r7, LOCAL_ARM_MODE की वैल्यू नहीं दे पाता और कुछ सोर्स फ़ाइलों को (सभी नहीं) को हमेशा 32-बिट वाले निर्देशों में कंपाइल करें.
  • STLport: Android प्लैटफ़ॉर्म वर्शन के हिसाब से सोर्स को रीफ़्रेश करें. यह अपडेट कुछ छोटी गड़बड़ियों को ठीक करता है:
    • अधूरे टाइप का तय किया गया इंस्टैंशिएट करना
    • ठीक किए गए माइनर "==" बनाम "=" टाइपिंग
    • string::assign में memcpy के बजाय memmove का इस्तेमाल किया गया
    • IsNANorINF, IsINF, IsNegNAN, और अन्य चीज़ों की बेहतर हैंडलिंग जोड़ी गई वगैरह

    पूरी जानकारी के लिए, तय किया गया लॉग देखें.

  • STLport: लाइब्रेरी से पांच ग़ैर-ज़रूरी स्टैटिक शुरू करने वाले टूल हटाए गए.
  • GNU libstdc++ लाइब्रेरी को armeabi-v7a के लिए गलती से कंपाइल किया गया, क्योंकि आर्मेबी. इस परिवर्तन से उसके सटीक होने पर कोई प्रभाव नहीं पड़ा, लेकिन अधिकार का उपयोग करने से एबीआई को थोड़ा बेहतर परफ़ॉर्मेंस मिलना चाहिए.
  • cpu-features हेल्पर लाइब्रेरी को तीन 'वैकल्पिक' के तौर पर रिपोर्ट करने के लिए अपडेट किया गया x86 सीपीयू की सुविधाएं (SSSE3, MOVBE, और POPCNT). यहां जाएं: ज़्यादा जानकारी के लिए, docs/CPU-FEATURES.html पर जाएं.
  • docs/NDK-BUILD.html को अपडेट करके, NDK_APPLICATION_MK को टैग किया गया कस्टम Application.mk फ़ाइल चुनने के लिए, NDK_APP_APPLICATION_MK में से.
  • सिगविन: ndk-build अब खाली "NUL" नहीं बनाता है मौजूदा फ़ाइल में डायरेक्ट्री लागू होती है.
  • सिगविन: डिपेंडेंसी की अपने-आप पहचान करने की बेहतर सुविधा जोड़ी गई. पिछले वर्शन में, यह ने निम्न मामलों में ठीक से काम नहीं किया:
    • जब सिगविन ड्राइव का प्रीफ़िक्स /cygdrive नहीं था.
    • ड्राइव-लेस माउंट का इस्तेमाल करते समय, उदाहरण के लिए, जब सिगविन C:\Some\Dir के बजाय, /home से \\server\subdir.
  • सिगविन: ndk-build, Windows के नेटिव टूल का इस्तेमाल करने की कोशिश नहीं करता है सिगविन और/या GNU Make के कुछ वर्शन के साथ $NDK/prebuilt/windows/bin.

एनडीके के इस रिलीज़ में ऐसी नई सुविधाएं शामिल की गई हैं जो Android 4.0 प्लैटफ़ॉर्म के साथ काम करती हैं अन्य अनुवृद्धियां और सुधार:

नई सुविधाएं
  • Android 4.0 (एपीआई लेवल 14) के लिए, आधिकारिक NDK एपीआई जोड़े गए. इससे, ये चीज़ें जोड़ी जाती हैं प्लैटफ़ॉर्म की नेटिव सुविधाओं के बारे में जानकारी:
    • Kronos Group OpenMAX AL 1.0.1 के आधार पर, नेटिव मल्टीमीडिया एपीआई जोड़ा गया मानक. नया <OMXAL/OpenMAXAL.h> और <OMXAL/OpenMAXAL_Android.h> हेडर, ऐप्लिकेशन टारगेटिंग की अनुमति देते हैं एपीआई लेवल 14, नए वर्शन का इस्तेमाल करके, सीधे नेटिव कोड से मल्टीमीडिया आउटपुट करने के लिए Android के लिए खास तौर पर बना बफ़र क्यू इंटरफ़ेस. ज़्यादा जानकारी के लिए, यह देखें docs/openmaxal/index.html और http://www.khronos.org/openmax/.
    • Kronos Group OpenSL ES 1.0.1 के आधार पर नेटिव ऑडियो एपीआई को अपडेट किया गया मानक. एपीआई लेवल 14 की मदद से, अब कंप्रेस किए गए ऑडियो को डिकोड किया जा सकता है. जैसे, MP3, AAC, Vorbis) को PCM में बदल देता है. ज़्यादा जानकारी के लिए, docs/opensles/index.html और देखें http://www.khronos.org/opensles/.
  • कैश मेमोरी की सुविधा जोड़ी गई. बड़ी संख्या में रीबिल्ड की रफ़्तार को बढ़ाने के लिए, ccache के लिए NDK_CCACHE एनवायरमेंट वैरिएबल (या इसका पाथ आपकी ccache बाइनरी). एलान किए जाने पर, एनडीके बिल्ड सिस्टम अपने-आप जनरेट होता है किसी सोर्स फ़ाइल को कंपाइल करते समय Cकैश का इस्तेमाल करता है. जैसे:
    export NDK_CCACHE=ccache
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

    ध्यान दें: एनडीके रिलीज़ में कैश मेमोरी शामिल नहीं है इसलिए इसका इस्तेमाल करने से पहले आपको इसे इंस्टॉल करना होगा. कैश मेमोरी के बारे में ज़्यादा जानने के लिए, यहां जाएं http://ccache.samba.org.

  • यह बताने के लिए कि APP_ABI को all पर सेट करने की सुविधा जोड़ी गई आपको उन सभी एबीआई के लिए एनडीके मॉड्यूल बनाना हो जो दिए गए एनडीके पर काम करते हैं रिलीज़. इसका मतलब है कि नीचे दी गई दो पंक्तियों में से किसी एक को Application.mk, इस रिलीज़ के बराबर हैं:
    APP_ABI := all
    APP_ABI := armeabi armeabi-v7a x86
    

    यह तब भी काम करता है, जब आप कॉल करते समय APP_ABI तय करते हैं ndk-build दिया गया है. इसकी मदद से तेज़ी से यह पता लगाया जा सकता है कि यह प्रोजेक्ट, प्रोजेक्ट में बदलाव किए बिना सभी काम करने वाले एबीआई के लिए बनाया जाता है Application.mk file. उदाहरण के लिए:

    ndk-build APP_ABI=all
    
  • Android.mk में एक LOCAL_CPP_FEATURES वैरिएबल जोड़ा आपको यह एलान करने की अनुमति देता है कि आपके मॉड्यूल में C++ की कौनसी सुविधाएं (RTTI या अपवाद) इस्तेमाल की जाती हैं. यह यह पक्का करता है कि फ़ाइनल लिंकिंग सही तरीके से काम करे, अगर आपके पास पहले से बने मॉड्यूल मौजूद हों जो इन सुविधाओं के बारे में ज़्यादा जानें. docs/ANDROID-MK.html और ज़्यादा जानकारी के लिए, docs/CPLUSPLUS-SUPPORT.html.
  • बिल्ड कमांड में इस्तेमाल की जाने वाली सोर्स और ऑब्जेक्ट फ़ाइलों के छोटे पाथ. टास्क कब शुरू होगा $NDK/ndk-build को अपने प्रोजेक्ट पाथ से शुरू करना, सोर्स के पाथ, ऑब्जेक्ट और बिल्ड कमांड को पास की जाने वाली बाइनरी फ़ाइलों में अब छोटा हो जाएगा, क्योंकि उन्हें मौजूदा डायरेक्ट्री के हिसाब से पास किया जाता है. यह काम का है बहुत सारी सोर्स फ़ाइलों वाले प्रोजेक्ट बनाते समय, आपके होस्ट ऑपरेटिंग सिस्टम द्वारा समर्थित कमांड लाइन की लंबाई. व्यवहार में कोई बदलाव नहीं हुआ है अगर आपने अपने प्रोजेक्ट ट्री की किसी सब-डायरेक्ट्री से ndk-build को शुरू किया है या तो आप NDK_PROJECT_PATH को किसी खास डायरेक्ट्री पर ले जाने के लिए तय करते हैं.
प्रयोग के तौर पर शुरू की गई सुविधाएं
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है अब आप सिग्विन के बिना Windows पर अपनी एनडीके सोर्स फ़ाइलें बना सकते हैं. इसके लिए, ndk-build.cmd स्क्रिप्ट को आपके प्रोजेक्ट पाथ की कमांड लाइन से. कॉन्टेंट बनाने स्क्रिप्ट बिलकुल वही आर्ग्युमेंट अपनाती है जो ओरिजनल ndk-build स्क्रिप्ट में होते हैं. Windows NDK पैकेज, GNU Make, Awk, और दूसरी कंपनियों के लिए पहले से बनी बाइनरी के साथ आता है बिल्ड के लिए ज़रूरी टूल. पाने के लिए आपको कुछ और इंस्टॉल करने की ज़रूरत नहीं है एक नया टूल है.

अहम जानकारी: ndk-gdb इस पर काम नहीं करता Windows है, तो आपको अब भी डीबग करने के लिए सिगविन की ज़रूरत होगी.

इस सुविधा को अभी आज़माया जा रहा है. इसलिए, इसे बेझिझक आज़माएं और यहां बताई गई समस्याओं की शिकायत करें: गड़बड़ी का सार्वजनिक डेटाबेस या सार्वजनिक फ़ोरम. सभी सैंपल और यूनिट टेस्ट एनडीके की मदद से शिप किया गया. इसे इस सुविधा की मदद से कंपाइल किया गया.

अहम गड़बड़ियां ठीक की गईं
  • इंपोर्ट की गई शेयर की गई लाइब्रेरी अब टारगेट इंस्टॉलेशन पर डिफ़ॉल्ट रूप से इंस्टॉल होती हैं स्थान (libs/<abi>) अगर APP_MODULES में परिभाषित नहीं किया गया है Application.mk. उदाहरण के लिए, अगर कोई टॉप-लेवल मॉड्यूल foo एक मॉड्यूल bar इंपोर्ट करता है. इसके बाद, libfoo.so और libbar.so को इंस्टॉल करने की जगह पर कॉपी किया गया. पहले, सिर्फ़ libfoo.so को कॉपी किया गया था, बशर्ते आपने bar को अपने APP_MODULES भी. अगर आप APP_MODULES को साफ़ तौर पर परिभाषित करते हैं, तो व्यवहार में कोई बदलाव नहीं हुआ है.
  • ndk-gdb अब इसमें कई कैटगरी वाली गतिविधियों के लिए सही तरीके से काम करता है: इंटेंट के लिए फ़िल्टर इस्तेमाल कर सकते हैं.
  • स्टैटिक लाइब्रेरी इंपोर्ट अब सही तरीके से ट्रांज़िटिव हैं. उदाहरण के लिए, अगर कोई टॉप-लेवल मॉड्यूल foo, स्टैटिक लाइब्रेरी bar इंपोर्ट करता है, जो स्टैटिक इंपोर्ट करता है लाइब्रेरी zoo, libfoo.so को अब दोनों से लिंक कर दिया जाएगा libbar.a और libzoo.a.
अन्य बदलाव
  • docs/NATIVE-ACTIVITY.HTML: टाइपिंग की गड़बड़ी ठीक की गई. कम से कम एपीआई लेवल यह होना चाहिए 9, स्थानीय गतिविधियों के लिए 8 नहीं.
  • docs/STABLE-APIS.html: वह दस्तावेज़ जोड़ा गया जो मौजूद नहीं था, लेकिन EGL काम करने वाला स्थायी एपीआई, एपीआई लेवल 9 से शुरू होता है.
  • download-toolchain-sources.sh: टूलचेन डाउनलोड करने के लिए अपडेट किया गया android.googlesource.com के सोर्स, जो एओएसपी सर्वर की नई जगह है.
  • C++ सहायता रनटाइम जोड़ा गया. इसका नाम gabi++ है. इसके बारे में ज़्यादा जानकारी अपडेट किए गए docs/CPLUSPLUS-SUPPORT.html में उपलब्ध हैं.
  • C++ इस्तेमाल करने वाला नया रनटाइम जोड़ा गया. इसे gnustl_shared नाम दिया गया. यह रनटाइम, इससे जुड़ा होता है GNU libstdc++ v3 (GPLv3 लाइसेंस) के शेयर किए गए लाइब्रेरी वर्शन के लिए उपलब्ध है. ज़्यादा जानकारी यहां देखें docs/CPLUSPLUS-SUPPORT.html अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • STLport C++ रनटाइम में RTTI के लिए सहायता जोड़ी गई ( अपवाद).
  • LOCAL_CPP_EXTENSION में कई फ़ाइल एक्सटेंशन के लिए सहायता जोड़ी गई. इसके लिए उदाहरण के लिए, foo.cpp और bar.cxx, दोनों को C++ सोर्स के तौर पर कंपाइल करने के लिए, इन चीज़ों का एलान करें:
    LOCAL_CPP_EXTENSION := .cpp .cxx
    
  • लिंक-टाइम की शेयर की गई सिस्टम लाइब्रेरी से, एक्सपोर्ट किए गए कई अनचाहे सिंबल हटाए गए एनडीके ने उपलब्ध कराया है. इससे पक्का होता है कि स्टैंडअलोन टूलचेन की मदद से कोड जनरेट हुआ है किसी भी अस्थायी एबीआई सिंबल (उदाहरण के लिए, कोई libgcc.a) यह एक चिह्न होता है. यह प्लैटफ़ॉर्म बनाने के लिए इस्तेमाल किए जाने वाले टूलचेन में बदलाव होने पर होता है)
  • ज़्यादा एक्सटेंशन चलाने के लिए, EGL और OpenGLES क्रोनोस हेडर रीफ़्रेश किए गए. नोट जोड़ें कि इससे संबंधित लाइब्रेरी के एनडीके एबीआई में बदलाव नहीं होता है, क्योंकि क्लाइंट ऐप्लिकेशन के रनटाइम के दौरान हर एक्सटेंशन की जांच की जानी चाहिए.

    आपको किस तरह के एक्सटेंशन उपलब्ध होते हैं, यह आपके असल डिवाइस और जीपीयू ड्राइवर पर निर्भर करता है, उस प्लैटफ़ॉर्म का वर्शन न हो जिस पर डिवाइस चलता है. हेडर में बदलाव होने पर, कॉन्सटेंट और टाइप एक्सटेंशन का इस्तेमाल तब किया जाता है, जब वे eglGetProcAddress() या glGetProcAddress() से की गई. कॉन्टेंट बनाने नीचे दी गई सूची में, नए एक्सटेंशन के बारे में बताया गया है:

    जीएलएस 1.x
    • GL_OES_vertex_array_object
    • GL_OES_EGL_image_external
    • GL_APPLE_texture_2D_limited_npot
    • GL_EXT_blend_minmax
    • GL_EXT_discard_framebuffer
    • GL_EXT_multi_draw_arrays
    • GL_EXT_read_format_bgra
    • GL_EXT_texture_filter_anisotropic
    • GL_EXT_texture_format_BGRA8888
    • GL_EXT_texture_lod_bias
    • GL_IMG_read_format
    • GL_IMG_texture_compression_pvrtc
    • GL_IMG_texture_env_enhanced_fixed_function
    • GL_IMG_user_clip_plane
    • GL_IMG_multisampled_render_to_texture
    • GL_NV_fence
    • GL_QCOM_driver_control
    • GL_QCOM_extended_get
    • GL_QCOM_extended_get2
    • GL_QCOM_perfmon_global_mode
    • GL_QCOM_writeonly_rendering
    • GL_QCOM_tiled_rendering
    जीएलएस 2.0
    • GL_OES_element_index_uint
    • GL_OES_get_program_binary
    • GL_OES_mapbuffer
    • GL_OES_packed_depth_stencil
    • GL_OES_texture_3D
    • GL_OES_texture_float
    • GL_OES_texture_float_linear
    • GL_OES_texture_half_float_linear
    • GL_OES_texture_npot
    • GL_OES_vertex_array_object
    • GL_OES_EGL_image_external
    • GL_AMD_program_binary_Z400
    • GL_EXT_blend_minmax
    • GL_EXT_discard_framebuffer
    • GL_EXT_multi_draw_arrays
    • GL_EXT_read_format_bgra
    • GL_EXT_texture_format_BGRA8888
    • GL_EXT_texture_compression_dxt1
    • GL_IMG_program_binary
    • GL_IMG_read_format
    • GL_IMG_shader_binary
    • GL_IMG_texture_compression_pvrtc
    • GL_IMG_multisampled_render_to_texture
    • GL_NV_coverage_sample
    • GL_NV_depth_nonlinear
    • GL_QCOM_extended_get
    • GL_QCOM_extended_get2
    • GL_QCOM_writeonly_rendering
    • GL_QCOM_tiled_rendering
    ईजीएल
    • EGL_ANDROID_recordable
    • EGL_NV_system_time

एनडीके की इस रिलीज़ में r6 के मुकाबले कोई नई सुविधा शामिल नहीं की गई है. r6b रिलीज़ r6 रिलीज़ में नीचे दी गई समस्याओं को हल करता है:

अहम गड़बड़ियां ठीक की गईं
  • APP_ABI="armeabi x86" का इस्तेमाल करने पर बिल्ड को ठीक किया गया कई आर्किटेक्चर बनाना चाहते हैं.
  • एनडीके रिलीज़ पैकेज में, पहले से बनी STLport बाइनरी की जगह तय की गई. पैकेजिंग स्क्रिप्ट में किसी गड़बड़ी की वजह से, उन्हें गलत जगह पर डाल दिया गया है.
  • x86 Standalone के साथ, शेयर की गई लाइब्रेरी में atexit() के इस्तेमाल को ठीक किया गया टूलचेन.
  • make-standalone-toolchain.sh --arch=x86 को ठीक किया गया. पहले यह फ़ेल होता था का इस्तेमाल करें.
  • स्टैंडअलोन टूलचेन लिंकर से जुड़ी चेतावनियां ठीक की गईं. ये चेतावनियां, परिभाषा मौजूद नहीं होने और __dso_handle सिंबल का साइज़ (सिर्फ़ ARM).
  • x86 बिल्ड के लिए $(SYSROOT)/usr/include को शामिल करने का क्रम तय किया गया. इसके लिए गड़बड़ी देखें ज़्यादा जानकारी देखें.
  • ptrdiff_t और size_t की परिभाषाएं ठीक की गईं x86 खास सिस्टम, जब इनका इस्तेमाल x86 स्टैंडअलोन टूलचेन के साथ किया जाता है.

एनडीके के इस रिलीज़ में, x86 एबीआई और कुछ दूसरे छोटे बदलावों के साथ काम करना भी शामिल है. इस रिलीज़ में किए गए बदलावों के बारे में ज़्यादा जानकारी पाने के लिए, NDK पैकेज में CHANGES.HTML दस्तावेज़ शामिल है.

सामान्य जानकारी:
  • x86 एबीआई के साथ काम करता है, जिससे आपको मशीन कोड जनरेट करने की सुविधा मिलती है जो x86 आधारित Android डिवाइसों पर काम करता है. x86 के लिए मुख्य सुविधाएं x86-विशिष्ट टूलचेन, सिस्टम हेडर, लाइब्रेरी और डीबग करने की सुविधा. x86 सहायता के बारे में पूरी जानकारी पाने के लिए, NDK पैकेज में docs/CPU-X86.html देखें.

    डिफ़ॉल्ट रूप से, ARM पर आधारित डिवाइस के लिए कोड जनरेट किया जाता है, लेकिन आप बिल्ड के लिए आपकी Application.mk फ़ाइल में APP_ABI की परिभाषा x86 प्लैटफ़ॉर्म के लिए. उदाहरण के लिए, नीचे दी गई लाइन ndk-build का निर्देश देती है ताकि तीन अलग-अलग एबीआई के लिए अपना कोड बनाया जा सके:

    APP_ABI := armeabi armeabi-v7a x86

    जब तक आप ARM पर आधारित असेंबली सोर्स पर भरोसा नहीं करते, तब तक आपको x86 मशीन कोड बनाने के लिए, आपकी Android.mk फ़ाइलें.

  • आप एक स्टैंडअलोन x86 टूलचेन बना सकते हैं. इसके लिए --toolchain=x86-4.4.3 अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है make-standalone-toolchain.sh पर कॉल करते समय विकल्प दिखाई देगा. यहां जाएं: ज़्यादा जानकारी के लिए, docs/STANDALONE-TOOLCHAIN.html.
  • नए ndk-stack टूल की मदद से, स्टैक ट्रेस का अनुवाद ये logcat, नेटिव कोड से जनरेट होते हैं. यह टूल अनुवाद एक ऐसे पठनीय प्रारूप में निर्देश हो जिसमें ऐसी चीज़ें हों का इस्तेमाल करें. ज़्यादा जानकारी और इस्तेमाल के उदाहरण के लिए, docs/NDK-STACK.html देखें.
अन्य बदलाव:
arm-eabi-4.4.0 को NDK r5 के बाद से बंद कर दिया गया है एनडीके डिस्ट्रिब्यूशन से हटाया गया.

एनडीके की इस रिलीज़ में, r5b के मुकाबले कोई नई सुविधा शामिल नहीं की गई है. r5c रिलीज़ r5b रिलीज़ में नीचे दी गई समस्याओं को हल करता है:

अहम गड़बड़ियां ठीक की गईं:
  • ndk-build: साथ-साथ काम करने की कोशिश करते समय दिखने वाली गड़बड़ी को ठीक किया गया डीबग किए जा सकने वाले प्रोजेक्ट बनाता है.
  • टाइपिंग की गड़बड़ी को ठीक कर दिया गया है, जिसकी वजह से LOCAL_WHOLE_STATIC_LIBRARIES काम नहीं कर रहा था नए टूलचेन के साथ और इसके लिए अतिरिक्त दस्तावेज़ जोड़े गए हैं, docs/ANDROID-MK.html.
  • गड़बड़ी को ठीक किया गया है, जहां gnustl_static से लिंक किया गया कोड, रन करते समय क्रैश हो गया था एपीआई लेवल 8 (Android 2.2) से पहले की रिलीज़.
  • ndk-gdb: उस गड़बड़ी को ठीक किया गया जिसकी वजह से डीबग करते समय सेगमेंटेशन में गड़बड़ी हुई थी Android 3.0 या उससे नए डिवाइस कनेक्ट करने हैं.
  • <android/input.h>: एपीआई लेवल में पेश किए गए दो फ़ंक्शन वर्शन 9 (Android 2.3) गलत थे और उन्हें ठीक कर दिया गया था. हालांकि, इससे सोर्स एपीआई पर असर पड़ता है, लेकिन सिस्टम के बाइनरी इंटरफ़ेस में कोई बदलाव नहीं हुआ है. गलत फ़ंक्शन में एक history_index पैरामीटर और सही परिभाषाएं यहां दिखाई गई हैं:
    float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
                                               size_t pointer_index
    ,
                                               size_t history_index
    );

    float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
                                               size_t pointer_index
    ,
                                               size_t history_index
    );
  • एपीआई लेवल 9 (Android 2.3) के लिए, C लाइब्रेरी ARM बाइनरी को अपडेट किया गया, ताकि उसे स्क्रीन पर सही तरीके से दिखाया जा सके उस एपीआई लेवल में जोड़े गए नए फ़ंक्शन को लिंक कर सकते है (उदाहरण के लिए, pthread_rwlock_init).
मामूली सुधार और समाधान:
  • ऑब्जेक्ट फ़ाइलें अब हमेशा उसी क्रम में लिंक की जाती हैं जिस क्रम में वे दिखती हैं LOCAL_SRC_FILES. पहले ऐसा नहीं था, क्योंकि फ़ाइलों में डेटा को सोर्स एक्सटेंशन के आधार पर ग्रुप में रखें.
  • import-module के काम न करने पर, अब यह उन डायरेक्ट्री की सूची को प्रिंट करता है खोजे गए थे. इससे यह पता चलता है कि NDK_MODULE_PATH की परिभाषा बिल्ड सिस्टम में इस्तेमाल किया गया है, तो वह सही है.
  • import-module के पूरा हो जाने पर, अब यह डायरेक्ट्री को प्रिंट करता है, जहां लॉग में मॉड्यूल मिला (NDK_LOG=1 से दिखता है).
  • बहुत ज़्यादा संख्या में डीबग करने लायक ऐप्लिकेशन के बिल्ड की स्पीड बढ़ाई गई में डायरेक्ट्री शामिल हैं.
  • ndk-gdb: adb shell गड़बड़ियों की बेहतर पहचान और पहले से बेहतर गड़बड़ी के मैसेज मिलते हैं.
  • <pthread.h>: इसकी परिभाषा ठीक की गई एपीआई लेवल 9 (Android 2.3) और उसके बाद वाले वर्शन के लिए PTHREAD_RWLOCK_INITIALIZER.
  • मॉड्यूल से खुद को इंपोर्ट होने की समस्या को ठीक किया गया है, जिसकी वजह से अनगिनत लूप बन जाता था GNU निर्माता.
  • उस गड़बड़ी को ठीक किया गया जिसकी वजह से LOCAL_ARM_NEON को इस पर सेट किया गया था. ऐसा होने पर बिल्ड नहीं हो सका सही (build/core/build-binary.mk में टाइप करें).
  • उस गड़बड़ी को ठीक कर दिया गया है जिसकी वजह से .s असेंबली फ़ाइलों को कंपाइल नहीं किया जा सका था (.S फ़ाइलें ठीक थीं).

एनडीके की इस रिलीज़ में, r5 के मुकाबले कोई नई सुविधा शामिल नहीं की गई है. r5b रिलीज़ संपर्क करता है r5 रिलीज़ में ये समस्याएं आती हैं:

  • r5 बाइनरी के लिए, glibc 2.11 ज़रूरी है, लेकिन r5b बाइनरी एक स्पेशल वैल्यू की मदद से जनरेट होती हैं वह टूलचेन जो इसके बजाय glibc 2.7 या उसके बाद वाले वर्शन को टारगेट करता है. Linux टूलचेन बाइनरी अब Ubuntu 8.04 या उसके बाद के वर्शन.
  • आर्म-linux-androideabi-4.4.3 टूलचेन में कंपाइलर बग को ठीक किया गया. पिछली बाइनरी ने थंब निर्देश के अमान्य क्रम जनरेट किए, जब साइन किए हुए वर्णों से निपटना.
  • इसके लिए अनुपलब्ध दस्तावेज़ जोड़ता है "gnustl_static" APP_STL के लिए मान हो, जिससे आप इसके साथ लिंक कर सकते है GNU libstdc++ का स्टैटिक लाइब्रेरी वर्शन.
  • यह
  • इन ndk-build समस्याओं को ठीक किया गया:
    • एक बग, जिसकी वजह से अलग-अलग डिपेंडेंसी फ़ाइलें बन जाती हैं. ऐसा तब होता है, जब Windows पर कंपाइलेशन गड़बड़ी हुई. इसकी वजह से, इसके बाद सही तरीके से बिल्ड नहीं किया जा सका सोर्स कोड में गड़बड़ी को ठीक कर दिया गया था.
    • एक सिग्विन-विशिष्ट बग, जहां के लिए बहुत छोटे पथों का उपयोग किया जाता है Android NDK इंस्टॉलेशन या प्रोजेक्ट पाथ अमान्य डिपेंडेंसी फ़ाइलों का जनरेशन. इससे इंक्रीमेंटल बिल्ड करना संभव नहीं है.
    • टाइपिंग की एक ऐसी गड़बड़ी जिसकी वजह से cpufeatures लाइब्रेरी को सही तरीके से काम करने से रोका गया को बेहतर बनाने में मदद मिलेगी.
    • सिग्विन में बिल्ड ज़्यादा तेज़ काम करते हैं, क्योंकि cygpath -m पर कॉल नहीं किया जाता GNU Make से हर सोर्स या ऑब्जेक्ट फ़ाइल के लिए निकालें, जिसकी वजह से समस्याएं हुईं जिनमें बड़े सोर्स वाले पेड़ शामिल हैं. अगर यह ठीक से काम नहीं करता है, तो आपके इसमें NDK_USE_CYGPATH=1 cygpath -m को फिर से इस्तेमाल करने की ज़रूरत नहीं है.
    • सिग्विन इंस्टॉलेशन अब उपयोगकर्ता को ऐसे अमान्य इंस्टॉलेशन पाथ की सूचना देता है जो उसमें स्पेस न हो. पहले, एक अमान्य पथ GNU Make के गलत वर्शन की शिकायत करने वाली गड़बड़ी जनरेट करेगा, भले ही जिसे इंस्टॉल किया गया था.
  • टाइपिंग की गड़बड़ी को ठीक किया गया है, जिसकी वजह से NDK_MODULE_PATH एनवायरमेंट वैरिएबल ठीक से काम कर रहा है, इसमें कई डायरेक्ट्री मौजूद थीं, जिन्हें कोलन लगाकर अलग किया गया था.
  • prebuilt-common.sh स्क्रिप्ट में ऐसे सुधार हैं जो कंपाइलर के 64-बिट के लिए जांच करते हैं मशीन कोड जनरेट करता है, जो कि होस्ट टैग पर निर्भर रहने के बजाय, 32-बिट टूलचेन को स्नो लेपर्ड पर ठीक तरह से फिर से बनाने की अनुमति देता है. टूलचेन की मदद से स्क्रिप्ट का फिर से निर्माण किया जाता है अब मदद करें जो 32-बिट होस्ट टूलचेन का इस्तेमाल करते हैं.
  • INET_ADDRSTRLEN के लिए, एलान वाला एक फ़ॉर्म इसमें जोड़ दिया गया है. <netinet/in.h>.
  • IN6_IS_ADDR_MC_NODELOCAL और IN6_IS_ADDR_MC_GLOBAL को <netinet/in6.h> में जोड़ा गया.
  • 'ASm' को '__asm__' से बदला गया अनुमति देने के लिए, <asm/byteorder.h> में -std=c99 के साथ कंपाइलेशन.

एनडीके के इस रिलीज़ में कई नए एपीआई शामिल हैं. इनमें से ज़्यादातर को ऐसे गेम और मिलते-जुलते ऐप्लिकेशन को डेवलप करने में मदद करते हों जिनका बहुत ज़्यादा इस्तेमाल किया जाता है नेटिव कोड की. API का इस्तेमाल करके, डेवलपर के पास इवेंट, ऑडियो, ऐसेट, स्टोरेज, और ग्राफ़िक्स और विंडो मैनेजमेंट. डेवलपर ये शर्तें भी लागू कर सकते हैं: नए की मदद से, नेटिव कोड में Android ऐप्लिकेशन का लाइफ़साइकल NativeActivity क्लास. बदलावों के बारे में पूरी जानकारी पाने के लिए इसमें रिलीज़ करें, डाउनलोड किए गए एनडीके में शामिल CHANGES.HTML दस्तावेज़ पढ़ें पैकेज.

सामान्य जानकारी:
  • नेटिव गतिविधियों के लिए सहायता जोड़ता है, जिससे आप इन चीज़ों को लागू कर सकते हैं: नेटिव कोड में Android ऐप्लिकेशन का लाइफ़साइकल.
  • इनके लिए नेटिव सपोर्ट जोड़ता है:
    • इनपुट सबसिस्टम (जैसे कि कीबोर्ड और टच स्क्रीन)
    • सेंसर डेटा (एक्सीलरोमीटर, कंपास, जाइरोस्कोप वगैरह) का ऐक्सेस.
    • इवेंट लूप एपीआई, इनपुट और सेंसर इवेंट जैसी चीज़ों के इंतज़ार करने के लिए इस्तेमाल किए जाते हैं.
    • विंडो और सर्फ़ेस सबसिस्टम
    • OpenSL ES स्टैंडर्ड पर आधारित ऑडियो एपीआई, जो वीडियो चलाने और रिकॉर्ड करने की सुविधा देते हैं प्लैटफ़ॉर्म के ऑडियो इफ़ेक्ट पर भी कंट्रोल मिलता है
    • किसी .apk फ़ाइल में पैकेज की गई एसेट का ऐक्सेस.
  • इसमें GCC 4.4.3 के आधार पर एक नया टूलचेन शामिल है, जो बेहतर कोड जनरेट करता है. साथ ही, अब भी का उपयोग एक स्टैंडअलोन क्रॉस-कंपाइलर के रूप में, उन लोगों के लिए किया जा सकता है जो ./configure && make. यहां जाएं: docs/STANDALONE-TOOLCHAIN.html देखें. GCC 4.4.0 के लिए बाइनरी अब भी हैं दिया गया, लेकिन 4.2.1 बाइनरी हटा दिए गए थे.
  • पहले से बनी स्टैटिक और शेयर की गई लाइब्रेरी (docs/PREBUILTS.html) और मॉड्यूल एक्सपोर्ट और इंपोर्ट से, तीसरे पक्ष के मॉड्यूल को आसानी से शेयर और दोबारा इस्तेमाल किया जा सकता है (docs/IMPORT-MODULE.html इसकी वजह बताता है).
  • हेल्पर मॉड्यूल के रूप में, डिफ़ॉल्ट C++ STL लागू (STLport के आधार पर) लागू करता है. यह दोनों में से किसी एक का इस्तेमाल किया जा सकता है का इस्तेमाल, एक स्टैटिक या शेयर की गई लाइब्रेरी के तौर पर करता है. साथ ही, जानकारी और इस्तेमाल के उदाहरण सोर्स/android/stlport/README) हैं. पहले से बनी हुई STLport (स्टैटिक या शेयर किए गए) और GNU libstdc++ (सिर्फ़ स्टैटिक) के लिए बाइनरी भी उपलब्ध कराई गई हो, अगर आप डिफ़ॉल्ट C++ STL लागू करने के बजाय, उन लाइब्रेरी से कंपाइल करें. डिफ़ॉल्ट एसटीएल को लागू करने के दौरान, C++ अपवाद और आरटीटीआई काम नहीं करते. ज़्यादा के लिए जानकारी, देखें docs/CPLUSPLUS-SUPPORT.HTML.
  • इसमें cpufeatures हेल्पर लाइब्रेरी में किए गए सुधार शामिल हैं रिपोर्टिंग कुछ डिवाइसों में पहले ARMv7 सीपीयू की रिपोर्ट की गई थी, जबकि डिवाइस ARMv6). बुध उन डेवलपर को सुझाव देंगे जो अपने ऐप्लिकेशन के फिर से बनाने के लिए इस लाइब्रेरी का उपयोग करें सुधारों का लाभ लेने के लिए Google Play पर अपलोड करें.
  • एक EGL लाइब्रेरी जोड़ता है जो आपको OpenGL ES टेक्स्चर बनाने और प्रबंधित करने की सुविधा देता है और सेवाओं.
  • ऐप्लिकेशन के नए नमूने, native-plasma और जोड़ता है native-activity, की मदद से, नेटिव ऐक्टिविटी को लिखने का तरीका बताया गया है.
  • इसमें कई गड़बड़ियां और अन्य छोटे सुधार शामिल हैं; docs/CHANGES.html देखें ज़्यादा बदलावों की पूरी सूची.
NDK r4b नोट:

इसमें एनडीके के बिल्ड और डीबग करने वाली स्क्रिप्ट में मौजूद कई समस्याओं को हल किया गया है — अगर अगर आपने NDK r4 का इस्तेमाल किया है, तो हमारा सुझाव है कि NDK r4b बिल्ड डाउनलोड करें. ज़्यादा जानकारी के लिए इस रिलीज़ में हुए बदलावों के बारे में जानकारी देने वाली जानकारी. CHANGES.TXT दस्तावेज़ पढ़ें. डाउनलोड किए गए NDK पैकेज में शामिल है.

सामान्य जानकारी:
  • ndk-build के नए बिल्ड के ज़रिए आसान बिल्ड सिस्टम उपलब्ध कराता है आदेश.
  • प्रोडक्शन पर जनरेट किए गए मशीन कोड को आसानी से नेटिव डीबग करने के लिए सहायता उपलब्ध कराता है डिवाइसों को नए ndk-gdb निर्देश से कनेक्ट करेंगे.
  • ARM पर आधारित सीपीयू आर्किटेक्चर के लिए, Android के लिए खास तौर पर एक नया एबीआई जोड़ा गया है, armeabi-v7a. नया एबीआई, मौजूदा armeabi एबीआई का दायरा बढ़ाकर इन सीपीयू निर्देशों सेट एक्सटेंशन को शामिल करें:
    • थंब-2 के लिए निर्देश
    • VFP हार्डवेयर FPU निर्देश (VFPv3-D16)
    • ARM Advanced SIMD (NEON) GCC Intrinsics और VFPv3-D32 के लिए वैकल्पिक सहायता. Motorola का Verizon Droid, Google Nexus One, और अन्य डिवाइस पर यह सुविधा काम करती है अन्य.
  • नई cpufeatures स्टैटिक लाइब्रेरी (स्रोतों के साथ) जोड़ता है, जो आपको ऐप्लिकेशन, रनटाइम के दौरान होस्ट के डिवाइस की सीपीयू सुविधाओं का पता लगाता है. खास तौर पर, ऐप्लिकेशन ये काम कर सकते हैं: ARMv7-A, दोनों के साथ काम करता है. साथ ही, VFPv3-D32 और NEON सहायता भी देखें. इसके बाद, कोड पाथ की ज़रूरत होती है.
  • एक सैंपल ऐप्लिकेशन जोड़ा जाता है, hello-neon, जो यह बताता है कि सीपीयू की सुविधाओं की जांच करने के लिए cpufeatures लाइब्रेरी. इसके बाद, ऑप्टिमाइज़ की गई सुविधाएं उपलब्ध कराएं NEON Instrinsics का इस्तेमाल करने वाला कोड पाथ.
  • इससे आपको काम करने वाले किसी एक या दोनों निर्देश सेट के लिए मशीन कोड जनरेट करने की सुविधा मिलती है एनडीके ने बनाया. उदाहरण के लिए, ARMv5 और ARMv7-A, दोनों आर्किटेक्चर के लिए बनाया जा सकता है: और साथ ही, सब कुछ अपने ऐप्लिकेशन के आखिरी हिस्से में सेव रखें .apk.
  • यह पक्का करने के लिए कि आपके ऐप्लिकेशन उपयोगकर्ताओं के लिए सिर्फ़ तब उपलब्ध हों, जब उनके डिवाइस चलाने में सक्षम है, तो Google Play अब आपके ऐप्लिकेशन में शामिल निर्देश सेट की जानकारी — इसके लिए किसी कार्रवाई की ज़रूरत नहीं है अपने हिस्से का इस्तेमाल करें. इसके अलावा, Android सिस्टम खुद भी यह जांच करता है कि इंस्टॉल करते समय आपके ऐप्लिकेशन को शामिल करता है और इंस्टॉलेशन को केवल तभी जारी रखता है जब ऐप्लिकेशन एक ऐसी लाइब्रेरी उपलब्ध कराता है जिसे डिवाइस के CPU आर्किटेक्चर के लिए कंपाइल किया जाता है.
  • Android 2.2 के साथ काम करता है. इसमें Pixel को ऐक्सेस करने के लिए, स्टेबल एपीआई का नया वर्शन भी शामिल है नेटिव कोड से Bitmap ऑब्जेक्ट के बफ़र.
सामान्य जानकारी:
  • OpenGL ES 2.0 नेटिव लाइब्रेरी के साथ काम करता है.
  • एक नमूना ऐप्लिकेशन,hello-gl2 जोड़ता है, जो OpenGL ES 2.0 वर्टेक्स और फ़्रैगमेंट शेडर.
  • इस रिलीज़ के लिए GCC 4.4.0 के साथ टूलचेन बाइनरी को रीफ़्रेश किया गया है, जो पिछले कोड की तुलना में, थोड़ा छोटा और बेहतर मशीन कोड जनरेट करना चाहिए (4.2.1). NDK, अब भी 4.2.1 बाइनरी उपलब्ध कराता है, जिसका इस्तेमाल किया जा सकता है अपना मशीन कोड बनाने के लिए.

इसे पहले "Android 1.6 NDK, रिलीज़ 1" के नाम से रिलीज़ किया गया था.

सामान्य जानकारी:
  • OpenGL ES 1.1 नेटिव लाइब्रेरी के साथ काम करने की सुविधा देता है.
  • san-angeles सैंपल ऐप्लिकेशन जोड़ता है, जो 3D ग्राफ़िक रेंडर करता है यह एपीआई, GLSurfaceView ऑब्जेक्ट की मदद से गतिविधि के लाइफ़साइकल को मैनेज करता है.

इसे पहले "Android 1.5 NDK, Release 1" के तौर पर रिलीज़ किया गया था.

सामान्य जानकारी:
  • इसमें ARMv5TE के निर्देशों के लिए कंपाइलर सपोर्ट (जीसीसी) की सुविधा मिलती है. साथ ही, इसे थंबनेल-1 के साथ भी इस्तेमाल किया जा सकता है निर्देश.
  • इसमें स्थिर नेटिव एपीआई, दस्तावेज़, और सैंपल के लिए सिस्टम हेडर शामिल होते हैं का इस्तेमाल करें.