इस पेज पर, एनडीके के रिलीज़ किए गए सभी स्टेबल वर्शन में हुए बदलावों के बारे में जानकारी दी गई है. एनडीके का सबसे नया स्टेबल वर्शन या मौजूदा बीटा वर्शन डाउनलोड करने के लिए, NDK डाउनलोड पेज देखें.
android-ndk-announce ज़्यादा जानकारी के लिए Google Group का इस्तेमाल करें. साथ ही, रिलीज़ की सूचनाएं पाने के लिए सदस्यता लें.
Android NDK r27 एलटीएस (जुलाई 2024)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
Android NDK r26 एलटीएस (सितंबर 2023)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
- KitKat (एपीआई 19 और 20) अब काम नहीं करता.
Android NDK r25 एलटीएस (जुलाई 2022)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
- इसमें Android 13 के एपीआई शामिल हैं.
- LLVM 14 डेवलपमेंट के आधार पर, LLVM को clang-r450784d में अपडेट किया गया.
Android NDK r24 (मार्च 2022)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
-
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) को हटा दिया गया है. अगर आपको इमारत बनाने में किसी
Android NDK r23 LTS (अगस्त 2021)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
-
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 असेंबलर (GAS) को छोड़कर, GNU binutils को हटा दिया गया है. जीएएस
इसे अगली रिलीज़ में हटा दिया जाएगा. अगर आपको डिजिटल लर्निंग के लिए
Android NDK r22b (मार्च 2021)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
-
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
जब पुराने पाथ पर कोई ऐसा पाथ पास किया जाता हो जो मौजूद नहीं है, तो वह गलत तरीके से सफल होता है डिवाइस.
-
समस्या
1258:
-
GNU binutils पर रोक लगा दी गई है. इसे आने वाले एनडीके से हटा दिया जाएगा
रिलीज़. ध्यान दें कि GNU असेंबलर (
Android NDK r21e एलटीएस (जनवरी 2021)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
-
32-बिट Windows अब काम नहीं करता. इससे आपकी वेबसाइट की उपयोगकर्ताओं का एक हिस्सा है. अगर आपको अब भी एनडीके (NDK) ऐप्लिकेशन बनाने हैं Windows के 32-बिट वर्शन, NDK r20 का इस्तेमाल जारी रखें.
Android डेवलपर टूल में इस बदलाव के बारे में ज़्यादा जानकारी के लिए, देखें ब्लॉग पोस्ट विषय से जुड़े दूसरे लेख पढ़ें.
-
एलएलडी की सुविधा अब जांच के लिए उपलब्ध है.
एओएसपी ने डिफ़ॉल्ट रूप से एलएलडी का इस्तेमाल करना शुरू कर दिया है और एनडीके उसके बाद
(टाइमलाइन की जानकारी नहीं है).
-fuse-ld=lld
पास करके अपने ऐप्लिकेशन में एलएलडी की जांच करें लिंक करते समय. ध्यान दें कि समस्या 843 एलएलडी का इस्तेमाल करने वाले उन बिल्ड पर असर डालेगा जो binutils स्ट्रिप और objcopy के साथ यह llvm-strip और llvm-objcopy जैसी है. -
आने वाले समय में, लेगसी टूलचेन इंस्टॉल पाथ को हटा दिया जाएगा
रिलीज़. ये पाथ NDK r19 के बाद से पुराने हो गए हैं और
एनडीके (NDK) में काफ़ी ज़्यादा जगह होती है. हटाए जा रहे पाथ:
- प्लेटफ़ॉर्म
- सोर्स/cxx-stl
- सिस्टमूट
- टूलचेन (टूलचेन/एलवीएम को छोड़कर)
make_standalone_toolchain.py
उपयोगकर्ता (हालांकि वह स्क्रिप्ट r19 के बाद से गैर-ज़रूरी). लेगसी टूलचेन लेआउट से माइग्रेट करने के बारे में जानकारी के लिए, देखें सिस्टम मेंटेनर तैयार करने की गाइड आपके इस्तेमाल में आने वाले एनडीके वर्शन के लिए. - APK अपलोड करते समय, Play Store पर 64-बिट की सुविधा काम करेगी अगस्त 2019 से लागू होगा. अभी पोर्ट करना शुरू करें, ताकि आप जब चाहें, तब आपका समय आ गया है. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
- अब macOS का ऐप्लिकेशन बंडल इनके लिए उपलब्ध है: को हमारे विकी और हमारी वेबसाइट से डाउनलोड करें. ध्यान दें कि केवल बंडल RPATHs का इस्तेमाल कर सकता है और नोटराइज़ेशन पास कर सकता है. यह एक परंपरागत NDK पैकेज है, जो macOS को नोटरी नहीं किया जा सकता. SDK टूल, ऐप्लिकेशन बंडल के तौर पर परंपरागत पैकेज के लिए लेआउट में बदलाव करना पड़ता है, Android Studio के साथ काम नहीं करेगा. एनडीके, जब SDK टूल मैनेजर के ज़रिए डाउनलोड किया जाता है, तो उसे क्वॉरंटीन किया जाता है. इसलिए, फ़िलहाल गेटकीपर से अनुमति है. फ़िलहाल, SDK टूल मैनेजर macOS के लिए एनडीके (NDK) पाने का एक भरोसेमंद तरीका है.
-
Android NDK r20b (जून 2019)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
-
एलएलडी की सुविधा अब जांच के लिए उपलब्ध है.
एओएसपी, डिफ़ॉल्ट रूप से एलएलडी पर स्विच कर रहा है और
इसके बाद NDK, (टाइमलाइन के बारे में जानकारी नहीं है). पास होने पर अपने ऐप्लिकेशन में एलएलडी की जांच करें
लिंक करते समय
-fuse-ld=lld
. - APK अपलोड करते समय, Play Store पर 64-बिट की सुविधा काम करेगी अगस्त 2019 से लागू होगा. अभी पोर्ट करना शुरू करें, ताकि आप जब चाहें, तब आपका समय आ गया है. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
- Android Q के एपीआई जोड़े गए.
-
एलएलडी की सुविधा अब जांच के लिए उपलब्ध है.
एओएसपी, डिफ़ॉल्ट रूप से एलएलडी पर स्विच कर रहा है और
इसके बाद NDK, (टाइमलाइन के बारे में जानकारी नहीं है). पास होने पर अपने ऐप्लिकेशन में एलएलडी की जांच करें
लिंक करते समय
Android NDK r19c (जनवरी 2019)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
-
डेवलपर को अपने ऐप्लिकेशन की जांच एलएलडी की मदद से शुरू करनी चाहिए. एओएसपी ने
डिफ़ॉल्ट रूप से एलएलडी होता है और एनडीके अगले
रिलीज़. एलएलडी की ट्रेनिंग पूरी होने के बाद, बीएफ़डी और गोल्ड की कीमतें हटा दी जाएंगी
रिलीज़ साइकल, जिसमें कोई बड़ी समस्या न हुई हो (अनुमानित 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/
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है r19 के लिए टूलचेन को पुराने पाथ पर भी इंस्टॉल किया गया है, ताकि बिल्ड डिस्ट्रिब्यूट किया जा सके सिस्टम को नए लेआउट के हिसाब से अपनाने का मौका देते हैं. पुराने पाथ को r20 में हटाया गया./bin/armv7a-linux-androideabi26-clang++ src.cpp make_standalone_toolchain.py
स्क्रिप्ट नहीं होगी हटाया गया. अब यह ज़रूरी नहीं है. इससे आपको ऊपर दी गई जानकारी के साथ चेतावनी मिलेगी जानकारी, लेकिन स्क्रिप्ट मौजूदा वर्कफ़्लो. अगर ndk-build, CMake या स्टैंडअलोन टूलचेन का इस्तेमाल किया जा रहा है, तो आपके वर्कफ़्लो में कोई बदलाव नहीं होना चाहिए. यह बदलाव इनके लिए अहम है जो तीसरे पक्ष के बिल्ड सिस्टम मैनेज करते हैं, जिन्हें अब Android का कुछ खास कोड मिटाएं. ज़्यादा जानकारी के लिए, देखें बिल्ड सिस्टम मेंटेनर की गाइड. - ndk-डिपेंड को हटा दिया गया है. हमारा मानना है कि ReLinker पुराने Android में, मूल लाइब्रेरी लोड होने में आने वाली समस्याओं का बेहतर हल वर्शन हैं.
- समस्या 862: Clang पर रीडायरेक्ट की गई GCC रैपर स्क्रिप्ट हटा दी गई हैं, क्योंकि वे इतने काम नहीं करते हैं कि उनकी जगह दूसरे चैनलों को बदला जा सके.
-
डेवलपर को अपने ऐप्लिकेशन की जांच एलएलडी की मदद से शुरू करनी चाहिए. एओएसपी ने
डिफ़ॉल्ट रूप से एलएलडी होता है और एनडीके अगले
रिलीज़. एलएलडी की ट्रेनिंग पूरी होने के बाद, बीएफ़डी और गोल्ड की कीमतें हटा दी जाएंगी
रिलीज़ साइकल, जिसमें कोई बड़ी समस्या न हुई हो (अनुमानित r21). जांच करें
लिंक करते समय
Android NDK r18b (सितंबर 2018)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
- जीसीसी को हटा दिया गया है.
-
एलएलडी की सुविधा अब जांच के लिए उपलब्ध है.
एओएसपी, डिफ़ॉल्ट रूप से एलएलडी पर स्विच कर रहा है और
इसके बाद NDK, (टाइमलाइन के बारे में जानकारी नहीं है). पास होने पर अपने ऐप्लिकेशन में एलएलडी की जांच करें
लिंक करते समय
-fuse-ld=lld
. - gnustl, gabi++, और stlport हटा दिए गए हैं.
- ICS (android-14 और android-15) के लिए सहायता हटा दी गई है. ऐप्लिकेशन एक्ज़ीक्यूटेबल का उपयोग करने से अब PIE और गैर-PIE दोनों देने की ज़रूरत नहीं है एक्ज़ीक्यूट किया जा सकता है.
- APK अपलोड करते समय, Play Store पर 64-बिट की सुविधा काम करेगी अगस्त 2019 से लागू होगा. अभी पोर्ट करना शुरू करें, ताकि आप जब चाहें, तब आपका समय आ गया है. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
Android NDK r17c (जून 2018)
चेंजलॉग- डाउनलोड किए गए वीडियो
-
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
- जीसीसी अब काम नहीं करता. इसे 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 से लागू होगा. अभी पोर्ट करना शुरू करें, ताकि आप जब चाहें, तब आपका समय आ गया है. ज़्यादा जानकारी के लिए, यह देखें यह ब्लॉग पोस्ट पढ़ें.
Android NDK r16b (दिसंबर 2017)
चेंजलॉग- डाउनलोड किए गए वीडियो
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
- काम न करने वाले हेडर हटा दिए गए हैं. यूनिफ़ाइड हेडर को अब सिर्फ़ "हेडर" के नाम से जाना जाता है. माइग्रेशन से जुड़ी सलाह पाने के लिए, यहां जाएं यूनिफ़ाइड हेडर माइग्रेशन नोट.
- जीसीसी अब काम नहीं करता. इसे अभी एनडीके से नहीं हटाया जाएगा. हालांकि, यह अब बैकपोर्ट हासिल करना. इसे तब तक नहीं हटाया जा सकता, जब तक कि 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 के बारे में ज़्यादा जानने के लिए, यह देखें नेटिव एपीआई के बारे में खास जानकारी.
इस रिलीज़ में नया क्या है और क्या बदलाव किए गए हैं, इस बारे में ज़्यादा जानकारी के लिए यह देखें बदलाव का लॉग.
Android NDK r15c (जुलाई 2017)
चेंजलॉग- डाउनलोड किए गए वीडियो
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
- यूनिफ़ाइड हेडर, डिफ़ॉल्ट रूप से चालू होते हैं. इन्हें इस्तेमाल करने का तरीका जानने के लिए हेडर, देखें यूनिफ़ाइड हेडर.
- जीसीसी अब काम नहीं करता. इसे अभी तक एनडीके से नहीं हटाया गया, लेकिन अब इसे बैकपोर्ट नहीं लिया जा रहा है. इसे तब तक नहीं हटाया जा सकता, जब तक कि 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 NDK r14b (मार्च 2017)
चेंजलॉग- डाउनलोड किए गए वीडियो
- इस रिलीज़ को डाउनलोड किया जा सकता है यहां पढ़ें.
- सूचनाएं
-
- यूनिफ़ाइड हेडर: इस रिलीज़ में, सिंक किए गए प्लैटफ़ॉर्म हेडर लॉन्च किए जाते हैं
और उन्हें Android प्लैटफ़ॉर्म से हमेशा अप-टू-डेट और सटीक बनाए रखते हैं. अब सिर्फ़ हेडर के हिसाब से गड़बड़ियां ठीक की गईं
इससे सभी एपीआई लेवल पर असर पड़ता है. यूनिफ़ाइड हेडर की शुरुआत होने से, एनडीके के पिछले एनडीके की कमियों को ठीक किया जाता है
रिलीज़, जैसे:
- M और N के हेडर, असल में L के हेडर थे.
- हेडर में फ़ंक्शन की जानकारी, प्लैटफ़ॉर्म लेवल से सही तरीके से मेल नहीं खाती; हेडर, जो मौजूद नहीं हैं या जो उपलब्ध फ़ंक्शन के बारे में जानकारी नहीं दे पाए.
- कई पुराने एपीआई लेवल में ऐसे कॉन्सटेंट मौजूद नहीं थे या गलत थे जो नए एपीआई में थे लेवल.
ये नए यूनिफ़ाइड हेडर, डिफ़ॉल्ट रूप से चालू नहीं होते. इन्हें चालू और इस्तेमाल करने के बारे में जानने के लिए हेडर, देखें यूनिफ़ाइड हेडर.
- जीसीसी का बंद होना: यह रिलीज़, जीसीसी के लिए काम करने की सुविधा को बंद कर देती है. GCC को अभी NDK, लेकिन उसे बैकपोर्ट नहीं मिलेगा. भाषा के कुछ हिस्से अब भी Clang के साथ काम नहीं करता है, libc++ के स्थिर होने तक GCC को पूरी तरह से नहीं हटाया जाएगा डिफ़ॉल्ट रूप से काफ़ी है.
- यूनिफ़ाइड हेडर: इस रिलीज़ में, सिंक किए गए प्लैटफ़ॉर्म हेडर लॉन्च किए जाते हैं
और उन्हें Android प्लैटफ़ॉर्म से हमेशा अप-टू-डेट और सटीक बनाए रखते हैं. अब सिर्फ़ हेडर के हिसाब से गड़बड़ियां ठीक की गईं
इससे सभी एपीआई लेवल पर असर पड़ता है. यूनिफ़ाइड हेडर की शुरुआत होने से, एनडीके के पिछले एनडीके की कमियों को ठीक किया जाता है
रिलीज़, जैसे:
इस रिलीज़ में नया क्या है और क्या बदलाव किए गए हैं, इस बारे में ज़्यादा जानकारी के लिए यह देखें बदलाव का लॉग.
Android NDK r13b (अक्टूबर 2016)
- डाउनलोड किए गए वीडियो
- इस रिलीज़ के डाउनलोड संग्रहित किए गए हैं यहां पढ़ें.
- सूचनाएं
-
- जीसीसी अब काम नहीं करता. इसे सिर्फ़ एनडीके से नहीं हटाया जाएगा अभी तक, लेकिन उसे अब बैकपोर्ट नहीं मिल रहे हैं. इसे यहां तक नहीं निकाला जा सकता के बाद 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.
Android NDK r12b (जून 2016)
- डाउनलोड किए गए वीडियो
- इस रिलीज़ के डाउनलोड यहां संग्रहित किए जाते हैं.
- सूचनाएं
ndk-build
कमांड, डिफ़ॉल्ट रूप से r13 में Clang का इस्तेमाल करता है. हम GCC को रिलीज़ हो रही है.make-standalone-toolchain.sh
स्क्रिप्ट, r13 में हटा दी जाएगी. पक्का करें किmake_standalone_toolchain.py
आपकी ज़रूरत के हिसाब से हो.- GitHub पर समस्याओं की शिकायत करें.
- हमने
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
.
- जीसीसी
- 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)
- इस बदलाव लॉग का मकसद, सभी बकाया गड़बड़ियों की पूरी सूची नहीं बनाना है.
__thread
को इस बार रीयल टाइम में काम करना चाहिए.
Android NDK r12 (जून 2016)
- डाउनलोड किए गए वीडियो
- इस रिलीज़ के डाउनलोड यहां संग्रहित किए जाते हैं.
- सूचनाएं
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
वैल्यू का इस्तेमाल करें.
Android NDK r11c (मार्च 2016)
- बदलाव
ndk-gdb.py
स्क्रिप्ट में अतिरिक्त सुधार लागू किए गए.ndk-gdb
में वैकल्पिक पैकेज नाम वाला आर्ग्युमेंट जोड़ा गया आदेश--attach
विकल्प. (समस्या 13)- Windows के 32-बिट प्लैटफ़ॉर्म के लिए, अमान्य टूलचेन पाथ को ठीक किया गया. (समस्या 45)
ndk-which
कमांड के लिए रिलेटिव पाथ को ठीक किया गया. (समस्या 29)- libgcc कंपाइलर के लिए, सिगपाथ के इस्तेमाल को ठीक किया गया. (Android का समस्या 195486)
Android NDK r11b (मार्च 2016)
- एनडीके
-
- ज़रूरी सूचना
- हम अपने गड़बड़ी के ट्रैकर को पर ले गए हैं GitHub.
- बदलाव
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 समर्थन.
Android NDK r11 (मार्च 2016)
- क्लैंग
-
- ज़रूरी सूचना
- हमारा सुझाव है कि आप 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, अब एम्युलेट की गई 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 और इससे पुराने लोगों के लिए सहायता की अपेक्षा करना आने वाले समय में लॉन्च किया जा सकता है.
- ARM स्टैंडअलोन टूलचेन को डिफ़ॉल्ट रूप से आर्म7 में बदला गया.
- 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 से मिला रिग्रेशन नहीं माना जाता.
Android NDK r10e (मई 2015)
- डाउनलोड किए गए वीडियो
- इस रिलीज़ के डाउनलोड यहां संग्रहित किए जाते हैं.
- ज़रूरी बदलाव:
-
- इसमें 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 पैकेज हटाया गया.
- इसमें Cortex-A53 Erratum 843419 के लिए समाधान को
- अहम गड़बड़ियां ठीक की गईं:
-
- मुख्य थ्रेड के बाहर 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 की पहचान जोड़ी गई.
Android NDK r10d (दिसंबर 2014)
- ज़रूरी बदलाव:
-
- 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. ये सीमाएं शेयर की गई लाइब्रेरी पर लागू नहीं होती हैं.
- GCC 4.8 को सभी 32-बिट एबीआई के लिए डिफ़ॉल्ट बनाया गया है. अब काम नहीं करने वाले GCC 4.6 वर्शन और
इसे अगली रिलीज़ में हटा दिया जाएगा. पिछली कार्रवाई को पहले जैसा करने के लिए, इनमें से किसी एक को जोड़ें
ndk-build के लिए
- अहम गड़बड़ियां ठीक की गईं:
-
- इससे जुड़ी और समस्याएं ठीक की गईं
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)
- इससे जुड़ी और समस्याएं ठीक की गईं
a Arc64-linux-android-4.9 लिंकर में, A53 गड़बड़ी #835769. इसके तहत, जीसीसी
नया विकल्प
- अन्य गड़बड़ियां ठीक की गईं:
-
- ये हेडर और लाइब्रेरी सुधार किए गए:
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
का डेटा टाइप बदलने के लिए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)
unsigned long
की ओर से का इस्तेमाल करें.
Android NDK r10c (अक्टूबर 2014)
- ज़रूरी बदलाव:
-
- डाउनलोड स्ट्रक्चर में ये बदलाव किए गए:
- हर पैकेज में अब 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
जिस विकल्प को जीसीसी के साथ काम करता है. - इसका इस्तेमाल करके, 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
कहा जाता था), लेकिन उसके पास कोई दस्तावेज़ नहीं था.
ज़्यादा जानकारी के लिए, नीचे दी गई अहम गड़बड़ियां ठीक करना देखें.
जीसीसी का इस्तेमाल करके प्रोजेक्ट से माइग्रेट करते समय,
-Wno-invalid-command-line-argument
और-Wno-unused-command-line-argument
इस्तेमाल नहीं किए गए फ़्लैग को अनदेखा न करें. - अहम गड़बड़ियां ठीक की गईं:
-
- GCC4.9/a Arc64 के साथ हुई अंदरूनी कंपाइलर गड़बड़ी को ठीक किया गया, जिसकी वजह से नीचे दी गई गड़बड़ी हो रही थी गड़बड़ी का मैसेज (समस्या 77564):
internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
- GCC4.9/arm से गलत कोड जनरेट होने की समस्या को ठीक किया गया. (समस्या 77567)
- GCC4.9/mips वाली इंटरनल कंपाइलर की गड़बड़ी को ठीक किया गया है, जिसमें इनलाइन असेंबली शामिल है. (समस्या 77568)
x = (cond) ? y : x
के लिए GCC4.9/arm से जनरेट हो रहे गलत कोड को ठीक किया गया. (समस्या 77569)- GCC4.9/arc64 और Clang3.5/a Arc64 को ठीक कर दिया गया है, ताकि गड़बड़ी ठीक की जा सके डिफ़ॉल्ट रूप से Cortex-A53 erratum (835769). इस विकल्प को सेट करके, इस समस्या को हल करने का तरीका बंद करें
-mno-fix-cortex-a53-835769
. - अन्य गड़बड़ियां ठीक की गईं:
-
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)
- GCC4.9 में -Os (
Android NDK r10b (सितंबर 2014)
- ज़रूरी सूचनाएं:
-
- डाउनलोड किए जा सकने वाले पैकेज पर 512 एमबी के साइज़ की पाबंदी होती है. इसलिए, नीचे दिए गए 32-बिट आइटम, 32-बिट एनडीके डाउनलोड पैकेज में नहीं आते हैं. इसके बजाय, वे 64-बिट में मौजूद होते हैं:
- Android-L हेडर
- जीसीसी 4.9
- फ़िलहाल, एनडीके से मिलने वाली 'रेंडरस्क्रिप्ट' सुविधा, Android 4.4 (एपीआई लेवल 19) वाले 32-बिट रेंडरस्क्रिप्ट के लिए ही उपलब्ध है. Renderscript (32- या 64-बिट) और Android वर्शन के किसी भी अन्य कॉम्बिनेशन का इस्तेमाल करके, HelloComputeNDK (रेंडरस्क्रिप्ट का एकमात्र सैंपल) नहीं बनाया जा सकता.
- नेटिव-कोडेक को कंपाइल करने के लिए, आपको 64-बिट एनडीके पैकेज का इस्तेमाल करना होगा. इसमें सभी Android-L हेडर मौजूद होते हैं.
- अहम गड़बड़ियां ठीक की गईं:
- अन्य गड़बड़ियां ठीक की गईं:
-
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 हेडर में ये सुधार किए गए:
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()
फ़ंक्शन.cmsg_nxthdr
का नाम बदलकर__cmsg_nxthdr
किया गया.__libc_malloc_dispatch
को हटा दिया गया है.ptrace()
प्रोटोटाइप कोlong ptrace(int, ...);
में बदल दिया गया है.sha1.h
को हटा दिया गया है.android/dlext.h
मेंandroid_dlextinfo
की अवधि बढ़ाई गई.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.)
Android NDK r10 (जुलाई 2014)
- ज़रूरी बदलाव:
-
- तीन नए एबीआई जोड़े गए, सभी 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
के दावे को ठीक किया गया: - Clang 3.3/3.4 के इन क्रैश को ठीक किया गया:
llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef
(समस्या 57381).): Assertion Weights.size() >= 2 && "Need at least two branch weights!" 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). - libc++ को ठीक किया गया, ताकि अब यह
- अन्य गड़बड़ियां ठीक की गईं:
-
- ठीक किए गए हेडर:
- 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 चेतावनी को ठीक किया गया. चेतावनी वाले मैसेज में लिखा है: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
ये काम नहीं कर सके साथ-साथ मौजूद रहेंगे.
include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int);
(91185 की सूची बदलें). - अन्य बदलाव:
-
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
.
Android NDK r9d (मार्च 2014)
- ज़रूरी बदलाव:
-
- 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
डायरेक्ट्री में मौजूद अतिरिक्त लाइब्रेरी. अपनेCFLAGS
LFLAGS
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)
- Clang 3.4 कंपाइलर के लिए सहायता जोड़ी गई. कॉन्टेंट बनाने
अब
- अहम गड़बड़ियां ठीक की गईं:
-
- अचानक होने वाले थ्रो को ठीक किया गया 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
- Mac OS X:
- 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
से x86libm.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
की स्पीड बढ़ाई गई अगर बताई गई डेस्टिनेशन डायरेक्ट्री मौजूद नहीं है.
- सभी
Android NDK r9c (दिसंबर 2013)
इस रिलीज़ में सिर्फ़ गड़बड़ियां ठीक की जा सकती हैं.
- अहम गड़बड़ियां ठीक की गईं:
-
- 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 NDK r9b (अक्टूबर 2013)
- ज़रूरी बदलाव:
-
- इस लेवल तक के सभी 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 के साथ काम नहीं करती है. इसे अगले चरण में हटा दिया जाएगा रिलीज़.
- इस लेवल तक के सभी Android एपीआई लेवल के लिए,
- अहम गड़बड़ियां ठीक की गईं:
-
- 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 GCC 4.6
- अन्य गड़बड़ियां ठीक की गईं:
-
- हेडर ठीक करना
- इसके अनुसार, 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
.
- इसके अनुसार, ARM
- 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% की कमी की गई.
- सभी GCC बिल्ड के लिए OpenMP चालू हो गई. इस सुविधा का इस्तेमाल करने के लिए, अपने वीडियो में ये फ़्लैग जोड़ें
बिल्ड सेटिंग:
Android NDK r9 (जुलाई 2013)
- ज़रूरी बदलाव:
-
- 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 4.3 (एपीआई लेवल 18) के लिए सहायता जोड़ी गई. ज़्यादा जानकारी के लिए, यह देखें
- अहम गड़बड़ियां ठीक की गईं:
-
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
को ढूंढने के लिए, MIPSgdbserver
को ठीक किया गया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.3stlport
कंपाइलेशन गड़बड़ी ठीक की गई_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
नहीं है.
- हेडर में सुधार
Android NDK r8e (मार्च 2013)
- ज़रूरी बदलाव:
-
- 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)
- 64-बिट होस्ट टूलचेन सेट जोड़ा गया (पैकेज नाम प्रत्यय
- अहम गड़बड़ियां ठीक की गईं:
-
-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
मौजूद न होने वाले X86libc.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*__
को ARMtoolchains/*/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
बिल्ड में विकल्प जोड़ा गया वह भी छिपा हुआ हो.
Android NDK r8d (दिसंबर 2012)
- ज़रूरी बदलाव:
-
- एनडीके में 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)
- एनडीके में GNU कंपाइलर कलेक्शन (जीसीसी) 4.7 कंपाइलर जोड़ा गया. जीसीसी 4.6 कंपाइलर
अब भी डिफ़ॉल्ट है, इसलिए आपको नया वर्शन साफ़ तौर पर इस तरीके से चालू करना होगा:
- अहम गड़बड़ियां ठीक की गईं:
-
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
फ़ाइल के मौजूद न होने की समस्या ठीक की गई.
- NDK हेडर फ़ाइल में सुधार:
- अन्य बदलाव:
-
- 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/
में रखा गया है.
Android NDK r8c (नवंबर 2012)
- ज़रूरी बदलाव:
-
- 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
विकल्प का इस्तेमाल किया गया.
- Clang 3.1 कंपाइलर को एनडीके में जोड़ा गया. GNU कंपाइलर कलेक्शन (जीसीसी) 4.6
अब भी डिफ़ॉल्ट है, इसलिए आपको इस तरह से Clang कंपाइलर विकल्प को साफ़ तौर पर चालू करना होगा:
- अहम गड़बड़ियां ठीक की गईं:
-
- रूट खास अधिकारों के साथ
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 GNUlibstdc++
को तय किया गया डिफ़ॉल्ट. ज़्यादा जानकारी के लिए, यह देखें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++ फ़ाइलों की खोज की कंपाइलेशन में STLheader/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)- ऋणात्मक शिफ़्ट राशि के साथ आंतरिक कंपाइलर गड़बड़ी ठीक की गई. (जीसीसी की समस्या)
- इस समस्या को ठीक करने के लिए, ARM GCC 4.4.3/4.6
- X86 के लिए
-fstack-protector
को ठीक किया गया, जो किndk-build
x86 एबीआई टारगेट. - MIPS से जुड़े खास सुधार:
_STLP_LITTLE_ENDIAN
को 1 पर सेट करके,STLport
की एंडियननेस को ठीक किया गया. ऐसा तब किया गया, जब MIPSlibstlport_*
कंपाइलेशन.- 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
ब्रेकपॉइंट ढूंढने के लिए, बार-बार कोशिश करने के लिए सुधार जोड़ा गया. अब GDBsvr4_current_sos()
को किए जाने वाले हर कॉल के दौरानenable_break()
बार कोशिश करेगा तो वह सफल हो जाता है. (43563 बदलें)- उस समस्या को ठीक किया गया है जिसकी वजह से
gdb
, ब्रेकपॉइंट पर नहीं रुकेगाdlopen-ed
लाइब्रेरी. (समस्या 34856) - सिस्टम पर
dlopen()
को कॉल करते समय, डाइनैमिक लिंकर में मौजूदSIGILL
से जुड़ी गड़बड़ी को ठीक किया गया जहां/system/bin/linker
में चिह्न हटा दिए गए हैं और संरक्षण नहीं होने की वजह से,rtld_db_dlactivity()
कोThumb
के तौर पर लागू किया गया हैsym_addr
में सेLSB
. (समस्या 37147)
- बिल्ड के समय gdb-7.x में Python सहायता बंद कर दी जाती है, नहीं तो gdb-7.x कॉन्फ़िगर कर सकता है
फ़ंक्शन, होस्ट और बिल्ड में उपलब्ध Python वर्शन को चुन सकता है
Python के किसी खास वर्शन पर हार्ड-वायर वाली डिपेंडेंसी के साथ
- रूट खास अधिकारों के साथ
- अन्य गड़बड़ियां ठीक की गईं:
-
- ठीक किए गए एनडीके हेडर:
- यहां से गलती से हटाए गए
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-5 से android-7 तक
- सेक्शन में दी गई आसान स्कीम के साथ, 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
विकल्प का इस्तेमाल नहीं किया जाता. साथ ही, इसे सभी के लिए, ज़्यादातर जांचों को इकट्ठा करने के लिए बेहतर बनाया गया है काम करने वाले एबीआई और अटैच किए गए सभी डिवाइसों पर काम करते हैं
Android NDK r8b (जुलाई 2012)
इस रिलीज़ की मुख्य सुविधाएं, नया 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
सिंबल दोबारा स्कैन करें).
- adb ज़्यादा के लिए
- Windows पर
ndk-build clean
को ठीक किया गया, जो हटाई नहीं जा सकी./libs/*/lib*.so
. make
होने पर गैर-शून्यERRORLEVEL
वापस करने के लिएndk-build.cmd
तय किया गया विफल होता है.__exidx_start
को गलत तरीके से एक्सपोर्ट होने से रोकने के लिए,libc.so
गड़बड़ी को ठीक किया गया और__exidx_end
सिंबल.- ARM और
SEGV
__libc_init
एमआईपीएस.
- Mac OS पर
- ज़रूरी बदलाव:
-
- 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.21ld
टूल में, बैक-पोर्ट किए गए सुधार शामिल हैं वर्शन 2.22:ld --gc-sections
को ठीक कर दिया गया है, जो ज़ॉम्बी के रेफ़रंस को गलती से सेव रखता है बाहरी लाइब्रेरी पर क्लिक करें. (और जानकारी).- ओरिजनल
p_align
औरstrip
अगर वे मान्य हैं, तोGNU_RELRO
सेक्शन मेंp_flags
. इस समस्या को ठीक किए बिना, प्रोग्राम में-fPIE
के साथ बनाया गया डिबग नहीं किया जा सका. (मोर ई की जानकारी)
- पुराने वर्शन के साथ काम करने के लिए,
sincos()
ऑप्टिमाइज़ेशन बंद किया गया प्लैटफ़ॉर्म.
- GCC 4.6 अब डिफ़ॉल्ट टूलचेन है. मूल जवाब चुनने के लिए,
- नेवर eXeute (NX) बिट और
relro
/bind_now
सुरक्षा को डिफ़ॉल्ट रूप से चालू करने के लिए, बिल्ड के विकल्पों को अपडेट किया गया:--noexecstack
को असेंबलर में और-z noexecstack
को लिंकर में जोड़ा गया जो स्टैक पर NX बिट को चालू करके बफ़र ओवरफ़्लो हमलों से NX सुरक्षा देती है और हीप.- अंदरूनी हिस्सों को मज़बूत बनाने के लिए, लिंकर में
-z relro
और-z now
को जोड़ा गया डेटा सेक्शन के लिंक शामिल हैं. (ज़्यादा जानकारी के लिए यहां जाएं: 1, 2) - इन सुविधाओं को बंद करने के लिए, नीचे दिए गए विकल्पों का इस्तेमाल करें:
- इस विकल्प के लिए
--execstack
विकल्प सेट करके, NX की सुरक्षा बंद करें: असेंबलर और-z execstack
लिंकर के लिए. -z norelro
को सेट करके और लिंकर के लिए-z lazy
विकल्प.- एनडीके
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 */ }
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- GCC 4.6 टूलचेन (
- अन्य गड़बड़ियां ठीक की गईं:
-
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
स्टैंडअलोन टेस्ट को फिर से बनाया गया .
- Linux पर होस्ट किया जाने वाला नया टूलचेन जनरेट करने के लिए,
- सभी प्लैटफ़ॉर्म और आर्किटेक्चर से
if_dl.h
हेडर हटाया गया. इसमें, जिनAF_LINK
औरsockaddr_dl
एलिमेंट के बारे में बताया गया है वे खास तौर पर बीएसडी के लिए हैं. इसका मतलब है कि ये एलिमेंट मौजूद नहीं हैं Linux में).
- बाइनरी की बदली गई जगहें:
Android NDK r8 (मई 2012)
एनडीके के इस रिलीज़ में, 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 सिस्टम भी और उस समय इंस्टॉलेशन की अनुमति देता है, जब ऐप्लिकेशन ऐसी लाइब्रेरी उपलब्ध कराता हो को डिवाइस के सीपीयू आर्किटेक्चर के लिए कंपाइल किया जाता है.
- MIPS एबीआई के लिए सहायता जोड़ी गई, जिससे आप ऐसा मशीन कोड जनरेट कर सकते हैं जो
MIPS की मदद से काम करने वाले Android डिवाइस MIPS की मुख्य सुविधाओं में MIPS से जुड़ी खास सुविधाएं शामिल हैं
टूलचेन, सिस्टम हेडर, लाइब्रेरी, और डीबग करने की सुविधा. इसके बारे में ज़्यादा जानकारी के लिए
MIPS के लिए सहायता, NDK पैकेज में
- अहम गड़बड़ियां ठीक की गईं:
-
- GAbi++ लागू करने में हुई गड़बड़ी को ठीक किया गया है, जहां बेस क्लास ऑब्जेक्ट
b
काdynamic_cast<D>(b)
से डिराइव्ड क्लासD
में नतीजा मिला बेस क्लास से उलटी दिशा में गलत तरीके से अडजस्ट किया गया. (समस्या 28721) - उस समस्या को ठीक कर दिया गया है जिसकी वजह से
make-standalone-toolchain.sh
कॉपी नहीं हो सकाlibsupc++.*
.
- GAbi++ लागू करने में हुई गड़बड़ी को ठीक किया गया है, जहां बेस क्लास ऑब्जेक्ट
- अन्य गड़बड़ियां ठीक की गईं:
-
ndk-build.cmd
ठीक से काम कर रहा है, यह पक्का करने के लिएndk-build.cmd
को ठीक किया गया अगर उपयोगकर्ता नेSHELL
एनवायरमेंट वैरिएबल को फिर से तय किया है. हालांकि, इस वैरिएबल को बदला जा सकता है कई तरह के डेवलपमेंट टूल इंस्टॉल करते समय.
Android NDK r7c (अप्रैल 2012)
एनडीके (NDK) के इस रिलीज़ में, Tegra2 पर आधारित डिवाइसों के लिए एक अहम सुधार शामिल है. इसके अलावा, अतिरिक्त सुधार और सुधार:
- अहम गड़बड़ियां ठीक की गईं:
-
- GNU STL armeabi-v7a बाइनरी को ठीक किया गया, ताकि गैर-NEON पर क्रैश न हो
डिवाइस. NDK r7b के साथ दी गई फ़ाइलें ठीक से कॉन्फ़िगर नहीं की गई थीं,
की वजह से, Tegra2-आधारित डिवाइसों और अन्य डिवाइसों पर क्रैश हो जाते हैं
कुछ फ़्लोटिंग-पॉइंट फ़ंक्शन (उदाहरण के लिए,
cosf
,sinf
, औरexpf
).
- GNU STL armeabi-v7a बाइनरी को ठीक किया गया, ताकि गैर-NEON पर क्रैश न हो
डिवाइस. NDK r7b के साथ दी गई फ़ाइलें ठीक से कॉन्फ़िगर नहीं की गई थीं,
की वजह से, Tegra2-आधारित डिवाइसों और अन्य डिवाइसों पर क्रैश हो जाते हैं
कुछ फ़्लोटिंग-पॉइंट फ़ंक्शन (उदाहरण के लिए,
- ज़रूरी बदलाव:
-
NDK_OUT
के ज़रिए, कस्टम आउटपुट डायरेक्ट्री के लिए सहायता जोड़ी गई एनवायरमेंट वैरिएबल. तय किए जाने पर, इस वैरिएबल का इस्तेमाल सभी को स्टोर करने के लिए किया जाता है$PROJECT_PATH/obj
के बजाय, जनरेट की गई इंटरमीडिएट फ़ाइलें वैरिएबल यह हैndk-gdb
ने भी पहचाना.- सैकड़ों या हज़ारों सोर्स के साथ मॉड्यूल बनाने की अतिरिक्त सुविधा
फ़ाइलों को अपने
Android.mk
मेंLOCAL_SHORT_COMMANDS
सेtrue
पर परिभाषित करके.इस बदलाव से एनडीके बिल्ड सिस्टम के लिए, लिंकर या आर्काइवर के ज़्यादातर विकल्प इस्तेमाल करने पड़ते हैं की सूची बनाई जा सकती है. ज़्यादा जानकारी के लिए,
docs/ANDROID-MK.html
पर जाएं.
- अन्य गड़बड़ियां ठीक की गईं:
-
cpufeatures
मेंandroid_getCpuCount()
को लागू करने की समस्या ठीक कर दी गई है हेल्पर लाइब्रेरी पर जाएं. कुछ डिवाइसों में, जहां कोर को सिस्टम की मदद से डाइनैमिक तौर पर चालू किया जाता है वहां पिछले लागू करने पर, पहली बार फ़ंक्शन में ऐक्टिव कोर की कुल संख्या की रिपोर्ट मिलेगी फ़िज़िकल तौर पर उपलब्ध कोर की कुल संख्या के बजाय, कोर कॉल किया गया.
Android NDK r7b (फ़रवरी 2012)
एनडीके के इस रिलीज़ में, 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++
(उदाहरण के लिए, GNUlibstdc++
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
.
- अपने मॉड्यूल में अपवाद और/या RTTI साफ़ तौर पर चालू करें या
- आपके ऐप्लिकेशन में निजी सेवाएं होने पर,
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
.
- जब आपका ऐप्लिकेशन, GNU के
Android NDK r7 (नवंबर 2011)
एनडीके के इस रिलीज़ में ऐसी नई सुविधाएं शामिल की गई हैं जो 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/.
- Kronos Group OpenMAX AL 1.0.1 के आधार पर, नेटिव मल्टीमीडिया एपीआई जोड़ा गया
मानक. नया
- कैश मेमोरी की सुविधा जोड़ी गई. बड़ी संख्या में रीबिल्ड की रफ़्तार को बढ़ाने के लिए,
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
को किसी खास डायरेक्ट्री पर ले जाने के लिए तय करते हैं.
- Android 4.0 (एपीआई लेवल 14) के लिए, आधिकारिक NDK एपीआई जोड़े गए. इससे, ये चीज़ें जोड़ी जाती हैं
प्लैटफ़ॉर्म की नेटिव सुविधाओं के बारे में जानकारी:
- प्रयोग के तौर पर शुरू की गई सुविधाएं
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
अब आप सिग्विन के बिना 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
Android NDK r6b (अगस्त 2011)
एनडीके की इस रिलीज़ में 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 स्टैंडअलोन टूलचेन के साथ किया जाता है.
Android NDK r6 (जुलाई 2011)
एनडीके के इस रिलीज़ में, 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
देखें.
- x86 एबीआई के साथ काम करता है, जिससे आपको मशीन कोड जनरेट करने की सुविधा मिलती है
जो x86 आधारित Android डिवाइसों पर काम करता है. x86 के लिए मुख्य सुविधाएं
x86-विशिष्ट टूलचेन, सिस्टम हेडर, लाइब्रेरी और
डीबग करने की सुविधा. x86 सहायता के बारे में पूरी जानकारी पाने के लिए,
NDK पैकेज में
- अन्य बदलाव:
arm-eabi-4.4.0
को NDK r5 के बाद से बंद कर दिया गया है एनडीके डिस्ट्रिब्यूशन से हटाया गया.
Android NDK r5c (जून 2011)
एनडीके की इस रिलीज़ में, 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
फ़ाइलें ठीक थीं).
- ऑब्जेक्ट फ़ाइलें अब हमेशा उसी क्रम में लिंक की जाती हैं जिस क्रम में वे दिखती हैं
Android NDK r5b (जनवरी 2011)
एनडीके की इस रिलीज़ में, 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
के साथ कंपाइलेशन.
Android NDK r5 (दिसंबर 2010)
एनडीके के इस रिलीज़ में कई नए एपीआई शामिल हैं. इनमें से ज़्यादातर को
ऐसे गेम और मिलते-जुलते ऐप्लिकेशन को डेवलप करने में मदद करते हों जिनका बहुत ज़्यादा इस्तेमाल किया जाता है
नेटिव कोड की. 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 देखें ज़्यादा बदलावों की पूरी सूची.
Android NDK r4b (जून 2010)
- 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
ऑब्जेक्ट के बफ़र.
Android NDK r3 (मार्च 2010)
- सामान्य जानकारी:
-
- OpenGL ES 2.0 नेटिव लाइब्रेरी के साथ काम करता है.
- एक नमूना ऐप्लिकेशन,
hello-gl2
जोड़ता है, जो OpenGL ES 2.0 वर्टेक्स और फ़्रैगमेंट शेडर. - इस रिलीज़ के लिए GCC 4.4.0 के साथ टूलचेन बाइनरी को रीफ़्रेश किया गया है, जो पिछले कोड की तुलना में, थोड़ा छोटा और बेहतर मशीन कोड जनरेट करना चाहिए (4.2.1). NDK, अब भी 4.2.1 बाइनरी उपलब्ध कराता है, जिसका इस्तेमाल किया जा सकता है अपना मशीन कोड बनाने के लिए.
Android NDK r2 (सितंबर 2009)
इसे पहले "Android 1.6 NDK, रिलीज़ 1" के नाम से रिलीज़ किया गया था.
- सामान्य जानकारी:
-
- OpenGL ES 1.1 नेटिव लाइब्रेरी के साथ काम करने की सुविधा देता है.
san-angeles
सैंपल ऐप्लिकेशन जोड़ता है, जो 3D ग्राफ़िक रेंडर करता है यह एपीआई,GLSurfaceView
ऑब्जेक्ट की मदद से गतिविधि के लाइफ़साइकल को मैनेज करता है.
Android NDK r1 (जून 2009)
इसे पहले "Android 1.5 NDK, Release 1" के तौर पर रिलीज़ किया गया था.
- सामान्य जानकारी:
-
- इसमें ARMv5TE के निर्देशों के लिए कंपाइलर सपोर्ट (जीसीसी) की सुविधा मिलती है. साथ ही, इसे थंबनेल-1 के साथ भी इस्तेमाल किया जा सकता है निर्देश.
- इसमें स्थिर नेटिव एपीआई, दस्तावेज़, और सैंपल के लिए सिस्टम हेडर शामिल होते हैं का इस्तेमाल करें.