توفِّر هذه الصفحة معلومات عن التغييرات في جميع الإصدارات الثابتة التي تم إصدارها من NDK. لتنزيل أحدث إصدار ثابت من NDK أو أي إصدار تجريبي متاح حاليًا، اطّلِع على صفحة عمليات تنزيل NDK.
يمكنك الاطّلاع على android-ndk-announce لمجموعة Google" لمزيد من المعلومات الكاملة، الاشتراك لتلقي إعلانات الإصدارات.
Android NDK r27 LTS (تموز/يوليو 2024)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
Android NDK r26 LTS (أيلول/سبتمبر 2023)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
- لم يعُد إصدار KitKat (واجهة برمجة التطبيقات 19 و20) متوفّرًا.
Android NDK r25 LTS (تموز/يوليو 2022)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
- وتتضمّن واجهات برمجة التطبيقات لنظام التشغيل Android 13.
- تم تعديل LLVM إلى clang-r450784d، استنادًا إلى تطوير LLVM 14.
Android NDK r24 (آذار/مارس 2022)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
-
تمت إزالة مُجمع GNU (GAS). إذا كنت تنشئ باستخدام
-fno-integrated-as
عليك إزالة تلك العلامة. عرض ملاحظات حول نقل البيانات من Clang للحصول على نصائح حول جعل التجميع متوافقًا باستخدام LLVM. - تمت إزالة GDB. يمكنك استخدام LLDB بدلاً منه. تجدر الإشارة إلى أنّ ndk-gdb يستخدم LLDB من خلال وكان تطبيق LLDB متاح فقط في أي وقت مضى.
- لم يعُد Jelly Bean (واجهات برمجة التطبيقات 16 و17 و18) متاحًا. الحد الأدنى نظام التشغيل الذي يتوافق مع NDK هو KitKat (المستوى 19 من واجهة برمجة التطبيقات).
- ولن تتوفّر الأجهزة التي لا تعمل بالنيون بعد الآن. هناك عدد قليل جدًا من الأجهزة القديمة لا تتوافق مع النيون، لذا لن تلاحظ معظم التطبيقات جانبًا من تحسين الأداء.
- تمت إزالة إمكانية استخدام إصدار RenderScript. RenderScript كان متوقفة نهائيًا في Android 12. في حال عدم الانتهاء من نقل البيانات يمكن استخدام تطبيقاتك بعيدًا عن RenderScript، إذ يمكن استخدام NDK r23 LTS.
-
تمت إزالة مُجمع GNU (GAS). إذا كنت تنشئ باستخدام
Android NDK r23 LTS (آب/أغسطس 2021)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
-
تمت إزالة binutils GNU، باستثناء مجمع GNU (GAS). خدمات Google للسيارات (GAS)
في الإصدار التالي. إذا كنت تنشئ باستخدام
-fno-integrated-as
، يُرجى الإبلاغ عن الأخطاء إذا كان هناك أي شيء يمنعك من ذلك. ومنعك من إزالة العلامة. -
توقّف التوافق مع GDB. ستتم إزالة GDB من الإصدار التالي.
يمكنك استخدام LLDB بدلاً منه. يُرجى العِلم أنّ تطبيق
ndk-gdb
يستخدم LLDB تلقائيًا. - NDK r23 هو الإصدار الأخير الذي سيدعم غير النيون. تبدأ بـ في NDK r24، سيتم إنشاء مكتبات armeabi-v7a في نظام sysroot باستخدام نيون. هناك عدد قليل جدًا من الأجهزة القديمة لا تتوافق مع النيون، لن يلاحظها معظم التطبيقات باستثناء تحسُّن الأداء.
- لن يتم توفير Jelly Bean (واجهات برمجة التطبيقات 16 و17 و18) في خطة NDK التالية. . سيكون الحد الأدنى لنظام التشغيل الذي يدعمه NDK for r24 هو KitKat (المستوى 19 من واجهة برمجة التطبيقات)
-
تمت إزالة binutils GNU، باستثناء مجمع GNU (GAS). خدمات Google للسيارات (GAS)
في الإصدار التالي. إذا كنت تنشئ باستخدام
Android NDK r22b (آذار/مارس 2021)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
-
تم إيقاف binutils GNU نهائيًا وستتم إزالتها في خطة NDK القادمة
. لاحظ أن مجمع GNU (
as
) هو جزء من هذا. إذا كنت تنشئ باستخدام-fno-integrated-as
، يُرجى الإبلاغ عن الأخطاء إذا كان هناك أي شيء يمنعك من ذلك. ومنعك من إزالة العلامة. في حال استخدام "as
" مباشرةً، يمكنك استخدامclang
بدلاً من ذلك. - أصبحت العلامة LLD هي أداة الربط التلقائية. تم أيضًا نقل ملف ndk-build وملف CMake Toolchain إلى استخدام 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: قد
-
تم إيقاف binutils GNU نهائيًا وستتم إزالتها في خطة NDK القادمة
. لاحظ أن مجمع GNU (
Android NDK r21e LTS (كانون الثاني/يناير 2021)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
-
لم يعُد من الممكن استخدام نظام التشغيل Windows بسرعة 32 بت. ولا يؤثر ذلك في قاعدة بيانات غالبية المستخدمين. إذا كنت لا تزال بحاجة إلى إنشاء تطبيقات NDK من إصدارات 32 بت من نظام التشغيل Windows، تابع استخدام NDK r20.
لمزيد من المعلومات حول هذا التغيير في أدوات مطوّري برامج Android، اطّلِع على مشاركة مدونة حول هذا الموضوع.
-
نموذج LLD متاح الآن للاختبار.
لقد تحوّلت AOSP إلى استخدام LLD تلقائيًا وسيتبعها NDK.
(المخطط الزمني غير معروف). اختبِر النموذج اللغوي الكبير في تطبيقك من خلال اجتياز
-fuse-ld=lld
. عند الربط. لاحظ أن المشكلة 843 سيؤثر في الإنشاءات التي تستخدم LLD مع شريط binutils وobjcopy بدلاً من llvm-strip وllvm-objcopy. -
وستتم إزالة مسارات تثبيت سلسلة الأدوات القديمة خلال الفترة المقبلة
والإصدارات. وكانت هذه المسارات قديمة منذ NDK r19 وتستغرق
مساحة كبيرة في NDK. في ما يلي المسارات التي تتم إزالتها:
- أنظمة أساسية
- المصادر/cxx-stl
- نظام sysroot
- سلاسل الأدوات (باستثناء الأدوات/llvm)
make_standalone_toolchain.py
مستخدم (على الرغم من أنه كان غير ضروري منذ r19). للحصول على معلومات حول الانتقال من تنسيق سلسلة الأدوات القديم، اطّلِع على دليل صيانة أنظمة الإنشاء لإصدار NDK الذي تستخدمه. - سيحتاج "متجر Play" إلى التوافق مع إصدارات 64 بت عند تحميل APK بدءًا من أغسطس 2019. يمكنك بدء النقل الآن لتجنُّب المفاجآت عند يحين وقته. لمزيد من المعلومات، يُرجى مراجعة مشاركة المدونة هذه.
- تتوفَّر الآن حِزمة تطبيق macOS التي تم توقيعها وتوثيقها. التنزيل من موقع wiki وموقعنا الإلكتروني. لاحظ أنه نظرًا لأن الحزم فقط استخدام RPATH واجتياز خدمات الوثائق، وهي حزمة NDK التقليدية لا يمكن توثيق نظام التشغيل macOS. وستواصل حزمة SDK استخدام حزمة التطبيق التقليدية، نظرًا لأن حِزمة التطبيق تتطلب تغييرات في التنسيق قد يجعلها غير متوافقة مع Android Studio. إن NDK ليس ويتم عزلها عند تنزيلها عبر مدير حِزم SDK، يسمح بها مسؤول حماية البيانات. أداة إدارة حزمة تطوير البرامج (SDK) هي الأداة الأكثر طريقة موثوقة للحصول على NDK لنظام التشغيل macOS.
-
Android NDK r20b (حزيران/يونيو 2019)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
-
نموذج LLD متاح الآن للاختبار.
تعمل شركة AOSP حاليًا على التبديل إلى استخدام "النموذج اللغوي الكبير" (LLD) بشكل تلقائي
سيتابع NDK (المخطط الزمني غير معروف). اختبار LLD في تطبيقك من خلال اجتياز
-fuse-ld=lld
عند الربط. - سيحتاج "متجر Play" إلى التوافق مع إصدارات 64 بت عند تحميل APK بدءًا من أغسطس 2019. يمكنك بدء النقل الآن لتجنُّب المفاجآت عند يحين وقته. لمزيد من المعلومات، يُرجى مراجعة مشاركة المدونة هذه.
- تمت إضافة واجهات برمجة تطبيقات Android Q.
-
نموذج LLD متاح الآن للاختبار.
تعمل شركة AOSP حاليًا على التبديل إلى استخدام "النموذج اللغوي الكبير" (LLD) بشكل تلقائي
سيتابع NDK (المخطط الزمني غير معروف). اختبار LLD في تطبيقك من خلال اجتياز
Android NDK r19c (كانون الثاني/يناير 2019)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
-
على المطوّرين بدء اختبار تطبيقاتهم باستخدام LLD. لقد تحولت AOSP إلى استخدام
ستستخدمه شركة LLD تلقائيًا خلال
. ستتم إزالة BFD والمستوى الذهبي بعد إكمال
دورة إصدار بدون مشكلات رئيسية لم يتم حلها (تقدير r21). اختبار
LLD في تطبيقك من خلال تمرير
-fuse-ld=lld
عند الربط. ملاحظة: لا تتيح الدالة lld حاليًا استخدام الرموز المضغوطة على نظام التشغيل Windows. المشكلة 888. لا يمكن لأداة Clang أيضًا إنشاء رموز مضغوطة على Windows، ولكن هذا يمكن أن يكون مشكلة عند استخدام القطع الأثرية التي أنشأها داروين أو نظام التشغيل Linux. - سيحتاج "متجر Play" إلى التوافق مع إصدارات 64 بت عند تحميل APK بدءًا من أغسطس 2019. يمكنك بدء النقل الآن لتجنُّب المفاجآت عند يحين وقته. لمزيد من المعلومات، يُرجى مراجعة مشاركة المدونة هذه.
-
المشكلة 780:
مستقل
سلاسل الأدوات غير ضرورية الآن. وClang وbinutils وsysroot
وقطع سلسلة الأدوات الأخرى مثبتة الآن
$NDK/toolchains/llvm/prebuilt/<host-tag>
وClang سيعثر عليها تلقائيًا. وبدلاً من إنشاء صفحة مستقلة لـ API 26 ARM، بدلاً من استدعاء المحول البرمجي مباشرة من NDK:$ $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: تمت إزالة النصوص البرمجية الخاصة ببرنامج تضمين GCC التي أُعيدت توجيهها إلى Clang، لأنها لا تؤدي وظائفها بدرجة كافية ليتم إسقاطها في البدائل.
-
على المطوّرين بدء اختبار تطبيقاتهم باستخدام LLD. لقد تحولت AOSP إلى استخدام
ستستخدمه شركة LLD تلقائيًا خلال
. ستتم إزالة BFD والمستوى الذهبي بعد إكمال
دورة إصدار بدون مشكلات رئيسية لم يتم حلها (تقدير r21). اختبار
LLD في تطبيقك من خلال تمرير
Android NDK r18b (أيلول (سبتمبر) 2018)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
- تمت إزالة GCC.
-
نموذج LLD متاح الآن للاختبار.
تعمل شركة AOSP حاليًا على التبديل إلى استخدام "النموذج اللغوي الكبير" (LLD) بشكل تلقائي
سيتابع NDK (المخطط الزمني غير معروف). اختبار LLD في تطبيقك من خلال اجتياز
-fuse-ld=lld
عند الربط. - تمّت إزالة كل من gnustl وgabi++ وstlport.
- تمت إزالة دعم ICS (android-14 وandroid-15). حملة التطبيقات استخدام الملفات التنفيذية لم يعد بحاجة إلى توفير كل من PIE وPIE ملف تنفيذي.
- سيحتاج "متجر Play" إلى التوافق مع إصدارات 64 بت عند تحميل APK بدءًا من أغسطس 2019. يمكنك بدء النقل الآن لتجنُّب المفاجآت عند يحين وقته. لمزيد من المعلومات، يُرجى مراجعة مشاركة المدونة هذه.
Android NDK r17c (حزيران/يونيو 2018)
سجلّ التغييرات- عملية تنزيل
-
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
- لم تعُد خدمة GCC متاحة. ستتم إزالته في الإصدار NDK r18.
-
أصبحت libc++ الآن STL التلقائي لسلاسل الأدوات في CMake وسلاسل الأدوات المستقلة. في حال حذف
إذا اخترت يدويًا STL مختلفًا، فننصحك بشدة
نقل إلى
libc++
. تجدر الإشارة إلى أنّ ndk-build لا تزال القيمة التلقائية هي "لا". STL. لمزيد من التفاصيل، يُرجى مراجعة مشاركة المدونة هذه. - تم إيقاف gnustl وstlport نهائيًا في الإصدار NDK r18.
- تم إيقاف دعم ARMv5 (armeabi) وMIPS وMIPS64. وستؤدي محاولة إنشاء أي من واجهات التطبيق الثنائية (ABI) هذه إلى حدوث خطأ.
- ستتم إزالة دعم ICS (android-14 وandroid-15) من r18.
- سيحتاج "متجر Play" إلى التوافق مع إصدارات 64 بت عند تحميل APK بدءًا من أغسطس 2019. يمكنك بدء النقل الآن لتجنُّب المفاجآت عند يحين وقته. لمزيد من المعلومات، يُرجى مراجعة مشاركة المدونة هذه.
Android NDK r16b (كانون الأول (ديسمبر) 2017)
سجلّ التغييرات- عملية تنزيل
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
- وتمت إزالة العناوين المتوقّفة نهائيًا. أصبحت العناوين الموحّدة الآن ببساطة "العناوين". للحصول على نصائح بشأن نقل البيانات، يُرجى الاطّلاع على ملاحظات حول نقل العناوين الموحّدة
- لم تعُد خدمة GCC متاحة. لن تتم إزالتها من NDK بعد، ولكن لم تعد استقبال المنافذ الخلفية. ولا يمكن إزالته إلا بعد أن تصبح libc++ مستقرة بما يكفي لتكون افتراضيًا، حيث لا تزال بعض أجزاء gnustl غير متوافقة مع Clang. وستتم إزالته عند تتم إزالة STL الأخرى في r18.
- انتهت المرحلة التجريبية لـ "
libc++
" وأصبحت الآن STL المفضّل في إندونيسيا. بدءًا من r17،libc++
هي STL التلقائي لسلاسل الأدوات لإنشاء C وسلاسل الأدوات المستقلة. إذا حددت يدويًا STL (رقم STL) مختلف، نشجعك بشدة على الانتقال إلىlibc++
. لمزيد من التفاصيل، يُرجى مراجعة هذا مشاركة مدونة. - تم إيقاف دعم ARM5 (armeabi) وMIPS وMIPS64 نهائيًا. لن يتم إنشاؤها تلقائيًا بعد الآن باستخدام ndk-build، ولكنها لا تزال قابلة للإنشاء إذا تم تسميتها بشكل صريح، وسيتم تضمينها بواسطة "all"، و"all32" و"all64". وقد تمت إزالة الدعم لكل من هذه العناصر في الإصدار r17. كل من CMake وndk-build سيُصدر تحذيرًا في حال استهداف أي من واجهات التطبيق الثنائية (ABI) هذه.
- واجهات برمجة التطبيقات
-
تمت إضافة واجهات برمجة التطبيقات الأصلية لنظام Android 8.1. لمزيد من المعلومات عن واجهات برمجة التطبيقات هذه، يمكنك الاطّلاع على نظرة عامة على واجهات برمجة التطبيقات الأصلية.
للحصول على مزيد من المعلومات عن الميزات الجديدة والميزات التي تم تغييرها في هذا الإصدار، يُرجى الاطّلاع على changelog.
Android NDK r15c (تموز/يوليو 2017)
سجلّ التغييرات- عملية تنزيل
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
- تكون العناوين الموحّدة مفعّلة تلقائيًا. ولمعرفة كيفية استخدام هذه الرؤوس، راجع العناوين الموحدة:
- لم تعُد خدمة GCC متاحة. لم تتم إزالتها من NDK بعد، ولكنها لم تعد تتلقى منافذ للخلف. ولا يمكن إزالته إلا بعد ثبات libc++ بما يكفي ليكون الإعداد الافتراضي، حيث إن بعض أجزاء لا يزال gnustl غير متوافق مع Clang.
- لم يعُد الإصدار 2.3 (
android-9
) من نظام التشغيل Android متوافقًا. الحد الأدنى لمستوى واجهة برمجة التطبيقات المستهدف في أصبح NDK الآن بالإصدار 4.0 من نظام التشغيل Android (android-14
). إذا تم ضبطAPP_PLATFORM
أقل منandroid-14
، يتم استخدامandroid-14
بدلاً منها. - يدعم CMake in NDK الآن إنشاء رمز تجميع مكتوب بلغة YASM للتشغيل على x86 بُنى x86-64. لمزيد من المعلومات، يُرجى مراجعة رمز تجميع المبنى:
ملاحظة: ستتم إزالة الرؤوس المتوقّفة نهائيًا في ملف . في حال واجهت أيّ مشاكل في هذه العناوين، يُرجى تقديم bug.
للحصول على نصائح بشأن نقل البيانات، يُرجى الاطّلاع على ملاحظات نقل العناوين الموحّدة
- واجهات برمجة التطبيقات
-
تمت إضافة واجهات برمجة التطبيقات الأصلية لنظام Android 8.0. معرفة المزيد حول واجهات برمجة التطبيقات هذه، يمكنك الاطلاع على نظرة عامة على واجهات برمجة التطبيقات الأصلية.
للحصول على مزيد من المعلومات عن الميزات الجديدة والميزات التي تم تغييرها في هذا الإصدار، يُرجى الاطّلاع على changelog.
Android NDK r14b (آذار (مارس) 2017)
سجلّ التغييرات- عملية تنزيل
- تتوفّر إمكانية تنزيل هذا الإصدار هنا.
- الإشعارات
-
- العناوين الموحّدة: يقدّم هذا الإصدار عناوين النظام الأساسي التي تتم مزامنتها.
والمحافظة على دقتها وحداثتها دائمًا من خلال نظام Android الأساسي. إصلاح الأخطاء في عناوين URL فقط
تؤثر على جميع مستويات واجهة برمجة التطبيقات. يؤدي إدخال الرؤوس الموحدة إلى إصلاح التناقضات في NDK السابقة
الإصدارات، مثل:
- العناوين في M وN كانت في الواقع عناوين لـ L.
- لم تتطابق بيانات الدوال في العناوين مع مستويات النظام الأساسي الخاصة بها بشكل صحيح. تشير إلى عدم وجود دوال أو تعذّر إعلان الدوال المتوفرة.
- كانت هناك ثوابت مفقودة أو غير صحيحة في العديد من مستويات واجهة برمجة التطبيقات القديمة كما كانت في واجهة برمجة التطبيقات الأحدث المستويات.
وهذه العناوين الموحّدة الجديدة غير مفعَّلة تلقائيًا. ولمعرفة كيفية تفعيل هذه الأدوات واستخدامها الرؤوس، راجع العناوين الموحّدة:
- إيقاف GCC: ينهي هذا الإصدار الدعم النشط لـ GCC. لا تتم إزالة GCC من NDK حتى الآن، ولكن لن يتلقى بعد الآن عمليات نقل خلفية. ونظرًا لأن بعض قفزة المرض لا تزال غير متوافق مع Clang، لن تتم إزالة GCC بالكامل إلا بعد أن تصبح libc++ مستقرة بما يكفي ليكون الإعداد الافتراضي.
- العناوين الموحّدة: يقدّم هذا الإصدار عناوين النظام الأساسي التي تتم مزامنتها.
والمحافظة على دقتها وحداثتها دائمًا من خلال نظام Android الأساسي. إصلاح الأخطاء في عناوين URL فقط
تؤثر على جميع مستويات واجهة برمجة التطبيقات. يؤدي إدخال الرؤوس الموحدة إلى إصلاح التناقضات في NDK السابقة
الإصدارات، مثل:
للحصول على مزيد من المعلومات عن الميزات الجديدة والميزات التي تم تغييرها في هذا الإصدار، يُرجى الاطّلاع على changelog.
Android NDK r13b (تشرين الأول/أكتوبر 2016)
- عملية تنزيل
- تمت أرشفة المحتوى الذي تم تنزيله لهذا الإصدار. هنا.
- الإشعارات
-
- لم تعُد خدمة GCC متاحة. لن تتم إزالته من NDK فقط حتى الآن، ولكنها لم تعد تتلقى منافذ للخلف. لا يمكن إزالته حتى بعد أن تصبح libc++ مستقرة بما يكفي لتكون الافتراضية، حيث إن بعض الأجزاء من قبالة لا تزال غير متوافقة مع كلانغ. من المحتمل أن تتم إزالته بعد هذه المرحلة.
- تمت الإضافة simpleperf، محلّل وحدة المعالجة المركزية (CPU) لـ Android.
- r13b
-
-
إصلاحات إضافية لعدم توفُّر
__cxa_bad_cast
-
إصلاحات إضافية لعدم توفُّر
- كرونة دنماركية
-
- يتم ضبط
NDK_TOOLCHAIN_VERSION
تلقائيًا الآن على Clang. - تم تحديث libc++ إلى r263688.
- لقد أعدنا الضبط على (تقريبًا) نظيف. من المفترض أن يؤدي هذا إلى إزالة عدد من الأخطاء، لكننا ما زلنا بحاجة إلى تنظيف libandroid_support قبل وأوصي به كإعداد افتراضي.
-
أصبح
make-standalone-toolchain.sh
الآن مجرد برنامج تضمين إصدار بايثون من الأداة. هناك بعض الاختلافات السلوكية. يمكنك الاطّلاع على إتمام الرسالة للاطّلاع على التفاصيل. - تمت إزالة بعض مكتبات واجهات التطبيق الثنائية (ABI) غير المتوافقة (mips64r2 mips32r6 وmips32r2 وx32). ربما لا يزال هناك بعض المشتغلين.
- مشاكل متعلقة بسياسة crtbegin_static.o التي أدّت إلى عدم تحديد نقطة الوصول عند الرابط الوقت الذي تم فيه إنشاء ملف ثابت قابل للتنفيذ لـ ARM android-21+ تم حلها: مشكلة 132
- تمت إضافة ملف سلسلة الأدوات CMake في الإصدار Build/cmake/android.toolchain.cmake.
- يتم ضبط
- المشاكل المعروفة
-
- ولا يُقصَد من هذه المجموعة أن تكون قائمة شاملة تحتوي على جميع الأخطاء المعلّقة.
- ولا تعمل سلاسل الأدوات المستقلة التي تستخدم libc++ وGCC. يبدو أن هذا خطأ في دول مجلس التعاون الخليجي. عرض الالتزام جديدة للاطّلاع على مزيد من التفاصيل.
- لم يتم الكشف بعد عن عناوين ومكتبات Bionic لـ Marshmallow وN على الرغم من استخدام android-24. هذه المنصات لا تزال هي رؤوس ومكتبات Lollipop (وليس التراجع عن r11).
- أدوات RenderScript غير متوفّرة (ليست نتيجة تراجع عن الإصدار r11): المشكلة 7.
Android NDK r12b (حزيران (يونيو) 2016)
- عملية تنزيل
- تتم أرشفة عمليات تنزيل هذا الإصدار هنا.
- الإشعارات
- يتم ضبط الأمر
ndk-build
تلقائيًا على استخدام Clang في r13. سنزيل GCC في الإصدار اللاحق. - ستتم إزالة النص البرمجي "
make-standalone-toolchain.sh
" في r13. تأكَّد من أنّmake_standalone_toolchain.py
يتناسب مع احتياجاتك. - يُرجى إبلاغ GitHub عن المشاكل.
- لقد أصلحنا
ndk-gdb.py
. (المشكلة 118) -
تم تحديث
NdkCameraMetadataTags.h
بحيث لم يعد يحتوي على قيمة غير صالحة قيمة التعداد. - يشير هذا المصطلح إلى خطأ في ndk-build يؤدي إلى ظهور تحذيرات كاذبة للمكتبات الثابتة التي تستخدم libc++ . النهج التحليلي. لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على التعليقات هنا.
- تم تعديل عناوين OpenSLES للإصدار android-24.
- كرونة دنماركية
- لقد أزلنا دعم واجهة التطبيق الثنائية (ABI) التي تستخدم الإصدار armeabi-v7a. لمزيد من المعلومات عرض شرح.
- تمت إزالة جميع sysroots لمستويات النظام الأساسي قبل بريطانيا العظمى. توقفنا عن دعمهم في الإصدار r11 لكنّها أهملت إزالتها فعليًا.
- أصبحت الآن معالجة الاستثناءات عند استخدام c++_shared على ARM32 تعمل في الغالب. ستفتح أداة إلغاء التخصيص الآن مرتبطة بكل كائن مرتبط بدلاً من libc++ نفسها. لمزيد من المعلومات عن التعامل مع الاستثناءات، يمكنك مراجعة المشاكل المعروفة:
- تم اختصار علامات التجميع التلقائية.
(المشكلة 27).
- للحصول على معلومات كاملة حول هذه التغييرات، يُرجى الاطّلاع على قائمة التغييرات هذه.
- تمت إضافة تنفيذ سلاسل الأدوات المستقلة بلغة بايثون:
build/tools/make_standalone_toolchain.py
- لم يعد مستخدمو Windows بحاجة إلى Cygwin لاستخدام هذه الميزة.
- سنزيل نكهة الباش في r13، لذا ننصحك باختبار الصيغة الجديدة الآن.
- تم تفعيل
-fno-limit-debug-info
تلقائيًا لإصدارات تصحيح أخطاء Clang. من المفترض أن يؤدي هذا التغيير إلى تحسين قابلية تصحيح الأخطاء باستخدام LLDB. - أصبحت ميزة
--build-id
مفعّلة الآن تلقائيًا.- سيُعرض الآن رقم تعريف الإصدار في تقارير الأعطال المدمجة مع المحتوى لتسهيل تنفيذ الإجراءات التالية: لتحديد إصدار التعليمة البرمجية الذي كان قيد التشغيل.
- من المفترض ألا تتسبب
NDK_USE_CYGPATH
في حدوث مشاكل مع libgcc بعد الآن. (نظام التشغيل Android المشكلة 195486) -Wl
و--warn-shared-textrel
و-Wl,--fatal-warnings
تم تمكين الخيارات افتراضيًا. إذا كنت قد شاركت في عمليات نقل النص، لن يكون بإمكان تطبيقك على نظام التشغيل Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث. لم يتم السماح مطلقًا بنقل النص لـ تطبيقات 64 بت- من المفترض أن تعمل العناوين المجمّعة مسبقًا بشكل أفضل. (المشكلة 14 المشكلة 16)
- تمت إزالة مكتبات STL التي لا يمكن الوصول إليها.
- تمت إضافة دعم Vulkan إلى android-24.
- تمت إضافة Choreographer API إلى 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
لإصلاح خطأ الربط الداخلي الذي يحدث عندما وربط برامج ثنائية ضخمة في Arm32. - تم إصلاح التنويهات الموجزة لوقت التشغيل الخاطئ لـ AArch64. كان هذا يتسبب في حساب عناوين الانتقال السريع. بشكل غير صحيح بالنسبة إلى كائنات DSO الكبيرة للغاية.
- تم تقديم الخيار التلقائي
--no-apply-dynamic
للتغلب على خطأ الرابط الديناميكي في إصدارات Android السابقة. - لا يعمل NDK r11 KI لـ
dynamic_cast
مع Clang. لقد أصلحنا x86،stlport_static
، والتحسين. - قاعدة البيانات الدولية
- تم التحديث إلى الإصدار 7.11 من GDB. لمزيد من المعلومات، يُرجى الاطّلاع على أخبار GDB.
- بعض إصلاحات الأخطاء في
ndk-gdb.py
. - المشاكل المعروفة
- لا يزال x86 ASAN لا يعمل. لمزيد من المعلومات، راجع المناقشة حول قائمة التغيير هذه.
- لا يزال إلغاء الاستثناء باستخدام
c++_shared
غير متوافق مع معالجات ARM. في Android 2.3 (المستوى 9 لواجهة برمجة التطبيقات) أو Android 4.0 (المستوى 14 من واجهة برمجة التطبيقات). - عناوين ومكتبات Bionic لنظام التشغيل 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
تلقائيًا على استخدام كلانغ في إصدار قادم. ستتم إزالة GCC في إصدار لاحق. - ستتم إزالة النص البرمجي "
make-standalone-toolchain.sh
". في إصدار قادم. إذا كنت تستخدم هذا النص البرمجي، يُرجى التخطيط للانتقال إلىmake_standalone_toolchain.py
في أقرب وقت ممكن. - كرونة دنماركية
- تمت إزالة التوافق مع واجهة التطبيق الثنائية (ABI) armeabi-v7a-hard. يمكنك الاطّلاع على الشرح في ذات الصلة.
- تمت إزالة جميع sysroots لمستويات النظام الأساسي التي تسبق Android 2.3 (المستوى 9 من واجهة برمجة التطبيقات). لقد تركنا دعمهم في الإصدار NDK r11، ولكننا أهملنا إزالتهما فعليًا.
- تم تحديث معالجة الاستثناءات عند استخدام c++_shared على ARM32 لكي يصبح (يُرجى الاطّلاع على المشاكل المعروفة). استرخاء مرتبط الآن بكل كائن مرتبط بدلاً من libc++ نفسها.
- تم اختزال علامات برنامج التجميع التلقائية (مشكلة NDK رقم 27). يمكنك الاطّلاع على تفاصيل هذا التحديث في تغيير 207721.
- تمت إضافة عملية تنفيذ لسلاسل أدوات مستقلة بلغة Python في اللغة
build/tools/make_standalone_toolchain.py
. على نظام التشغيل Windows، لم تعد إلى Cygwin لاستخدام هذه الميزة. يُرجى العِلم أنّه ستتم إزالة نكهة الباش. في إصدار قادم، لذا يرجى اختبار الإصدار الجديد الآن. - تم ضبط إصدارات تصحيح أخطاء Clang لتتوافق مع
-fno-limit-debug-info
هذا الخيار مُفعَّلاً تلقائيًا. يتيح هذا التغيير تصحيح الأخطاء بشكل أفضل باستخدام LLDB. - تم تفعيل
--build-id
كخيار تلقائي. هذا الخيار في عرض معرّف في تقارير الأعطال المدمجة مع المحتوى، ما يتيح لك لتحديد إصدار التعليمة البرمجية الذي كان قيد التشغيل. - تم إصلاح مشكلة "
NDK_USE_CYGPATH
" لكي لا تكون مسببة مشاكل في libgcc (المشكلة 195486). - تم تفعيل الخيارات التالية كخيار تلقائي:
"
-Wl,--warn-shared-textrel
" و-Wl,--fatal-warnings
" إذا شاركت عمليات نقل النص، لن يتم تحميل تطبيقك على Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأحدث لاحظ أن هذا الإعداد لم يتم المسموح بها لتطبيقات 64 بت. - تم إصلاح بعض المشاكل لتعمل العناوين المجمّعة مسبقًا بشكل أفضل. (المشكلة 14 من NDK، المشكلة 16 من NDK).
- تمت إزالة مكتبات STL التي لا يمكن الوصول إليها.
- تمت إضافة دعم Vulkan إلى android-24.
- تمت إضافة Choreographer API إلى android-24.
- تمت إضافة واجهات برمجة تطبيقات libcamera2 للأجهزة التي تدعم
مستوى الميزة
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
أو أعلى. لمزيد من المعلومات، يُرجى الاطّلاع على مرجعCameraCharacteristics
. - كلانغ
- تم تحديث Clang إلى 3.8svn (r256229، الإصدار 2812033). يعمل
clang.exe
الملفات التنفيذية لـclang++.exe
في حزمة Windows بإصدار 32 بت هي في الواقع نظام 64 بت. تشير رسالة الأشكال البيانية تتم تسمية برنامج 32 بت القابل للتنفيذ باسمclang_32.exe
. - تم إصلاح
__thread
بحيث يعمل في الوقت الفعلي. - دول مجلس التعاون الخليجي
- تمت مزامنة برنامج التجميع مع نظام التشغيل ChromeOS GCC @ google/gcc-4_9 r227810.
- لاصقة معقّم بغطاء خلفي من ToT (r231296).
- تم إصلاح
libatomic
لعدم استخدام ifuncs (المشكلة NDK 31). - بينتيلس
- تم كتم صوت "تم العثور على جهاز Erratum 843419 وإصلاحه" المعلومات.
- تم تقديم الخيار
--long-plt
لإصلاح خطأ في الرابط الداخلي. عند ربط ثنائيات Arm32 ضخمة. - تم إصلاح كعبات وقت التشغيل الخاطئة في
AArch64
. كانت هذه المشكلة يتسبب في حساب عناوين الانتقال بشكل غير صحيح للأحجام الكبيرة جدًا الكائنات المشتركة الديناميكية (DSOs). - تم تقديم الخيار التلقائي
--no-apply-dynamic
لحلّه. هو خلل في الرابط الديناميكي لإصدارات Android السابقة. - تم إصلاح مشكلة معروفة في الإصدار NDK r11 حيث لم يكن
dynamic_cast
والعمل باستخدام Clang وx86 وstlport_static والتحسين. - قاعدة البيانات الدولية
- تم التحديث إلى الإصدار 7.11 من GDB. لمزيد من المعلومات حول هذا الإصدار، يُرجى الاطّلاع على أخبار GDB
- تم إصلاح عدد من الأخطاء في نص
ndk-gdb.py
البرمجي. - المشاكل المعروفة
- عنوان x86 لا يعمل المطهّر (ASAN) حاليًا. لمزيد من المعلومات، يُرجى مراجعة المشكلة 186276.
- لا يتوافق إلغاء الاستثناء مع
c++_shared
مع معالجات ARM على Android 2.3 (المستوى 9 من واجهة برمجة التطبيقات) أو Android 4.0 (المستوى 14 من واجهة برمجة التطبيقات). - رؤوس ومكتبات Bionic لنظام التشغيل Android 6.0 (المستوى 23 لواجهة برمجة التطبيقات) والإصدارات الأحدث لم يتم الكشف عنها بعد على الرغم من توفُّر android-24. لا تزال هذه المنصات تحتوي على عناوين ومكتبات Android 5.0 (مستوى واجهة برمجة التطبيقات 21)، وهي متسقة باستخدام NDK r11.
- أدوات RenderScript غير متوفرة، وهذا يتوافق مع الإصدار 11 من NDK. (المشكلة 7 من NDK)
- في ملف العنوان
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) - تم إصلاح استخدام cygpath للمحول البرمجي لـ libgcc. (المشكلة 195486 في Android)
Android NDK r11b (آذار (مارس) 2016)
- كرونة دنماركية
-
- إعلانات مهمة
- لقد نقلنا أداة تعقب الأخطاء إلى GitHub.
- التغييرات
- تم إصلاح
ndk-gdb.py
. كان لـ تراجعها كليًا في الإصدار r11. ndk-gdb
لنظام التشغيل Mac إصلاح المشكلة.- تمت إضافة المزيد من اختصارات المستوى الأعلى لأدوات سطر الأوامر:
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، أبلِغ عن الأخطاء يمكنك الانتقال إلى هذه الصفحة للاطّلاع على المشاكل. الخاصة بكلانغ في NDK. بالنسبة إلى مشاكل Clang الأكثر شيوعًا، الإبلاغ عن الأخطاء باتباع الإرشادات على هذه الصفحة.
- تم تحديث Clang إلى 3.8svn (r243773، الإصدار 2481030).
- هذه النسخة هي إصدار سابق تمامًا من Clang.
- تحتوي حزمة NDK القابلة للتنزيل في Windows 64 بت على 32 بت من Clang.
- ننصحك بشدة بالتبديل إلى Clang.
- الإضافات
- الآن تتيح منصة Clang استخدام بروتوكول أمان طبقة النقل (TLS) الذي تتم محاكاته.
- يدعم برنامج التجميع الآن
__thread
من خلال محاكاة ELF TLS مع البيانات الخاصة بسلسلة محادثات pthread - يمكن استخدام C+11
thread_local
في بعض الحالات، ولكن لا للبيانات التي تحتوي على عوامل تسبّب غير تافهة، لأن هذه الحالات تتطلب الدعم من libc. لا يؤدي هذا القيد تسري عند استخدام نظام التشغيل Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) أو إصدار أحدث. - ولا تعمل ميزة محاكاة بروتوكول أمان طبقة النقل (TLS) بعد مع Aarch64 عندما يمكن الوصول إلى متغيرات بروتوكول أمان طبقة النقل (TLS) من مكتبة مشتركة.
- يدعم برنامج التجميع الآن
- الآن تتيح منصة Clang استخدام بروتوكول أمان طبقة النقل (TLS) الذي تتم محاكاته.
- إعلانات مهمة
- دول مجلس التعاون الخليجي
-
- إعلانات مهمة
- تم إيقاف العمل بدول مجلس التعاون الخليجي في جمهورية إندونيسيا الديمقراطية لصالح Clang.
- لن تتم ترقية NDK إلى الإصدار 5.x، ولن يتم قبولها العمليات الخلفية غير المهمة.
- الصيانة لأخطاء التجميع غير الصحيح وأخطاء برنامج التحويل البرمجي الداخلي في 4.9 على أساس كل حالة على حدة.
- عمليات الإزالة
- تمت إزالة الإصدار 4.8 من GCC. تستخدم جميع الاستهدافات الآن الإصدار 4.9 من GCC.
- التغييرات الأخرى
- تمت مزامنة google/gcc-4_9 مع r224707. في السابق، كانت بالتزامن مع r214835.
- كرونة دنماركية
-
- إعلانات مهمة
- لم تعد العينات مدرجة في حزمة NDK. وهي متاحة بدلاً من ذلك على GitHub.
- لم تعد الوثائق مضمنة في حزمة NDK. بل يعمل بنظام التشغيل Android الموقع الإلكتروني الخاص بالمطوّر.
- الإضافات
- تمت إضافة واجهة برمجة تطبيقات tracing API إلى
android-23
. - تمت إضافة واجهة برمجة تطبيقات محلية متعددة الشبكات إلى
android-23
. - تم تفعيل libc وm وdl لتوفير رموز ذات نُسخ مختلفة، بدءًا من من المستوى 21 لواجهة برمجة التطبيقات.
- تمت إضافة عناوين Vulkan والمكتبة إلى المستوى N لواجهة برمجة التطبيقات.
- تمت إضافة واجهة برمجة تطبيقات tracing API إلى
- عمليات الإزالة
- تمت إزالة الدعم لـ
_WCHAR_IS_8BIT
. - تمت إزالة sed.
- تمت إزالة mclinker.
- تمت إزالة Perl.
- تمت إزالتها من جميع إصدارات NDK libc وm وdl جميع الرموز التي لا تدعمها إصدارات النظام الأساسي من هذه المكتبات.
- تمت إزالة الدعم لـ mips64r2 جزئيًا. ستتم إزالة باقي الشرائح في المستقبل.
- تمت إزالة الدعم لـ
- التغييرات الأخرى
- تم تغيير سلاسل الأدوات المستقلة من ARM إلى التشغيل التلقائي Arm7.
- ويمكنك استعادة السلوك القديم من خلال تمرير
الخيار "
-target
" على أنّهarmv5te-linux-androideabi
.
- ويمكنك استعادة السلوك القديم من خلال تمرير
الخيار "
- تم تغيير نظام التصميم لاستخدام "
-isystem
" للنظام الأساسي. على الموقع.- التحذيرات التي تؤدي إلى تعطّل إصدارات التطبيقات الحيوية بعد الآن.
- تم إصلاح خطأ segError الذي حدث عند طرح استثناءات ثنائية عبر gabi++ (المشكلة 179410)
- تم تغيير مساحة الاسم المضمّنة في libc++ إلى
std::__ndk1
لمنع مشكلات ODR مع النظام الأساسي libc++. - تم إنشاء جميع مكتبات libc++ الآن باستخدام libc++abi.
- تم ربط
APP_PLATFORM
التلقائي إلى Gingerbread.- من المتوقع أن تنخفض الدعم لجهاز Froyo والأجهزة الأقدم في الإصدار المستقبلي.
- تم تغيير سلاسل الأدوات المستقلة من ARM إلى التشغيل التلقائي Arm7.
- تم تعديل بنية gabi++
_Unwind_Exception
لمدّة 64 بت. - تمت إضافة الإمكانات التالية إلى cpufeatures:
- اكتشف SSE4.1 وSSE4.2.
- اكتشاف ميزات وحدة المعالجة المركزية (CPU) على x86_64
- تحديث libc++abi إلى العنوان الرئيسي r231075.
- تاريخ التعديل:
byteswap.h
وendian.h
وsys/procfs.h
sys/ucontext.h
وsys/user.h
وuchar.h
من ToT Bionic. - تمت مزامنة
sys/cdefs.h
على جميع مستويات واجهة برمجة التطبيقات. - تم إصلاح
fegetenv and fesetenv
لمجموعة التجربة. - إصلاح حجم/محاذاة مؤشر النهاية
crtend_*
للعدد mips64 وx86_64.
- إعلانات مهمة
- بينتيلس
-
- الإضافات
- تمت إضافة خيار جديد:
--pic-veneer
.
- تمت إضافة خيار جديد:
- عمليات الإزالة
- لم تعد حزمة Windows 32 بت تحتوي على ld.gold. وبدلاً من ذلك يمكنك الحصول على ld.gold من حزمة Windows 64 بت.
- التغييرات
- مصدر binutils الموحّد بين Android وChromeOS. لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على التعليقات هنا
- تم تحسين موثوقية الذهب لـ aarch64. استخدام
-fuse-ld=gold
في وقت الرابط لاستخدام الذهب بدلاً من Bfd. ومن المرجّح أن يتم تبديل الإعدادات التلقائية في الإصدار التالي. - تحسين وقت الربط للثنائيات الضخمة للواجهة الخلفية لـ Gold ARM (تقليل وقت الربط بما يصل إلى% 50 في متصفّح Chrome القابل للتصحيح)
- الإضافات
- قاعدة البيانات الدولية
-
- عمليات الإزالة
- تمت إزالة ndk-gdb لصالح ndk-gdb.py.
- التغييرات
- تم تحديث gdb إلى الإصدار 7.10.
- تم تحسين الأداء.
- تم تحسين رسائل الخطأ.
- تم إصلاح مسارات المشروع النسبية.
- تم إيقاف Ctrl-C من إنهاء خادم gdbserver الذي يعمل في الخلفية.
- دعم محسّن لنظام التشغيل Windows
- عمليات الإزالة
- لغة YASM
-
- التغييرات
- تم تحديث YASM إلى الإصدار 1.3.0.
- التغييرات
- المشاكل المعروفة
-
- لا يعمل x86 ASAN حاليًا. لمزيد من المعلومات، يُرجى الاطّلاع على مناقشة هنا
- الجمع بين Clang وx86 وstlport_static والتحسين
مستويات أعلى من
-O0
تؤدي إلى تعذُّر الاختبار معdynamic_cast
لمزيد من المعلومات، يمكنك الاطّلاع على التعليقات هنا. - غالبًا ما تتعذّر معالجة الاستثناءات مع c++_shared على ARM32. الجذر السبب هو عدم التوافق بين أداة فك الترميز اللغوي الكبير (LLVM) التي تستخدمها libc++abi. لـ ARM32 وlibgcc. هذا السلوك ليس انحدارًا من r10e.
Android NDK r10e (أيار (مايو) 2015)
- عملية تنزيل
- تتم أرشفة عمليات تنزيل هذا الإصدار هنا.
- تغييرات مهمة:
-
- تم دمج الحلّ البديل لجهاز Cortex-A53 Erratum 843419 في
رابط "
aarch64-linux-android-4.9
" لمزيد من المعلومات حول هذا الحل، يمكنك الاطلاع على حل مشكلة cortex-a53 الخطأ 843419 - تمت إضافة Clang 3.6؛ يختار
NDK_TOOLCHAIN_VERSION=clang
هذا الإصدار الآن. من Clang افتراضيًا. - تمت إزالة Clang 3.4.
- تمت إزالة الإصدار 4.6 من GCC.
- تم تنفيذ دعم سلاسل المحادثات المتعددة في
ld.gold
لجميع البُنى. مُمْكِنْ والآن تتيح الربط مع التوافق مع سلاسل المحادثات المتعددة أو بدونها، فإن الوضع الافتراضي هو القيام به بدونه.- لإجراء التجميع باستخدام سلاسل المحادثات المتعددة، استخدِم الخيار
--threads
. - للتجميع بدون سلاسل محادثات متعددة، استخدِم الخيار
--no-threads
.
- لإجراء التجميع باستخدام سلاسل المحادثات المتعددة، استخدِم الخيار
- تمت ترقية GDB/gdbserver إلى 7.7 لجميع البُنى.
- تمت إزالة حزمة NDK الخاصة بـ Darwin 32 بت.
- تم دمج الحلّ البديل لجهاز Cortex-A53 Erratum 843419 في
رابط "
- إصلاح الأخطاء المهمة:
-
- تم إصلاح عطل كان يحدث عندما كانت هناك حلقات OpenMP خارج سلسلة التعليمات الرئيسية.
- تم إصلاح خطأ برنامج التحويل البرمجي الداخلي (ICE) لـ GCC 4.9 الذي حدث عندما أعلن المستخدم
#pragma GCC optimize ("O0")
، لكن تم تحديد مستوى مختلف من التحسين في سطر الأوامر. وتكون الأولوية للسمةpragma
. - تم إصلاح الخطأ الذي كان يؤدي إلى حدوث عطل مع ظهور رسالة الخطأ التالية:
in add_stores, at var-tracking.c:6000
- تم تنفيذ حل بديل لمشكلة Clang 3.5 التي تم فيها توجيه تلقائي لـ LLVM.
ينشئ
llvm.cttz.v2i64()
، وهو تعليمات بدون نظير في ARM مجموعة التعليمات.
- إصلاحات أخرى للأخطاء:
-
- تم إجراء إصلاحات العناوين والمكتبة التالية:
- تم إصلاح
PROPERTY_*
فيmedia/NdkMediaDrm.h
. - تم إصلاح
sys/ucontext.h
لـmips64
. - تم إيقاف فحص إصدار Clang لـ
__builtin_isnan
__builtin_isinf
- تاريخ الإضافة:
android-21/arch-mips/usr/include/asm/reg.h
وandroid-21/arch-mips64/usr/include/asm/reg.h
. - تم إصلاح تحذير زائف لحدود الصفائف يفيد بأنّ الإصدار 4.9 من GCC لمعالج x86، وأعاد تفعيل حدود الصفيفة تحذّر من أنّ الإصدار 4.9 من GCC قد أنتجه أداة ARM. التحذير بشأن ARM يضم قد تم إيقافه مسبقًا دون شروط.
- تم إصلاح Clang 3.5 لـ
mips
وmips64
لإنشاء ملف قابل للكتابة.gcc_except_table
، وبالتالي يطابق سلوك GCC. يسمح لك هذا التغيير لتجنب التحذير التالي المرتبط بالربط:.../ld: warning: creating a DT_TEXTREL in a shared object
- تمت إعادة إصلاح مشاكل
compiler-rt
التي كانت تتسبب في حدوث أعطال عند Clang. التي تم تجميعها لـmips64
. لمزيد من المعلومات، يُرجى الاطّلاع على مشكلة "النموذج اللغوي الكبير" (LLVM). 20098. - تم إصلاح أعطال Clang 3.5 التي حدثت في تعليقات بخلاف ASCII. (المشكلة 81440)
- تم إصلاح
stlport collate::compare
لعرض-1
و1
. في السابق، عرض أرقامًا موقعة عشوائية. - تم إصلاح
ndk-gdb
لواجهات التطبيق الثنائية (ABI) 64 بت. (المشكلة 118300) - تم إصلاح العطل الذي كانت ينتج عنه عينة HelloComputeNDK لـ RenderScript. Android 4.4 (المستوى 19 من واجهة برمجة تطبيقات Android). لمزيد من المعلومات، يُرجى مراجعة هذه الصفحة.
- تم إصلاح
libc++ __wrap_iter
لـ GCC. لمزيد من المعلومات، يُرجى الاطّلاع على مشكلة "النموذج اللغوي الكبير" (LLVM). 22355. - تم إصلاح دعم
.asm
لواجهة ABIx86_64
. - تم تنفيذ حل بديل لمشكلة
stlport
4.8 في GCC. (المشكلة 127773) - تمت إزالة فاصل الدليل اللاحق
\\
من مسار المشروع في نظام التشغيل Windows. (المشكلة 160584) - تم إصلاح خطأ
no rule to make target
الذي كان يحدث عند تجميع.c
من خلال تنفيذ أمرndk-build.cmd
منgradle
. (المشكلة 66937) - تمّت إضافة المكتبتَين
libatomic.a
وlibgomp.a
غير المتوفّرة في سلاسل الأدوات للمضيف التالية:aarch64-linux-android-4.9
mips64el-linux-android-4.9
mipsel-linux-android-4.9
x86_64-4.9
- تغييرات أخرى:
-
- تمت إضافة
ld.gold
فيaarch64
. وسيظل الرابط التلقائي هوld.bfd
. لتفعيلld.gold
بشكل صريح، أضِف-fuse-ld=gold
إلى متغيّرLOCAL_LDFLAGS
أوAPP_LDFLAGS
- إنشاء سلسلتَي أدوات MIPS وMIPS64 باستخدام "
binutils-2.25
" لتحسين الأداء دعم R6. - تم جعل
-fstandalone-debug
(معلومات تصحيح الأخطاء الكاملة) خيارًا تلقائيًا للغة Clang. - تم استبدال
-fstack-protector
بـ-fstack-protector-strong
للحصول على سلاسل الأدوات ARM وAArch64 وX86 وX86_64 لكل من GCC 4.9 وClang 3.5 Clang 3.6. - تمت إضافة مفتاح سطر الأوامر
--package
إلىndk-gdb
للسماح بالإنشاء. نظامًا لإلغاء اسم الحزمة. (المشكلة 56189) - تم إيقاف
-mno-ldc1-stc1
لنظام MIPS. قد لا يعمل هذا الخيار مع الإصدار الجديد الخياران-fpxx
و-mno-odd-spreg
، أو باستخدام واجهة التطبيق الثنائية (FPXX ABI). - تمت إضافة اتفاقية الخدمة الرئيسية (MSA) ورصد R6 بشأن بروتوكول MIPS إلى
cpu-features
.
- تمت إضافة
Android NDK r10d (كانون الأول (ديسمبر) 2014)
- تغييرات مهمة:
-
- تم جعل GCC 4.8 هو الإعداد التلقائي لجميع واجهات التطبيق الثنائية (ABI) 32 بت. إصدار GCC 4.6 الذي تم إيقافه
سيزيله الإصدار التالي. لاستعادة السلوك السابق، يمكنك إضافة
NDK_TOOLCHAIN_VERSION=4.6
مطلوب تصميمه أو إضافة--toolchain=arm-linux-androideabi-4.6
عند التنفيذmake-standalone-toolchain.sh
في سطر الأوامر. يظل الإصدار 4.9 من GCC الإعداد التلقائي لواجهات التطبيق الثنائية (ABI) 64 بت. - تم إيقاف جميع سلاسل الأدوات x86[_64] من إضافة
-mstackrealign
تلقائيًا. تشير رسالة الأشكال البيانية تفترض سلسلة أدوات NDK محاذاة مكدس بحجم 16 بايت. الأدوات والخيارات المستخدمة بشكل افتراضي فرض هذه القاعدة. يجب أن يتأكد المستخدم الذي يكتب رمز التجميع من الاحتفاظ بالحزمة والتأكد من التزام برامج التحويل البرمجي الأخرى أيضًا بهذه القاعدة. (خطأ في GCC 38496) - تمت إضافة وظيفة Address Sanitizer إلى دعم Clang 3.5 لدعم ARM وx86 ABI. لمزيد من المعلومات عن هذا التغيير، يُرجى الاطّلاع على العنوان مشروع المطهّر
- تم تقديم المتطلبات، بدءًا من المستوى 21 من واجهة برمجة التطبيقات، لاستخدام
-fPIE -pie
عند الإنشاء. في المستوى 16 من واجهة برمجة التطبيقات والمستويات الأعلى، تستخدم لعبة ndk-buildPIE
عند الإنشاء. وينطوي هذا التغيير على عدد من الآثار، والتي تمت مناقشتها في مشكلة معاينة المطوّر 888. ولا تنطبق هذه النتائج على المكتبات المشتركة.
- تم جعل GCC 4.8 هو الإعداد التلقائي لجميع واجهات التطبيق الثنائية (ABI) 32 بت. إصدار GCC 4.6 الذي تم إيقافه
سيزيله الإصدار التالي. لاستعادة السلوك السابق، يمكنك إضافة
- إصلاح الأخطاء المهمة:
-
- تم إجراء المزيد من الإصلاحات المتعلقة
A53 Errata #835769 في رابط aarch64-linux-android-4.9. وكجزء من هذا البرنامج،
ينقل خيارًا جديدًا، وهو
--fix-cortex-a53-835769
، عند تم تحديد-mfix-cortex-a53-835769
(مفعَّل تلقائيًا). لمزيد من المعلومات، يُرجى الاطّلاع على رسالة binutils وهذا رسالة binutils. - تم توثيق حلّ مشكلة تعليق libc++
sscanf/vsscanf
الذي حدث على مستوى واجهة برمجة التطبيقات. 21- وقد تم تنفيذ الإصلاح نفسه في r10c. (المشكلة 77988) - تم إصلاح عطل AutoFDO (
-fauto-profile
) الذي حدث مع GCC 4.9 عند تم تحديد-Os
. (المشكلة 77571)
- تم إجراء المزيد من الإصلاحات المتعلقة
A53 Errata #835769 في رابط aarch64-linux-android-4.9. وكجزء من هذا البرنامج،
ينقل خيارًا جديدًا، وهو
- إصلاحات أخرى للأخطاء:
-
- تم إجراء إصلاحات العناوين والمكتبة التالية:
- تمّت إضافة
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 لواجهة برمجة التطبيقات. - تم التعديل في
sys/user.h
لإعادة تسميةmxcsr_mask
باسمmxcr_mask
، ولتغيير نوع البيانات لـu_ar0
ابتداءً من - تم تغيير نوع القيمة المعروضة
sysconf()
منint
إلىlong
- تم إصلاح معالجة ndk-build لـ
thumb
فيLOCAL_ARM_MODE
: في تضيف r10d، ndk-buildLOCAL_LDFLAGS+=-mthumb
تلقائيًا، إلا إذا كانت إحدى تنطبق الشروط التالية: - لقد ضبطت
LOCAL_ARM_MODE
على قيمة مساوية لـarm
. - أنت بصدد إنشاء إصدار لتصحيح الأخطاء (باستخدام إعدادات مثل
APP_OPTIM=debug
وAndroidManifest.xml
تحتوي علىandroid:debuggable="true"
)، حيث يكون وضع ARM هو الوضع التلقائي للحفاظ على التوافق مع سلاسل الأدوات السابقة. (المشكلة 74040) - تم إصلاح
LOCAL_SRC_FILES
في ndk-build لاستخدام المسارات المطلقة في نظام التشغيل Windows. (المشكلة 74333) - تمت إزالة الرمز الخاص بـ bash من ndk-gdb. (المشكلة 73338)
- تمت إزالة الرمز الخاص بخدمة bash من
make-standalone-toolchain.sh
. (المشكلة 74145) - تمت مراجعة المستندات المتعلّقة بإصلاح مشكلة
System.loadLibrary()
متعدِّدة والتبعيات لديك. (المشكلة 41790) - تم إصلاح المشكلة التي كانت تمنع حزم 64 بت من استخراج البيانات على الإصدار 14.04 من نظام التشغيل Ubuntu OS X 10.10 (Yosemite). (المشكلة 78148)
- تم إصلاح المشكلة في
LOCAL_PCH
لتحسين التوافق مع Clang. (المشكلة 77575) - تمت إضافة توضيح "يتطلب حِزمًا قابلة للتنفيذ" تحذير من ld.gold (المشكلة 79115)
unsigned long
لتنظيم user_regs_struct*.
Android NDK r10c (أكتوبر 2014)
- تغييرات مهمة:
-
- تم إجراء التغييرات التالية على بنية التنزيل:
- تحتوي كل حزمة الآن على رؤوس 32 و64 بت والمكتبات والأدوات الخاصة منصتها الخاصة.
- لم يعُد هناك حاجة إلى تنزيل مكتبات STL التي تتضمّن معلومات تصحيح الأخطاء بشكل منفصل.
- تم تغيير كل الميزات السابقة التي كان يُطلق عليها "
Android-L
" إلى الإصدار الرسمي. التصنيف:android-21
. - تم تعديل الإصدار 4.9 من GCC من خلال إعادة التوجيه إلى فرع
google
. لمستودع دول مجلس التعاون الخليجي. تشمل الاختلافات الرئيسية عن الإصدار الرئيسي من 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
الذي تدعمه دول مجلس التعاون الخليجي. - إتاحة الدخول إلى وضع تصحيح الأخطاء ART، عند تصحيح الأخطاء على جهاز Android 5.0 باستخدام
ART كجهازها الافتراضي، من خلال تحديد الخيار
art-on
. لمزيد من المعلومات راجِعprebuilt/common/gdb/common.setup
في الدليل الذي يحتوي على NDK. - تمت إزالة التوافق مع Clang 3.3.
- تم إيقاف الإصدار 4.6 من GCC، وقد تتم إزالته من الإصدارات المستقبلية.
- تم تعديل mclinker إلى الإصدار 2.8 من خلال إتاحة ميزة "طي الرمز البرمجي نفسه" (ICF). حدد ICF باستخدام
الخيار
--icf
. - تم توسيع نطاق دعم
arm_neon.h
بالمعالجات x86 وx86_64، ما ساهم في تغطية حوالي 93% من عناصر NEON. لمزيد من المعلومات حول دعم NEON:- يُرجى الانتقال إلى دليل مبرمج NDK (
docs/Programmers_Guide/html/
) والاطّلاع على الهندسة المعمارية ووحدة المعالجة المركزية (CPU) > نيون. - يمكنك فحص نموذج
hello-neon
المعدّل فيsamples/
. - يمكنك الاطّلاع على دليل Intel حول النقل من ARM NEON إلى Intel SSE.
- يُرجى الانتقال إلى دليل مبرمج NDK (
- دعم موثّق لـ
_FORTIFY_SOURCE
باللغةheaders/libs/android-21
الذي ظهر في r10 (عندما كانandroid-21
لا يزال يسمىAndroid-L
)، ولكن لم يكن لديه وثائق.
للحصول على معلومات أكثر تفصيلاً، يمكنك الاطّلاع على إصلاحات الأخطاء المهمة أدناه.
عند النقل من المشاريع باستخدام GCC، يمكنك استخدام
-Wno-invalid-command-line-argument
و-Wno-unused-command-line-argument
وتجاهل العلامات غير المستخدمة إلى أن تتمكن من تحديد ما يجب فعله بها على المدى الطويل. - إصلاح الأخطاء المهمة:
-
- تم إصلاح خطأ برنامج التحويل البرمجي الداخلي في GCC4.9/aarch64 والذي تسبَّب في ما يلي: (المشكلة 77564):
internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
- تم إصلاح عملية إنشاء الرموز غير الصحيحة من GCC4.9/arm. (المشكلة 77567).
- تم إصلاح خطأ برنامج التحويل البرمجي الداخلي مع GCC4.9/mips الذي يتضمن تجميعًا مضمّنًا. (المشكلة 77568)
- تم إصلاح الرمز غير الصحيح الذي كان يُنشئه GCC4.9/الذراع في "
x = (cond) ? y : x
". (المشكلة 77569)- تم إصلاح GCC4.9/aarch64 وClang3.5/aarch64 للتغلب على 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
. - تم إصلاح
stdatomic.h
لتحسين التوافق مع GCC 4.6، وتوفير الدعم لرأس<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 تحتوي على ملفات عناصر نائبة.
- تمت إضافة المزيد من رموز مفاتيح التلفزيون:
- تمت استعادة دعم MXU في 4.8 و4.9 للأميال في GCC. هذا الدعم كان غير موجود في r10 وr10b لأن هاتين النسختين من دول مجلس التعاون الخليجي قد تم تجميعها باستخدام binutils-2.24، وهو ما قامت به لا تدعم MXU. وهو الآن يفعل ذلك.
- تم إصلاح
--toolchain=
فيmake-standalone-toolchain.sh
بحيث الآن تدعم بشكل صحيح استخدام لاحقة تحدد نسخة من Clang. - تم إصلاح دوال libc++/armeabi
strtod()
. - تم إجراء إصلاحات على مستندات NDK في
docs/
.
- تم إجراء إصلاحات العناوين والمكتبة التالية لـ
- تغييرات أخرى:
-
- تم تحسين "
cpu-features
" لرصد دعم ARMv8 لما يلي: مجموعات التعليمات التالية: AES وCRC32 وSHA2 وSHA1 و64 بت PMULL/PMULL2. (المشكلة 106360). - إصدار ndk-build معدَّل لاستخدام
*-gcc-ar
، والمتاح في الإصدار 4.8 من GCC والإصدار 4.9 من GCC، نغمة. يحدده Clang بدلاً من*-ar
. يؤدي هذا الإعداد إلى تحسين إمكانية الوصول إلى المستندات (LTO) والدعم. - تمت إزالة
include-fixed/linux/a.out.h
وinclude-fixed/linux/compiler.h
من عناوين برنامج التحويل البرمجي لـ GCC. (المشكلة 73728) - تم إصلاح مشكلة ذات صلة بـ
-flto
في الإصدار 4.8 من GCC على نظام التشغيل Mac OS X. رسالة الخطأ مقروءة:
.../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so Symbol not found: _environ
- تم إصلاح خطأ إملائي في
build-binary.mk.
(المشكلة 76992) - تم تحسين "
- مشاكل مهمة معروفة:
-
- قد يؤدي تحديد -Os (
-fauto-profile
) في GCC4.9 إلى حدوث تعطُّل. (المشكلة 77571)
- قد يؤدي تحديد -Os (
Android NDK r10b (أيلول (سبتمبر) 2014)
- ملاحظات مهمة:
-
- بسبب قيود الحجم 512 ميغابايت على الحزم القابلة للتنزيل، فإن العناصر التالية بنظام 32 بت ليست ضمن حزم تنزيل NDK 32 بت. وبدلاً من ذلك، تتوفّر في الإصدار 64 بت:
- عناوين Android-L
- GCC 4.9
- في الوقت الحالي، لا يدعم Renderscript سوى استخدام Renderscript 32 بت مع Android 4.4 (المستوى 19 من واجهة برمجة التطبيقات). لا يمكنك إنشاء HelloComputeNDK (نموذج Renderscript الوحيد) مع أي تركيبة أخرى من Renderscript (32 أو 64 بت) وإصدار Android.
- لتجميع برنامج ترميز أصلي، يجب استخدام حزمة NDK 64 بت، حيث توجد جميع عناوين Android-L.
- إصلاح الأخطاء المهمة:
- إصلاحات أخرى للأخطاء:
-
- تمت إزالة
stdio.h
من أدلةinclude-fixed/
لجميع إصدارات GCC. (المشكلة 73728.) - تمت إزالة ملفات العناوين المكرّرة من حِزم Windows في أدلة
platforms/android-L/arch-*/usr/include/linux/netfilter*/
. (المشكلة 73704.) - تم إصلاح المشكلة التي كانت تمنع Clang من إنشاء HelloComputeNDK.
- Atexit ثابت (المشكلة 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_dlextinfo
فيandroid/dlext.h
. - تمت إضافة تعليقات توضيحية إلى
__NDK_FPABI__
للدوال التي تتلقّى أو تعرض قيمًا عائمة أو مزدوجة النوع فيstdlib.h
وtime.h
وwchar.h
وcomplex.h
.
- تمت إزالة
- تغييرات أخرى:
-
- تم تحديث
mipsel-linux-android-4.9
وmips64el-linux-android-4.9
، وتنفيذ تنسيق جديد للدليل متعدد العناصر، وتقديم الدعم لـ gdb-7.7 - تم تحسين
cpu-features
لاكتشاف المزيد من ميزات Arm64. (قائمة التغيير 100339).
- تم تحديث
Android NDK r10 (تموز (يوليو) 2014)
- تغييرات مهمة:
-
- تمت إضافة 3 واجهات ABI جديدة، جميعها 64 بت: arm64-v8a وx86_64 وmips64. تجدر الإشارة إلى ما يلي:
- GCC 4.9 هو برنامج التجميع التلقائي لواجهات التطبيق الثنائية (ABI) 64 بت. إصدار Clang هو حاليًا الإصدار 3.4.
NDK_TOOLCHAIN_VERSION=clang
قد لا يعمل مع Arm64-v8a وmips64. - الإصدار Android-L هو المستوى الأول المتوافق مع إصدار 64 بت. يُرجى العلم أنّ واجهة برمجة التطبيقات هذه مستوى مؤقت، وهو يقتصر على معاينة L-preview فقط. سيحل رقم مستوى واجهة برمجة التطبيقات الفعلي محله في إصدار حرف 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
" جميع واجهات التطبيق الثنائية (ABI).
- يحتوي الإصدار الجديد من GNU libstdc++ في Android-L على جميع
<tr1/cmath>
قبل تحديد الدالة الرياضية الخاصة بك، ضَع علامة في المربّع_GLIBCXX_USE_C99_MATH_TR1
لمعرفة بهذا الاسم بالفعل، وذلك لتجنب "التعريف المتعدد" الأخطاء من . - تم تحديث مكتبة ميزات وحدة المعالجة المركزية (CPU) للحصول على نواة ARMv8. الحالي قد يتعذر على مكتبة cpu-features اكتشاف وجود NEON على النظام الأساسي ARMv8. قم بإعادة تجميع مع الإصدار الجديد.
- تمت إضافة دليل واجهة برمجة تطبيقات
platforms/android-L/
جديد. ويشتمل هذا البرنامج على: - عناوين Bionic المُعدَّلة التي لم تتغير من مستويات واجهة برمجة تطبيقات Android 3 (Cupcake) إلى 19 (KitKat). ستتم مزامنة هذا الإصدار الجديد، للمستوى L، مع AOSP.
- واجهات برمجة تطبيقات جديدة للوسائط ونموذج برنامج ترميز أصلي
- عنوان
Android.h
معدَّل لـ SLES/OpenSLES، ما يتيح التوافق مع تنسيق صوتي أحادي الدقة وعائم في مشغِّل الصوت - إضافات GLES 3.1 وAEP إلى
libGLESv3.so.
- تم تعديل عناوين GLES2 وGLES3 إلى أحدث إصدارات Khronos الرسمية.
- تمت إضافة برامج التجميع من GCC 4.9 إلى واجهات التطبيق الثنائية (ABI) بسرعة 32/64 بت. GCC 4.9 هو برنامج التجميع التلقائي (فقط) في واجهات التطبيق الثنائية (ABI) 64 بت، كما أسلفنا. بالنسبة إلى واجهات التطبيق الثنائية (ABI) 32 بت، عليك تفعيل GCC 4.9 بشكل صريح، ولا يزال الإصدار 4.6 من GCC هو الخيار التلقائي.
- بالنسبة إلى لعبة ndk-build، عليك تفعيل الإصدار 32 بت من إصدار GCC 4.9 عبر إضافة
NDK_TOOLCHAIN_VERSION=4.9
إلىApplication.mk
، أو تصديره متغير البيئة من سطر الأوامر. - بالنسبة إلى سلسلة أدوات مستقلة، استخدِم الخيار "
--toolchain=
" في نص برمجي واحد (make-standalone-toolchain.sh
). مثلاً:--toolchain=arm-linux-androideabi-4.9.
- تمت ترقية GDB إلى الإصدار 7.6 في GCC 4.8/4.9 وx86*. بما أنّ GDB لا يزال يستخدم الإصدار GDB-7.3.x
GCC 4.6 (الإعداد التلقائي لمعالجات ARM وMIPS)، عليك تحديد
NDK_TOOLCHAIN_VERSION=4.8
أو4.9
لتفعيل ndk-gdb لاختيار GDB 7.6. - تمت إضافة خيار الإصدار
-mssse3
لتوفير دعم SSSE3 وجعله الإعداد التلقائي لواجهة ABI x86. (الترقية من SSE3). لا تحتوي الصورة التي أصدرتها Google على تعليمات SSSE3. - تم تحديث GCC 4.8 إلى 4.8.3.
- تم تحسين دعم ARM libc++ EH عن طريق التبديل من gabi++ إلى libc++abi. لمعرفة التفاصيل، يُرجى الاطّلاع على مقالة "دعم C++ ". قسم الوثائق. تجدر الإشارة إلى ما يلي:
- تم اجتياز جميع الاختبارات باستثناء اللغة الآن مع Clang 3.4 وGCC 4.8. لمزيد من المعلومات، معلومات، راجع القسم "دعم C++" قسم الوثائق.
- لا تزال مكتبات libc++ الخاصة بـ X86 وMIPS libc++ تستخدم gabi++.
- يمكن الآن للإصدار 4.7 من GCC والإصدارات الأحدث استخدام <atomic>.
- يجب إضافة
-fno-strict-aliasing
إذا كنت تستخدم<list>
، لأن__list_imp::_end
_ من الفواصل قواعد TBAA. (المشكلة 61571.) - اعتبارًا من الإصدار 4.6 من GCC، لم يعد LIBCXX_FORCE_REBUILD:=true يعيد إنشاء libc++. إعادة البناء يتطلب استخدام برنامج تجميع مختلف. يُرجى العِلم أنّ Clang 3.3 لم يتم اختباره.
- وأصبح الأمر mclinker هو الإصدار 2.7، كما أنه يدعم نظام aarch64 في نظام التشغيل 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++ بحيث يجمع الآن
- إصلاحات أخرى للأخطاء:
-
- عناوين ثابتة:
- تم إصلاح
ssize_t
بنظام 32 بت ليصبحint
بدلاً منlong int
. - تم إصلاح
WCHAR_MIN
وWCHAR_MAX
بحيث يتم نقل العلامات المناسبة وفقًا للبنية التي تعمل عليها: - X86/MIPS: تم التوقيع.
- ARM: غير موقَّع.
- لفرض ضبط X86/MIPS على خيار "غير موقَّع" تلقائيًا، استخدِم
-D__WCHAR_UNSIGNED__
- لفرض قيمة
wchar_t
على 16 بت، استخدِم-fshort-wchar
. - تمت إزالة الرموز غير الموجودة من الإصدار
libc.so
بنظام 32 بت، وإضافةpread64
،pwrite64
،ftruncate64
عن المستوى 12 من واجهة برمجة تطبيقات Android والإصدارات الأحدث (المشكلة 69319). لمزيد من المعلومات، للحصول على معلومات، يمكنك الاطّلاع على رسالة الإتمام المصاحبة لقائمة تغييرات AOSP. 94137. - تم إصلاح تحذير GCC بشأن إعادة تعريف
putchar
. نص رسالة التحذير: - تم إصلاح
make-standalone-toolchain.sh --stl=libc++
بحيث: - تم إصلاح GCC/Windows لاقتباس الوسيطات عند الضرورة فقط لعمليات النشر في والبرامج الخارجية. ويؤدي هذا التغيير إلى تقليل احتمال تجاوز الحد الأقصى المسموح به وهو 32 ألفًا.
- تم إصلاح مشكلة جعلت من المستحيل تعديل
APP_PLATFORM
متغير البيئة. - تم إصلاح تنفيذ
IsSystemLibrary()
في crazy_linker بحيث يستخدمstrrchr()
بدلاً منstrchr()
للعثور على الاسم الأساسي الحقيقي لمسار المكتبة. - تم إصلاح عدم قدرة الصوت الأصلي على الإنشاء في وضع تصحيح الأخطاء.
- تم إصلاح عدم قدرة gdb على طباعة أرقام النقاط العائمة للغاية. (المشكلة 69203).
- تم إصلاح عدم قدرة Clang 3.4 على التجميع باستخدام
-Wl,-shared
(بدلاً من-shared
، الذي ولم تواجه أي مشاكل في التجميع). كانت المشكلة أنّ Clang أضافت تطبيق-pie
لأجهزة Android. المستهدفة في حالة عدم وجود-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 المنقول (متوفر في الإصدار 4.6 من GCC، والذي تم إنشاؤه من فرع Google في دول مجلس التعاون لدول مجلس التعاون لدول آسيا) إلى
ARM GCC 4.8/4.9. يؤدي هذا التحسين أحيانًا إلى تقليل عدد التعليمات عند الوصول إلى البيانات
المتغيرات. على سبيل المثال، يمكنك مشاهدة النص البرمجي Build.sh في
$NDK/tests/build/b14811006-GOT_PREL-optimization/
- تمت إضافة إصدار ARM لـ STL gabi++ وstlport وlibc++. وأصبح لديهم الآن أيضًا الحالي.
- من الممكن الآن استدعاء النص البرمجي make-tainalone-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
الإصدار 3.4 من Clang. الإصدار 4.6 من GCC لا يزال برنامج التجميع الافتراضي. - تمت إضافة
APP_ABI=armeabi-v7a-hard
، مع خيار إضافي متعدد العناصر-mfloat-abi=hard
. هذه الخيارات مخصصة تستخدمهما مع ARM GCC 4.6/4.8 وClang 3.3/3.4 (والتي تستخدم أداة التجميع وأداة الربط 4.8 وlibs). عند استخدام هذه الخيارات، يُرجى ملاحظة التغييرات التالية: - عند تنفيذ النص البرمجي
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
أعلاه إلى ملف makefile لتمكين GCC أو Clang من الارتباط المكتبات في/hard
. - تمت إضافة أداة تجميع yasm، بالإضافة إلى
LOCAL_ASMFLAGS
. وEXPORT_ASMFLAGS
علامة لجهاز x86 الأهداف. يستخدم النص البرمجيndk-build
prebuilts/*/bin/yasm*
لإنشاءLOCAL_SRC_FILES
الذي تحتوي على الامتداد.asm
. - تم تعديل MClinker إلى 2.6.0، ما سيضيف
-gc-sections
. والدعم. - تمت إضافة دعم libc++ التجريبي (upstream r201101). استخدام هذا الجديد
من خلال اتّباع الخطوات التالية:
- إضافة
APP_STL := c++_static
أوAPP_STL := c++_shared
فيApplication.mk
يمكنك إعادة الإنشاء من المصدر عبرLIBCXX_FORCE_REBUILD := true
. - تنفيذ
make-standalone-toolchain.sh --stl=libc++
لإنشاء سلسلة أدوات مستقلة باستخدام عناوين/libc++.
CPLUSPLUS-SUPPORT.html
(المشكلة 36496) - إضافة
- تمت إضافة دعم للمحول البرمجي Clang 3.4. تشير رسالة الأشكال البيانية
يختار الآن الخيار
- إصلاح الأخطاء المهمة:
-
- تم إصلاح رمية غير مرتقبة من منظور غير متوقع معالج استثناء GCC 4.6/4.8 ARM EABI. (مشكلة مجلس التعاون الخليجي 59392)
- تم إصلاح الإصدار 4.8 من GCC بحيث يؤدي الآن بشكل صحيح إلى حل الأجزاء تخصص من قالب مع وسيطة نموذج تابعة وغير نوع. (مشكلة مجلس التعاون الخليجي 59052)
- تمت إضافة المزيد من الوحدات إلى لغة python المصممة مسبقًا (المشكلة 59902):
- Mac OS X:
zlib
،bz2
،_curses
،_curses_panel
،_hashlib
،_ssl
- نظام التشغيل Linux:
zlib
،nis
،crypt
و_curses
و_curses_panel
- Mac OS X:
- تم إصلاح خادم gdbserver لـ x86 وMIPS
event_getmsg_helper
- تم إصلاح العديد من المشاكل في سلسلة أدوات RenderScript NDK، بما في ذلك مشكلات في التوافق عبر الأجهزة القديمة وانعكاس C++.
- إصلاحات أخرى للأخطاء:
-
- إصلاحات العناوين:
- تم إصلاح خطأ
#include <sys/types.h>
فيandroid/asset_manager.h
للمستوى 13 من واجهة برمجة تطبيقات Android والمستويات الأعلى. (المشكلة 64988) - تم إصلاح خطأ
#include
فيandroid/rect_manager.h
للمستوى 14 من واجهة برمجة تطبيقات Android والمستويات الأعلى. - تمت إضافة
JNICALL
إلىJNI_OnLoad
وJNI_OnUnload
فيjni.h
. يُرجى العِلم أنّ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
لكل البُنى الأساسية. MIPS يمكن لمطوّري البرامج الآن تضمين هذا العنوان بدلاً من كتابة#ifdef __mips__
. - تم إصلاح
platforms/android-18/include/android/input.h
عن طريق إضافة__NDK_FPABI__
إلى الدوال التي يتم أخذها أو إعادة عرضها القيم العائمة أو المزدوجة. - تم إصلاح MIPS
struct stat
، والذي تم ضبطه بشكل غير صحيح لنظيرتها 64 بت للمستوى 12 من واجهة برمجة تطبيقات Android والإصدارات الأحدث. هذا الجزء غير صحيح الإعداد كان الانحدار الذي تم تقديمه في الإصدار r9c. - تم تحديد
__PTHREAD_MUTEX_INIT_VALUE
،__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE
, و__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE
لواجهة برمجة تطبيقات Android من المستوى 9 والأقل. - تمت إضافة
scalbln
وscalblnf
و منscalblnl
إلى x86libm.so
للإصدار 18 من واجهات برمجة التطبيقات والإصدارات الأحدث - تم إصلاح خطأ إملائي في
sources/android/support/include/iconv.h
(المشكلة 63806)
- إصلاح gabi++
std::unexpected()
للاتصال بهstd::terminate()
بحيث يمكن تشغيل معالجstd::terminate()
الذي يحدّده المستخدم.- تم إصلاح gabi++ لالتقاط
std::nullptr
.- عينات ثابتة لأوعية الشاي والمزيد من الشاي:
- حل مشكلة في رقائقتي Tegra 2 و3 من خلال تغيير المنظر المختلفة لاستخدام دقة متوسطة. يمكن الآن أن تكون قيم القوة الكهربية أقل من 1.0.
- تم تغيير النماذج بحيث يؤدي الضغط على زر مستوى الصوت إلى استعادة
الوضع المجسم ويؤدي إلى إلغاء صلاحية الرسائل
SYSTEM_UI_FLAG_IMMERSIVE_STICKY
لا يمكن لتدوير الشاشة تشغيلonSystemUiVisibilityChange
، وبالتالي لا تستعيد وضع مجسم.
- تم إصلاح النص البرمجي "
ndk-build
" المطلوب إضافته-rpath-link=$SYSROOT/usr/lib
و-rpath-link=$TARGET_OUT
لاستخدامld.bfd
من أجل القابلة للتنفيذ للروابط. (المشكلة 64266)- تمت إزالة "
-Bsymbolic
" من جميع إصدارات STL.- تم إصلاح
ndk-gdb-py.cmd
من خلال ضبطSHELL
على متغيّر بيئة بدلاً من تمريره إلىpython.exe
، والذي يتجاهل الإعداد. (المشكلة 63054)- تم إصلاح النص البرمجي
make-standalone-toolchain.sh
بحيث ينسخ الخيار--stl=stlport
عناوين gabi++ بدلاً من ارتباطهما الرمزي؛ لا يفهم صدفcmd.exe
وminGW الارتباطات الرمزية التي تم إنشاؤها بواسطة سيغوين. - إصلاحات العناوين:
- تغييرات أخرى:
-
- تم تطبيق أذونات التنفيذ على كل النصوص البرمجية البالغ عددها
*cmd
. كانت مُعدَّة للاستخدام سابقًا في واجهةcmd.exe
فقط، في حال يفضل المطوّرون استخدامndk-build.cmd
في cygwin بدلاً من نصndk-build
مقترح. - تم تحسين سرعة
make-standalone-toolchain.sh
. عن طريق الانتقال بدلاً من النسخ إذا كان دليل الوجهة المحدد غير موجود.
- تم تطبيق أذونات التنفيذ على كل النصوص البرمجية البالغ عددها
Android NDK r9c (كانون الأول (ديسمبر) 2013)
هذا إصدار مخصّص لإصلاح الأخطاء فقط.
- إصلاح الأخطاء المهمة:
-
- تم إصلاح مشكلة في GCC 4.8 ARM، والتي يكون فيها مؤشر تسلسل استدعاء الدوال البرمجية تمت استعادتها في وقت مبكر جدًا. هذه المشكلة منعت مؤشر الإطار من الوصول بشكل موثوق الوصول إلى متغير في إطار المكدس. (مشكلة مجلس التعاون الخليجي 58854)
- تم إصلاح مشكلة في GCC 4.8 libstdc++، ظهر فيها خطأ في كان std::nth_element يتسبب في إنشاء رمز أنتجته قاعدة بيانات خطأ. (المشكلة 62910)
- تم إصلاح GCC 4.8 ICE في cc1/cc1plus مع
-fuse-ld=mcld
، حتى لا يحدث الخطأ التالي مرة أخرى:cc1: internal compiler error: in common_handle_option, at opts.c:1774
- تم إصلاح دعم
-mhard-float
للنطاق الدوال الحسابية__builtin
. للحصول على معلومات مستمرة حول إصلاحات-mhard-float
لدى STL، يُرجى الاطّلاع على المشكلة 61784.
- إصلاحات أخرى للأخطاء:
-
- إصلاحات العناوين:
- تم تغيير النموذج الأولي من
poll
إلىpoll(struct pollfd *, nfds_t, int);
فيpoll.h
. - تمت إضافة
utimensat
إلىlibc.so
لأجهزة Android. المستوى 12 و19 من واجهة برمجة التطبيقات هذه المكتبات مضمّنة الآن لجميع واجهات برمجة تطبيقات Android. المستويات من 12 إلى 19. - تم تقديم
futimens
فيlibc.so
، لواجهة برمجة تطبيقات Android. المستوى 19. - تمت إضافة
clock_settime()
مفقود وclock_nanosleep()
إلىtime.h
للمستوى 8 من واجهة برمجة تطبيقات Android وأعلى. - تمت إضافة
CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,
وCLOCK_BOOTTIME_ALARM
فيtime.h.
- تمت إزالة الإصدارَين القديمَين
CLOCK_REALTIME_HR
وCLOCK_MONOTONIC_HR.
- تم تغيير النموذج الأولي من
- في عينات Tea بشأن
source/android/ndk_helper
:- وقم بتغييرها بحيث تستخدم الآن abi عائمًا ثابتًا مع armeabi-v7a.
- تم تحديثها لاستخدام الوضع المجسم على المستوى 19 من واجهة برمجة تطبيقات Android أعلى.
- تم إصلاح مشكلة "
Check_ReleaseStringUTFChars
" في/system/lib/libdvm.so
الذي تسبّب في حدوث أعطال على الأجهزة التي تعمل بمعالجات x86.
- تم إصلاح إخفاق
ndk-build
الذي يحدث في السيغوين عندما يكون NDK الطرد هو المشار إليها عبر الرابط الرمزي. - تم إصلاح أخطاء
ndk-build.cmd
التي تحدث في النوافذcmd.exe
عندما يحتويLOCAL_SRC_FILES
على مسارات مطلقة. (المشكلة 69992) - تم إصلاح النص البرمجي "
ndk-stack
" للمتابعة حتى إذا تعذّر تحليله. إطار بسبب عدم القدرة على العثور على سلسلة إجراءات أو اسم ملف أو رقم سطر. في أي من هذه الحالات، ستطبع??
. - تم إصلاح حزمة
ndk-stack
لأهداف window-x64_64 بحيث إذا لم يعد يتطابق عن طريق الخطأ مع خط إطار في قسمstack:
الذي لا يحتوي علىpc
،eip
أوip
. مثل:I/DEBUG ( 1151): #00 5f09db68 401f01c4 /system/lib/libc.so
- إصلاح gabi++ بحيث:
- لا يتم استخدام mobileoc() لتخصيص سلسلة محادثات C++ المحلية الأخرى.
- تجنُّب حالات التوقف المؤقت في gabi++ في الحالات التي يكون فيها libc.debug.malloc قيمة غير صفرية في إصدارات نظام Android الأساسي userdebug/eng.
- إصلاحات العناوين:
- تغييرات أخرى:
-
- تمت إضافة "
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"
- تم توفير إمكانية إعادة إنشاء جميع STL باستخدام معلومات تصحيح الأخطاء في
حزمة اختيارية منفصلة تسمى
android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip
، باستخدام الخيار-g
هذا الخيار يساعد النص البرمجيndk-stack
في تقديم ملف تفريغ تسلسلي أفضل في STL. من المفترض ألا يؤثر هذا التغيير في الرمز البرمجي أو حجم الملف النهائي الذي تم اختصاره. - نماذج
hello-jni
محسّنة للإبلاغ عنAPP_ABI
في التحويل البرمجي. - تم استخدام أداة
ar
في الوضع التجريبي (خيار)-D
) لإنشاء مكتبات ثابتة. (المشكلة 60705)
- تمت إضافة "
Android NDK r9b (تشرين الأول/أكتوبر 2013)
- تغييرات مهمة:
-
- تم تحديث
include/android/*h
وmath.h
لجميع مستويات واجهات برمجة تطبيقات Android حتى 18، بما في ذلك إضافة المستويات 13 و15 و16 و17. لمزيد من المعلومات حول واجهات برمجة التطبيقات المضافة، يمكنك الاطّلاع على رسائل إتمام التغييرات 68012 و 68014. (المشاكل 47150، 58528 38423) - تمت إضافة دعم للمستوى 19 من واجهة برمجة تطبيقات Android، بما في ذلك ربط Renderscript.
- تمت إضافة التوافق مع
-mhard-float
في واجهة التطبيق الثنائية (armeabi-v7a) الحالية. لمزيد من المعلومات، والقيود الحالية على كلانغ، راجعtests/device/hard-float/jni/Android.mk
- تم النقل من الإصدار 4.8 إلى الإصدار 4.8.2 من مجموعة أدوات تجميع GNU، وإضافة لون تشخيصي
والدعم. لتفعيل ألوان التشخيص، اضبط
-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 وهما: Teabot وMoreTeabots. تعمل هذه النماذج على الأجهزة التي تعمل بالإصدار 4.1 من نظام التشغيل Android (المستوى 16 من واجهة برمجة التطبيقات) والإصدارات الأحدث.
- تم إيقاف دعم GCC 4.7 وClang 3.2 نهائيًا، وستتم إزالته في غضون .
- تم تحديث
- إصلاح الأخطاء المهمة:
-
- تم إصلاح مشكلة تعذُّر إنشاء الانتقال النسبي بسرعة 16 بت في ARM GCC 4.6
thumb2
. الجداول. (مشكلة في مجلس التعاون الخليجي) - إصلاح خطأ التجميع الداخلي (ICE) لـ GCC 4.8 على
g++.dg/cpp0x/lambda/lambda-defarg3.C
(تغيير 62770، مشكلة في مجلس التعاون الخليجي) - تم إصلاح مشكلة تعذُّر تشغيل الملفات التنفيذية للإصدار
*-gdb.exe
من نظام التشغيل Windows 32 بت. (المشكلة 58975) - تم إصلاح GCC 4.8 ICE عند إنشاء مكتبة نقطية. رسالة الخطأ هي كما يلي:
internal compiler error: verify_flow_info failed
(المشكلة 58916، مشكلة في مجلس التعاون الخليجي) - إصدار GDB/ARM معدّل لتخطّي بيانات
ARM.exidx
للترجيع في رمز المقدمة أضاف الأمر (set arm exidx-unwinding
) للتحكم في إرجاع تكديس التكديس المستند إلى exidx. (المشكلة 55826) - تم إصلاح مشكلة برنامج التحويل البرمجي Clang 3.3 MIPS حيث تكون السجلات HI وLO بشكل غير صحيح وإعادة استخدامه.
- تم إصلاح المشكلة في MIPS 4.7 ICE في
dbx_reg_number
. تظهر رسالة الخطأ بالشكل التالي:external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
(تصحيح GCC)
- تم إصلاح مشكلة تعذُّر إنشاء الانتقال النسبي بسرعة 16 بت في ARM GCC 4.6
- إصلاحات أخرى للأخطاء:
-
- إصلاحات العناوين
- تم إصلاح ARM
WCHAR_MIN
وWCHAR_MAX
بحيث يتم إلغاء التوقيع عليها المواصفات (تم توقيع الإصدارات X86/MIPS). تحديد_WCHAR_IS_ALWAYS_SIGNED
إلى لاستعادة السلوك القديم. (المشكلة 57749) - تم إصلاح
include/netinet/tcp.h
ليتضمن تعداد حالة واحدًا (TCP_INFO
). (المشكلة 38881) - تم إصلاح وحدة الماكرو
cdefs_elh.h
_C_LABEL_STRING
لإيقاف الإنشاء تحذيرات في سلسلة أدوات GCC 4.8 عند استخدام وضع c++11. (المشكلة 58135، المشكلة 58652) - تمت إزالة الدالتين غير الموجودتين
imaxabs
وimaxdiv
من العنوان.inttypes.h
- تم إصلاح المشكلة في
pthread_exit()
من القيم المعروضة وpthread_self()
. (المشكلة 60686) - تمت إضافة الدالة
mkdtemp()
غير المتوفّرة، والتي سبق أن تمت إضافتها فيbionic
. الرأسstdlib.h
- تم إصلاح ARM
- تم إصلاح مشكلة إنشاء
samples/gles3jni
باستخدام Clang على المستوى 11 من واجهة برمجة تطبيقات Android. - تم إصلاح MCLinker للسماح بتكرارات متعددة للخيارات التالية:
"
-gc-sections
" و--eh-frame-hdr
" - تم إصلاح MCLinker لقبول الخيار
--no-warn-mismatch
. - تم تعديل خيار
cpu-features
لعدم افتراض أنّ جميع أجهزة VFPv4 تتوافق مع IDIV. والآن يؤدي هذا الخيار إلى إضافة معرّف IDIV إلى الأجهزة المدرجة في القائمة البيضاء فقط، بما في ذلك جهاز Nexus 4. (المشكلة 57637) - إصلاح مشكلة تسجيل
android_native_app_glue.c
لأخطاء عن طريق الخطأ في الحدث وعمليات الإرسال المسبق. - تم إصلاح جميع العمليات في
gabi++
وتكون غير متوقعة أن تكون آمنة في سلاسل المحادثات. - تم إصلاح مشاكل متعددة في خيار Clang
-integrated-as
حتى يتم تجاوزه لاختبارَيssax-instructions
وfenv
. - تم إصلاح برنامج التحويل البرمجي GCC 4.6/4.7/4.8 لتمرير خيار الرابط
--eh-frame-hdr
حتى للملفات القابلة للتنفيذ الثابتة. لمزيد من المعلومات، يُرجى الاطّلاع على رمز التصحيح في GCC. - تم إصلاح الفاصلة العليا الإضافية في
CPU-ARCH-ABIS.html
. لمزيد من المعلومات، يُرجى مراجعةNDK-DEPENDS.html
(المشكلة 60142) - تم إصلاح علامات الاقتباس الإضافية في إخراج ndk-build على نظام التشغيل Windows. (المشكلة 60649)
- الإصدار 3.3 الثابت من Clang هو تجميع العمليات الذرية المضمنة في ARM، مثل
"
__atomic_fetch_add
" و__atomic_fetch_sub
" و"__atomic_fetch_or
" - تم إصلاح Clang 3.3 ICE مع
vfprintf
المخصص. (مشكلة في اللغة المجهولة)
- إصلاحات العناوين
- تغييرات أخرى:
-
- تم تفعيل OpenMP لجميع إصدارات GCC. لاستخدام هذه الميزة، أضف العلامات التالية إلى
إعدادات الإصدار:
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
. - تمت إضافة دعم Ingenic MXU في MIPS GCC4.6/4.7/4.8 مع
-mmxu
الجديد . - تم تمديد MIPS GCC4.6/4.7/4.8
-mldc1-sdc1
للتحكّم في ldxc1/sdxc1 أيضًا. - تمت إضافة الرابط المجنون. لمزيد من المعلومات، يُرجى مراجعة
sources/android/crazy_linker/README.TXT
- تم إصلاح
bitmap-plasma
للرسم إلى وضع ملء الشاشة بدلاً من 200×200 بكسل. واحدة. - تقليل أحجام سلسلة أدوات linux وdarwin بنسبة 25% عن طريق إنشاء روابط رمزية للملفات المتطابقة.
- تم تفعيل OpenMP لجميع إصدارات GCC. لاستخدام هذه الميزة، أضف العلامات التالية إلى
إعدادات الإصدار:
Android NDK r9 (تموز/يوليو 2013)
- تغييرات مهمة:
-
- تمت إضافة دعم لنظام التشغيل Android 4.3 (المستوى 18 من واجهة برمجة التطبيقات). لمزيد من المعلومات، يُرجى مراجعة
أمثلة على الترميز
STABLE-APIS.html
وأمثلة جديدة للرموز البرمجية فيsamples/gles3jni/README
- تمت إضافة عناوين ومكتبات لبرنامج OpenGL ES 3.0 المتوافق مع Android 4.3. (المستوى 18 من واجهة برمجة التطبيقات) والإصدارات الأحدث
- تمت إضافة المحول البرمجي لـ GNU Compiler Group (GCC) 4.8 إلى NDK. ولأن الإصدار 4.6 من GCC لا يزال
التلقائي، يجب تفعيل هذا الخيار بشكل صريح:
- بالنسبة إلى إصدارات
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ملاحظة: في الإصدار 4.7 من GCC والإصدارات الأحدث، تنشئ برامج التحويل البرمجي ARM رمز دخول غير متوافق عن طريق الإصدار التلقائي للأهداف التي تستخدم الإصدار ARMv6 والإصدار الأعلى. قد تحتاج إلى إضافة خيار إصدار
-mno-unaligned-access
عند إنشاء نواة غير متوافقة هذه الميزة. - بالنسبة إلى إصدارات
- تمت إضافة دعم Clang 3.3. خيار الإصدار
NDK_TOOLCHAIN_VERSION=clang
يختار الآن Clang 3.3 افتراضيًا.ملاحظة: تم إيقاف كل من GCC 4.4.3 وClang 3.1 نهائيًا، وستتم إزالتها من NDK التالي .
- تم تحديث "برنامج تصحيح الأخطاء في مشروع GNU" (GDB) للتوافق مع الإصدار 2.7.5 من python.
- تمت إضافة MCLinker لدعم مضيفي Windows. منذ
ld.gold
هو الخيار التلقائي عندما يكون متاحًا، يجب إضافة-fuse-ld=mcld
فيLOCAL_LDFLAGS
أوAPP_LDFLAGS
لتفعيل MCLinker. - تمت إضافة أداة
ndk-depends
التي تطبع تبعيات مكتبة ELF. لمزيد من المعلومات، يُرجى الاطّلاع على "NDK-DEPENDS.html
". (المشكلة 53486)
- تمت إضافة دعم لنظام التشغيل Android 4.3 (المستوى 18 من واجهة برمجة التطبيقات). لمزيد من المعلومات، يُرجى مراجعة
أمثلة على الترميز
- إصلاح الأخطاء المهمة:
-
- تم إصلاح المشكلة المحتملة للتعامل مع الأحداث في
android_native_app_glue
. (المشكلة 41755) - تم إصلاح إصدار ARM/GCC-4.7 لإنشاء محاذاة كافية لتحميل NEON وتخزينه إرشادات VST وVLD. (مشكلة مجلس التعاون الخليجي رقم 57271)
- تم إصلاح خطأ برنامج التحويل البرمجي الداخلي (ICE) (ICE) في برنامج التحويل البرمجي الداخلي (ICE) لـ GCC لمؤشر سالب ثابت على قيمة حرفية لسلسلة. (المشكلة 54623)
- تم إصلاح خطأ التجزئة في GCC 4.7 للتهيئة المستمرة باستخدام عنوان الكائن. (المشكلة 56508)
- تم إصلاح خطأ تقسيم ARM لقيم
-O
في GCC 4.6 عند استخدام Boost 1.52.0 (المشكلة 42891) - تم إصلاح
libc.so
وlibc.a
لدعم دالةwait4()
. (المشكلة 19854) - تم تعديل ملفي x86 libc.so وlibc.a لتضمين
clone()
الأخرى. - تم إصلاح خطأ
LOCAL_SHORT_COMMANDS
في الملفlinker.list
. فارغة أو غير مستخدمة. - تم إصلاح إصدار MIPS من GCC على نظام التشغيل Mac لاستخدام توجيهات CFI، بدونها
يفشل
ld.mcld --eh-frame-hdr
بشكل متكرر. - تم إصلاح خطأ التجميع الداخلي في Clang 3.2 X86/MIPS في
llvm/lib/VMCore/Value.cpp
. (تغيير 59021) - تم إصلاح عطل في مجمع برامج Windows GCC 4.7 64 بت. (الخطأ:
out of memory allocating 4294967280 bytes
). - تم تعديل نص
ndk-gdb
البرمجي ليصبح الإجراءان--start
أو--launch
. والآن تنتظر خادم تصحيح الأخطاء GNU، كي يتمكن من الوصول إلى مجموعة نقاط التوقف بشكل أكثر موثوقية في بداية مسار التنفيذ (مثل نقاط التوقف في رمز JNI). (المشكلة 41278)ملاحظة: تتطلّب هذه الميزة توفّر jdb وتنتج عنها تحذيرات بشأن نقاط الإيقاف المعلّقة. حدِّد الخيار "
--nowait
" لاستعادة السلوك السابق. - تم إصلاح عطل GDB عندما تكون قائمة المكتبة فارغة.
- تم إصلاح تعطُّل GDB عند استخدام الأمر
stepi
بعدbx pc
blx pc
تعليمات الإبهام (المشكلة 56962، المشكلة 36149) - تم إصلاح MIPS
gdbserver
للبحث عنDT_MIPS_RLD_MAP
بدلاً منDT_DEBUG
(المشكلة 56586) - تم إصلاح تبعية دائرية في النص البرمجي ndk-build، على سبيل المثال: إذا كان A->B B->B، ثم تم إسقاط B من الإصدار. (المشكلة 56690)
- تم إصلاح المشكلة المحتملة للتعامل مع الأحداث في
- إصلاحات أخرى للأخطاء:
-
- تم إصلاح النص البرمجي "
ndk-build
" ليتيح لك تحديد إصدار من Clang خيار سطر الأوامر (على سبيل المثال،NDK_TOOLCHAIN_VERSION=clang3.2
). في السابق، فقط يعمل تحديد الإصدار على أنه متغير البيئة. - تم إصلاح حجم gabi++ بقيمة
_Unwind_Exception
ليصبح 24 لأهداف إصدار MIPS عندما باستخدام برنامج التحويل البرمجي Clang. (تغيير 54141) - تم إصلاح النص البرمجي "
ndk-build
" للتأكّد من أنّ المكتبات التي تم إنشاؤها هي من المشروعات التي تتضمن مكتبات ثابتة تم إنشاؤها مسبقًا عند استخدام الأمرndk-build clean
. (تغيير 54461، تغيير 54480) - تم تعديل الخيار
NDK_ANALYZE=1
ليكون أقل طولاً. - تم إصلاح
gnu-libstdc++/Android.mk
ليتضمن مسارbackward/
للإصدارات التي تستخدم التوافق مع الأنظمة القديمة. (المشكلة 53404) - تم إصلاح المشكلة المتمثلة في عرض
stlport new
لقيم عشوائية أحيانًا. - تم إصلاح
ndk-gdb
ليتطابق مع ترتيبCPU_ABIS
، وليسAPP_ABIS
. (المشكلة 54033) - تم إصلاح مشكلة اختيار الإصدار NDK 64 بت على نظام التشغيل MacOSX المسار الخطأ برنامج التجميع. (المشكلة 53769)
- تم إصلاح النصوص البرمجية للإصدار لاكتشاف Windows Vista 64 بت. (المشكلة 54485)
- تم إصلاح خطأ
ntonl/swap32
x86:invalid 'asm': operand number out of range
. (المشكلة 54465، تغيير 57242) - تم إصلاح
ld.gold
لدمج القيم الحرفية للسلسلة. - تم إصلاح
ld.gold
للتعامل مع محاذاة الرموز الكبيرة. - تم تعديل
ld.gold
لتفعيل الخيار "--sort-section=name
". - تم إصلاح GCC 4.4.3/4.6/4.7 لإيقاف خيار
-export-dynamic
في البرامج المرتبطة بشكل ثابت. شركة GCC لم تعد تضيف قسم.interp
بشكل ثابت البرامج المرتبطة بها. - تم إصلاح خطأ تجميع
stlport
في GCC 4.4.3 بخصوصtypedef
غير المتسقة من أصل_Unwind_Control_Block
. (المشكلة 54426) - تم إصلاح
awk
نص برمجي للتعامل معAndroidManifest.xml
ملف تم إنشاؤه على. نظام التشغيل Windows الذي قد يحتوي على أحرف\r
لاحقة ويتسبب في حدوث أخطاء في الإصدار. (المشكلة 42548) - تم إصلاح
make-standalone-toolchain.sh
لفحصprebuilts/
الدليل للكشف عما إذا كان المضيف هو 32 بت أو 64 بت. - تم إصلاح خيار Clang 3.2
-integrated-as
. - تم إصلاح بيانات معالج Clang 3.2 ARM EHABI المضغوط
pr1
وpr2
. - تمت إضافة خيار Clang
-mllvm -arm-enable-ehabi
لإصلاح خطأ Clang التالي:clang: for the -arm-enable-ehabi option: may only occur zero or one times!
- تم إصلاح عطل في الإصدار عند عدم توفُّر عنصر "
uses-sdk
" في التطبيق. البيان. (المشكلة 57015)
- تم إصلاح النص البرمجي "
- تغييرات أخرى:
-
- إصلاحات العناوين
- تم تعديل العناوين لجعل
__set_errno
دالة مضمَّنة، نظرًا تم إيقاف__set_errno
فيerrno.h
نهائيًا، ولم يعُدlibc.so
. يصدّره. - تم تعديل
elf.h
ليشملstdint.h
. (المشكلة 55443) - تم إصلاح
sys/un.h
ليتم تضمينه بشكل مستقل عن العناوين الأخرى. (المشكلة 53646) - تم إصلاح كل مجموعة واجهات برمجة تطبيقات
MotionEvent_getHistorical
لنقلconst AInputEvent* motion_event
(المشكلة 55873) - تم إصلاح
malloc_usable_size
لأخذconst void*
. (المشكلة 55725) - تم تثبيت stdint.h لتصبح أكثر توافقًا مع C99. (تغيير 46821)
- تم تعديل
wchar.h
لعدم إعادة تعريفWCHAR_MAX
وWCHAR_MIN
- تم إصلاح بيان
<inttypes.h>
المرتبط بالمؤشرPRI
SCN
وحدة ماكرو (المشكلة 57218) - تم تغيير عنوان
sys/cdefs.h
ليصبح__WCHAR_TYPE__
32 بت. لمستويات واجهة برمجة التطبيقات الأقل من 9، ما يعني أنّwchat_t
تستخدم نظام 32 بت لجميع مستويات واجهة برمجة التطبيقات. لاستعادة السلوك السابق، حدِّد_WCHAR_IS_8BIT
المتغير المنطقي. (المشكلة 57267)
- تم تعديل العناوين لجعل
- تمت إضافة المزيد من التنسيقات في
docs/
NDK بالإضافة إلى إصلاحات متنوعة للمستندات. - تمت إضافة دعم لتقنية الأرشفة السطحية عند إنشاء مكتبات ثابتة. (المشكلة 40303)
- تم تعديل النص البرمجي
make-standalone-toolchain.sh
للتوافق معstlport
. بالإضافة إلىgnustl
، عند تحديد خيار--stl=stlport
لمزيد من المعلومات، يُرجى الاطّلاع على "STANDALONE-TOOLCHAIN.html
". - تم تعديل النص البرمجي "
make-standalone-toolchain.sh
" لكي ينشئ الخيار--llvm-version=
طريقة$TOOLCHAIN_PREFIX-clang
$TOOLCHAIN_PREFIX-clang++
نصوص برمجية بالإضافة إلىclang
clang++
، وذلك لتفادي استخدام تعريفات clang و clang++ الخاصة بالمضيف عن طريق الخطأ. - تمت إضافة علامتَين لإعادة تفعيل تحسينَين في لغة Clang الأولى، ولكن تم إيقافها في
NDK للتوافق بشكل أفضل مع الرمز الذي تم تجميعه من خلال GCC:
- تمت إضافة علامة
-fcxx-missing-return-semantics
لإعادة تفعيل الخيار مفقود. إرجاع الدلالات بلغة Clang 3.2 أو الإصدارات الأحدث. عادةً، يجب أن تنتهي جميع المسارات بإرجاع لدالة إرجاع القيمة. وإذا لم يكن الأمر كذلك، يمكنك الضغط على تعليمات غير محددة (أو توقف في وضع تصحيح الأخطاء) في المسار بدون الرجوع الشخصي. إذا كنت متأكدًا من صحة الرمز، فاستخدم هذه العلامة للسماح الاستفادة من السلوك غير المحدد. إذا لم تكن متأكدًا، فلا تفعل استخدام هذه العلامة. قد يستمر ظهور قيمة عشوائية غير صحيحة للمتصل، ولكن لن يستغلها محسِّن الأداء وستزيد من صعوبة تصحيح الأخطاء في الرمز البرمجي. - تمت إضافة علامة
-fglobal-ctor-const-promotion
لإعادة تفعيلها. تعزيز المتغيرات العمومية باستخدام الدالة الإنشائية الثابتة لتكون ثوابت. باستخدام هذه العلامة، فإن ممر تحسين المتغير العمومي لـ LLVM يحاول تقييم القيمة المتغيرات ذات الدوال الإنشائية الثابتة ونقلها إلى الثوابت العمومية. رغم هذا التحسين صحيح، فقد يتسبب في بعض عدم التوافق مع التعليمات البرمجية التي تم تجميعها من مجلس التعاون الخليجي. على سبيل المثال، قد يؤدي الرمز البرمجي إلى تنفيذconst_cast
لتحويل الثابت إلى قيمة قابلة للتغيير. وتعديله. في GCC، يكون المتغير قيد القراءة والكتابة ويتم تشغيل التعليمة البرمجية بواسطة حادث. في Clang، يكون المتغير الثابت في ذاكرة القراءة فقط وقد يتسبب في تعطُّل التطبيق.
- تمت إضافة علامة
- تمت إضافة
-mldc1-sdc1
إلى برامج التجميع بتنسيق MIPS GCC وClang. بشكل افتراضي، تقوم برامج التجميع محاذاة العناصر بحجم 8 بايت بشكل صحيح وإصدار تعليماتldc1
وsdc1
لتحريكها. إذا كان تطبيقك يستخدم أداة تخصيص مخصّصة لا تتم محاذاتها دائمًا من خلال وضع حدود لكائن جديد بحجم 8 بايت بالطريقة نفسها المُخصصة التلقائي، قد يتعطّل بسبب عمليتيldc1
وsdc1
على ذاكرة غير متوافقة. في هذه الدورة، الحالة، استخدم العلامة-mno-ldc1-sdc1
لحل المشكلة. - تم خفض مستوى خطورة الحدث من تحذير إلى معلومات في حال كانت
APP_PLATFORM_LEVEL
: أكبر منAPP_MIN_PLATFORM_LEVEL
. قد يكونAPP_PLATFORM_LEVEL
أقل منAPP_PLATFORM
فيjni/Application.mk
لأن NDK لا يمتلك عناوين لجميع المستويات. وفي هذه الحالة، يتغيّر المستوى الفعلي إلى أسفل. تشير رسالة الأشكال البيانية يتم تحديدAPP_MIN_PLATFORM_LEVEL
من خلالandroid:minSdkVersion
في بيان التطبيق. (المشكلة 39752) - تمت إضافة الطريقتَين
android_getCpuIdArm()
وandroid_setCpuArm()
إلىcpu-features.c
تتيح هذه الإضافة استرداد معرّفات المعالجة المركزية (CPU) ARM بشكل أسهل. المعلومات. (المشكلة 53689) - تم تعديل
ndk-build
لاستخدامas/ld
الإصدار 4.7 من GCC للتجميع بلغة Clang.ملاحظة: في GCC 4.7، تمت إعادة تسمية
monotonic_clock
وis_monotonic
إلىsteady_clock
وis_steady
على التوالي. - تمت إضافة التحذيرات الجديدة التالية إلى النص البرمجي "
ndk-build
":- إضافة تحذيرات في حال استخدام
LOCAL_LDLIBS/LDFLAGS
في المكتبة الثابتة الوحدات. - تمت إضافة تحذير في حال عدم اشتمال الإعداد على وحدة للإصدار.
- تمت إضافة تحذير بشأن المكتبات غير التابعة للنظام التي يتم استخدامها في
LOCAL_LDLIBS/LDFLAGS
من مكتبة مشتركة أو وحدات قابلة للتنفيذ.
- إضافة تحذيرات في حال استخدام
- تم تعديل النصوص البرمجية للإصدار، بحيث إذا لم يتم تحديد سمة
APP_MODULES
وكانت قيمة ثابتة فقط. يتم سرد المكتبات فيAndroid.mk
، سيفرض النص البرمجي هذه جميعها. (المشكلة 53502) - تم تعديل السمة
ndk-build
لإتاحة المسارات المطلقة فيLOCAL_SRC_FILES
. - تمت إزالة الملفات التنفيذية البالغ عددها
*-gdbtui
، وهي نُسخ مكررة من*-gdb
. القابلة للتنفيذ مع تفعيل الخيار-tui
. - تم تعديل النصوص البرمجية للإصدار لتحذيرك عند استخدام المحول البرمجي لـ Edison Design Group (EDG).
تُعيد الواجهة الأمامية تشغيل
_STLP_HAS_INCLUDE_NEXT
. (المشكلة 53646) - تمت إضافة متغير البيئة
NDK_LIBS_OUT
للسماح بتجاوز مسارlibraries/gdbserver
من$PROJECT/libs
التلقائي. لمزيد من المعلومات، يُرجى الاطّلاع على "OVERVIEW.html
". - تم تغيير الإعدادات الافتراضية للنص البرمجي ndk-build لتجميع التعليمة البرمجية مع حماية سلسلة التنسيق
-Wformat -Werror=format-security
يمكنك تعيينLOCAL_DISABLE_FORMAT_STRING_CHECKS=true
لإيقافها. لمزيد من المعلومات، يُرجى الاطّلاع علىANDROID-MK.html
. - تمت إضافة إمكانية استخدام ميزة الطباعة بخط اليد في STL باللغة
ndk-gdb-py
. لمزيد من المعلومات، يُرجى مراجعةNDK-GDB.html
- تمت إضافة اختبارات استنادًا إلى googletest أُطر عمل.
- تمت إضافة إشعار إلى النص البرمجي لإنشاء سلسلة الأدوات يحذّرك إذا كانت واجهة الأوامر الحالية
ليس
bash
.
- إصلاحات العناوين
Android NDK r8e (آذار (مارس) 2013)
- تغييرات مهمة:
-
- تمت إضافة مجموعة أدوات للمضيف 64 بت (لاحقة اسم الحزمة
*-x86_64.*
). لمزيد من المعلومات، المعلومات، يمكنك الاطّلاع علىCHANGES.HTML
وNDK-BUILD.html
. - تمت إضافة المحول البرمجي Clang 3.2. ولا يزال الإصدار 4.6 من GCC هو الخيار التلقائي. للحصول على معلومات عن استخدام
برنامج تجميع Clang، راجع
CHANGES.HTML
. - تمت إضافة أداة تحليل الرموز الثابتة لمضيفي Linux/MacOSX. للحصول على معلومات عن استخدام
المحلل، راجع
CHANGES.HTML
. - تمت إضافة MCLinker لمضيفي Linux/MacOSX كميزة تجريبية.
ld.gold
فإن linker هو الخيار الافتراضي حيثما كان متاحًا، لذا يجب تفعيله بشكل صريح. لمزيد من المعلومات، المعلومات، يمكنك الاطّلاع علىCHANGES.HTML
. - تحديث ndk-build لاستخدام الفرز الطبولوجي لتبعيات الوحدة، مما يعني
تقوم بإنشائه تلقائيًا بفرز ترتيب المكتبات المحددة في
LOCAL_STATIC_LIBRARIES
وLOCAL_WHOLE_STATIC_LIBRARIES
وLOCAL_SHARED_LIBRARIES
لمزيد من المعلومات، يُرجى الاطّلاع على "CHANGES.HTML
". (المشكلة 39378)
- تمت إضافة مجموعة أدوات للمضيف 64 بت (لاحقة اسم الحزمة
- إصلاح الأخطاء المهمة:
-
- تم إصلاح نص برمجي للإصدار لإنشاء جميع سلاسل الأدوات في
-O2
. سلاسل الأدوات في الإصدار السابق الإصدارات تم إنشاؤها بشكل غير صحيح دون تحسين. - نص برمجي ثابت للإصدار يعمل على إنشاء Clang/llvm بدون أي شروط لنظام التشغيل MacOSX في إصدار 64 بت.
- إصلاح خطأ برنامج التجميع الداخلي في GCC 4.6/4.7:
gen_thumb_movhi_clobber at config/arm/arm.md:5832
(المشكلة 52732) - تم إصلاح مشكلة الإصدار التي تعذّر فيها الإصدار 4.6 أو 4.7 من GCC/ARM في ربط الرموز البرمجية باستخدام الإصدار الذرّي 64 بت. الدوال المضمنة. (المشكلة 41297)
- تم إصلاح أخطاء عدم تطابق استخدام رابط DIV في GCC 4.7. (مشكلة في البرامج المصدر)
- تم إصلاح خطأ التجميع الداخلي في GCC 4.7
build_data_member_initialization, at cp/semantics.c:5790
. - تم إصلاح خطأ التجميع الداخلي في GCC 4.7
redirect_eh_edge_1, at tree-eh.c:2214
. (المشكلة 52909) - تم إصلاح خطأ segCPM في GCC 4.7. (مشكلة في مجلس التعاون الخليجي)
- تم إصلاح دقة الساعة
<chrono>
وتفعيلsteady_clock
. (المشكلة 39680) - تم إصلاح سلسلة أدوات لتفعيل
_GLIBCXX_HAS_GTHREADS
لـ GCC 4.7 libstdc++. (المشكلة 41770، المشكلة 41859) - تم إصلاح مشكلة تعذُّر ربط رمز X86 MXX/SSE بسبب عدم توفُّره
posix_memalign
(تغيير 51872) - تم إصلاح خطأ تقسيم GCC4.7/X86 في
i386.c
، الدالةdistance_non_agu_define_in_bb()
(تغيير 50383) - تم إصلاح GCC4.7/X86 لاستعادة سلوك
cmov
السابق. (مشكلة في مجلس التعاون الخليجي) - تم إصلاح قيمة NULL في معالجة القيمة
setlocale()
في libstdc++/GCC4.7. (المشكلة 46718) - تم إصلاح إشارة غير محددة لبيئة تشغيل
ld.gold
لـ__exidx_start
__exidx_start_end
(تغيير 52134) - تم إصلاح خطأ التجميع الداخلي في Clang 3.1 عند استخدام مكتبة Eigen. (المشكلة 41246)
- تم إصلاح خطأ في التجميع الداخلي في Clang 3.1 بما في ذلك
<chrono>
في C++11 الحالي. (المشكلة 39600) - إصلاح خطأ المحول البرمجي الداخلي في Clang 3.1 عند إنشاء رمز كائن لطريقة ما
إلى استدعاء
rvalue
موحّد تم إعداده. (المشكلة 41387) - تم إصلاح إعادة مواءمة تكديس Clang 3.1/X86. (تغيير 52154)
- تم إصلاح المشكلة في GNU Debugger (GDB) SIGILL عند تصحيح الأخطاء على Android 4.1.2. (المشكلة 40941)
- تم حل مشكلة عدم تمكّن GDB من ضبط نقاط توقف
source:line
عند استخدام الرموز يحتوي على مسارات الملفات الطويلة وغير المباشرة. (المشكلة 42448) - تم إصلاح GDB
read_program_header
للملفات التنفيذية بنظام MIPS PIE. (تغيير 49592) - تم إصلاح خطأ تقسيم
STLport
فيuncaught_exception()
. (تغيير 50236) - تم إصلاح خطأ واحد (
STLport
) في الناقل في معالجة الاستثناءات بسبب الوصول غير المتناسق فيDW_EH_PE_udata2
وDW_EH_PE_udata4
وDW_EH_PE_udata8
- تم إصلاح مشكلة التكرار اللانهائي Gabi++ مع عامل التشغيل
nothrow new[]
. (المشكلة 52833) - تم إصلاح Gabi++ الإزاحة الخاطئة إلى مؤشر معالج الاستثناء. (تغيير 53446)
- تمت إزالة Gabi++ المتكرّر المجاني على عنصر الاستثناء (تغيير 53447)
- تم إصلاح نص برمجي للإصدار لإنشاء جميع سلاسل الأدوات في
- إصلاحات أخرى للأخطاء:
-
- عناوين NDK الثابتة:
- تمت إزالة التعريفات المكرّرة لـ
size_t
وssize_t
وptrdiff_t
- تم إصلاح رأسَي MIPS وARM
fenv.h
. - تم إصلاح
stddef.h
لعدم إعادة تحديدoffsetof
بما أنه موجود سلفًا. في سلسلة الأدوات. - تم إصلاح
elf.h
لاحتواءElf32_auxv_t
وElf64_auxv_t
. (المشكلة 38441) - تم إصلاح
#ifdef
تعريفات C++ في ملف العنوانOpenSLES_AndroidConfiguration.h
(المشكلة 53163)
- تمت إزالة التعريفات المكرّرة لـ
- تم إصلاح
STLport
للإلغاء بعد حدوث خطأ نفاد الذاكرة بدلاً من الخروج بدون تنبيه. - نظام ثابت وعناوين Gabi++ للتمكن من التجميع باستخدام المستوى 8 من واجهة برمجة التطبيقات والمستويات الأدنى
- تم إصلاح
cpufeatures
لعدم تحليل/proc/self/auxv
. (المشكلة 43055) - تم إصلاح
ld.gold
بحيث لا يعتمد على المضيف libstdc++ وعلى أنظمة التشغيل Windows الأساسية، ألا تعتمد على مكتبةlibgcc_sjlj_1.dll
. - تم إصلاح إصدار Clang 3.1 الذي يُصدر قائمة تسجيلات غير متسقة في
.vsave
ويفشل في المجمّع. (تغيير 49930) - تم إصلاح Clang 3.1 ليكون قادرًا على تجميع libgabi++ واجتياز
test-stlport
اختبارات أهداف إصدار MIPS. (تغيير 51961) - تم إصلاح Clang 3.1 لتفعيل الاستثناء فقط بشكل افتراضي لـ C++، وليس لـ C.
- أصلح عدّة مشاكل في Clang 3.1 لاجتياز معظم اختبارات استثناء GNU.
- تم إصلاح النصوص البرمجية
clang
وclang++
في برنامج التحويل البرمجي NDK المستقل لرصد-cc1
وعدم تحديد-target
عند العثور عليه. - تم إصلاح
ndk-build
لمراقبةNDK_APP_OUT
تم ضبطه فيApplication.mk
. - تم إصلاح X86
libc.so
وlib.a
اللذين كانا يفتقدانsigsetjmp
وsiglongjmp
دالة سبق تعريفها فيsetjmp.h
. (المشكلة 19851) - تم تصحيح GCC 4.4.3/4.6/4.7 libstdc++ للعمل مع Clang في C++ 11. (مشكلة في اللغة المجهولة)
- تم إصلاح مسار سيغوين في الوسيطة إلى
HOST_AWK
. - تم إصلاح تحذير النص البرمجي "
ndk-build
" في النوافذ عند التشغيل من خوارزمية JNI للمشروع. الدليل. (المشكلة 40192) - تم إصلاح مشكلة عدم إنشاء النص البرمجي "
ndk-build
" إذا كان ملف makefile مسافة بيضاء لاحقة في تعريفLOCAL_PATH
. (المشكلة 42841)
- عناوين NDK الثابتة:
- تغييرات أخرى:
-
- تم تفعيل إتاحة سلاسل المحادثات في سلسلة أدوات GCC/MIPS.
- تم تحديث تطبيقات معالجة استثناءات GCC
__cxa_begin_cleanup
و__cxa_type_match
للحصول على إذن الوصول التلقائي من السابق مستوى الرؤية مخفي في GNU libstdc++. لمزيد من المعلومات، يُرجى مراجعةCHANGES.HTML
- تم تحديث النصوص البرمجية للإصدارات بحيث يتم الآن إنشاء مكتبات Gabi++ وSTLport الثابتة باستخدام الظهور المخفي باستثناء مساعدات معالجة الاستثناءات.
- تم تعديل الإصدار لكي يتم تصميم
STLport
للتوافق مع معالجات ARM في وضع "الإبهام". - تمت إضافة دعم لـ
std::set_new_handler
في Gabi++. (المشكلة 52805) - تم تفعيل استدعاء نظام
FUTEX
في GNU libstdc++. - تم تعديل
ndk-build
بحيث لم يعد ينسخ المكتبة الثابتة المُنشأة مسبقًا إليه. دليلobj/local/<abi>/
للمشروع. (المشكلة 40302) - تمت إزالة
__ARM_ARCH_5*__
من النص البرمجي ARMtoolchains/*/setup.mk
. (المشكلة 21132) - تم إنشاء مكتبات GNU libstdc++ الإضافية في وضع الإبهام لـ ARM.
- تم تفعيل النقطة العائمة
madd/msub/nmadd/nmsub/recip/rsqrt
MIPS تعليمات مع FPU 32 بت. - تم تفعيل مُحسِّن حلقة الرسم البياني في الإصدار 4.6 و4.7 من GCC للسماح بمزيد من التحسينات:
"
-fgraphite
" و"-fgraphite-identity
" و"-floop-block
" و"-floop-flatten
"-floop-interchange
،-floop-strip-mine
،-floop-parallelize-all
، و-ftree-loop-linear
. (معلومات) - تم تفعيل
polly
لكل من Clang 3.1 على نظام التشغيل Linux ومضيفي Max OS X 32 بت الذي يحلّل البيانات. وتحسّن إمكانية الوصول إلى الذاكرة. (معلومات) - تفعيل
-flto
في GCC 4.7 و4.6 وClang 3.2 وClang 3.1 على linux (Clang LTO عبر LLVMgold.so). أهداف برنامج التحويل البرمجي MIPS غير متاحة بسببld.gold
. غير متوفر. - تم تفعيل
--plugin
و--plugin-opt
لـld.gold
في الإصدار 4.6/4.7 من GCC. - تم تفعيل
--text-reorder
لنظام التشغيلld.gold
في الإصدار 4.7 من GCC. - تم إعداد GNU libstdc++ مع
_GLIBCXX_USE_C99_MATH
الذي يلغي تحديد هناك نص برمجيisinf
في عنوان الشهادة الذاتية. لمزيد من المعلومات، يُرجى مراجعةCHANGES.html
- تمت إضافة
APP_LDFLAGS
إلى النصوص البرمجية للإصدار. لمزيد من المعلومات، يُرجى مراجعةANDROID-MK.html
- تم تعديل النصوص البرمجية للإصدار للسماح لمتصفِّح
NDK_LOG=0
بإيقافNDK_LOG
. - تم تعديل النصوص البرمجية للإصدار للسماح لمتصفِّح
NDK_HOST_32BIT=0
بإيقاف مطوّر البرامج المضيف. لسلسلة أدوات 32 بت. - تم تغيير علامات GCC/X86 التلقائية
-march=
و-mtune=
منpentiumpro
وgeneric
إلىi686
وatom
. - النصوص البرمجية المحسّنة لإنشاء سلسلة الأدوات:
- تم إصلاح شرط سباق في
build-gcc.sh
لنوع الإصدارmingw
وهو ما كان يحول دون قدر كبير من معالجة الإصدار بالتوازي. - تم تحديث
build-gabi++.sh
وbuild-stlport.sh
بحيث يمكن تشغيلها الآن. من حزمة NDK. (المشكلة 52835) - تم إصلاح
run-tests.sh
في مجموعة برامج الخدماتMSys
. - سلسلة أدوات مضيف محسَّنة 64 بت ودعم إنشاء الصليب الكندي.
- تم تعديل نص برمجي واحد (
build-mingw64-toolchain.sh
) إلى إصدار أحدث. - تمت إضافة خيار للإصدار
libgnustl_static.a
وstlport_static.a
. بدون الظهور المخفي.
- تم إصلاح شرط سباق في
Android NDK r8d (كانون الأول (ديسمبر) 2012)
- تغييرات مهمة:
-
- تمت إضافة المحول البرمجي GNU Compiler Group (GCC) 4.7 إلى NDK. برنامج التجميع من GCC 4.6
لا يزال هو الإصدار الافتراضي، لذا يجب تمكين الإصدار الجديد بشكل صريح على النحو التالي:
- بالنسبة إلى
ndk-build
، عليك تصدير المتغيّرNDK_TOOLCHAIN_VERSION=4.7
. أو إضافته إلىApplication.mk
. - بالنسبة إلى الإصدارات المستقلة، يمكنك إضافة الخيار "
--toolchain=
" إلىmake-standalone-toolchain.sh
، على سبيل المثال:--toolchain=arm-linux-androideabi-4.7
ملاحظة: هذه الميزة تجريبية. يُرجى تجربتها و والإبلاغ عن أي مشاكل.
- بالنسبة إلى
- تمت إضافة استثناء
stlport
عبر gabi++. لاحظ أن gabi++ الجديد علىdlopen
والرموز ذات الصلة، ما يعني أنّ:- لم يعد بإمكانك إنشاء ملف ثابت تنفيذي باستخدام
-static
أو تضمينlibstlport_static.a
باستخدامAPP_STL := stlport_static
(لا يزال بإمكانك استخدام الخيار-static
) من خلال سلسلة أدوات مستقلة). إنشاء ملف ديناميكي قابل للتنفيذ باستخدام يستمرinclude $(BUILD_EXECUTABLE)
في العمل لأن المحول البرمجي على إضافة الخيار-ldl
تلقائيًا. - في حال ربط مشروعك باستخدام
-nostdlib
و{-Wl,--no-un specific}، عليك على الخيار-ldl
يدويًا.
CPLUSPLUS-SUPPORT.html
.ملاحظة: هذه الميزة تجريبية وتعمل بشكل أفضل مع بلدان مجلس التعاون الخليجي. 4.6/4.7 برامج التجميع عن GCC 4.4.3 أو Clang 3.1. يُرجى تجربتها و والإبلاغ عن أي مشاكل.
- لم يعد بإمكانك إنشاء ملف ثابت تنفيذي باستخدام
- تمت إضافة الخيار
-mstack-protector-guard=
لجهاز x86 للاختيار بين مسار تلقائي عالمي يتوافق مع مكتبة Android C القديمة (bionic) ومسار tls جديد (%gs:20) لـ-fstack-protector
،-fstack-protector-all
و-fstack-protector-strong
باستخدام الإصدار 4.6 من GCC وبرامج التجميع الأعلى.ملاحظة: لا ينطبق إعداد
-mstack-protector-guard
نفسه تفعيل أي من خيارات-fstack-protector*
- تمت إضافة الدالة
android_setCpu()
إلىsources/android/cpufeatures/cpu-features.c
للاستخدام عند إجراء الاكتشاف التلقائي عبر لا يمكن استخدام/proc
في الإصدار Android 4.1 والإصدارات الأحدث. (مشكلة في Chromium 164154)
- تمت إضافة المحول البرمجي GNU Compiler Group (GCC) 4.7 إلى NDK. برنامج التجميع من GCC 4.6
لا يزال هو الإصدار الافتراضي، لذا يجب تمكين الإصدار الجديد بشكل صريح على النحو التالي:
- إصلاح الأخطاء المهمة:
-
- تم إصلاح عملية إعادة إنشاء ملفات الكائنات غير الضرورية عند استخدام النص البرمجي
ndk-build
. (المشكلة 39810) - تم إصلاح عطل الربط في إصدار NDK 8c لنظام التشغيل Mac OS X 10.6.x الذي أدى إلى إنتاج
الخطأ التالي:
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. - تمت إزالة خيارات
-x c++
من نص الإصدار المستقل Clang++. (المشكلة 39089) - تم إصلاح المشاكل باستخدام الخيار "
NDK_TOOLCHAIN_VERSION=clang3.1
" في Cygwin. (المشكلة 39585) - تم إصلاح النص البرمجي "
make-standalone-toolchain.sh
" للسماح بإنشاء سلسلة أدوات مستقلة باستخدام بيئتي Cygwin أو MinGW. سلسلة الأدوات الناتجة ويمكن استخدامها في بيئات Cygwin أو MingGW أو CMD.exe. (المشكلة 39915، المشكلة 39585) - تمت إضافة خيار
SL_IID_ANDROIDBUFFERQUEUESOURCE
غير المتوفّر في إصدارات android-14 لنظام التشغيل Android. ARM وX86. (المشكلة 40625) - تم إصلاح رصد وحدة المعالجة المركزية x86 لميزة
ANDROID_CPU_X86_FEATURE_MOVBE
. (المشكلة 39317) - تم إصلاح مشكلة تمنع مكتبة النماذج العادية (STL) من استخدام C++
المصادر التي ليس لها امتداد ملف
.cpp
. - تم إصلاح خطأ التجميع الداخلي لـ GCC 4.6 ARM عند إعادة التحميل1.c:1061. (المشكلة 20862)
- تم إصلاح خطأ برنامج التجميع الداخلي ARM في GCC 4.4.3 في emit-rtl.c:1954. (المشكلة 22336)
- تم إصلاح خطأ برنامج التجميع الداخلي ARM في GCC 4.4.3 في postreload.c:396. (المشكلة 22345)
- تم إصلاح مشكلة تخطي GCC 4.6/4.7 لدوال lambda. (المشكلة 35933)
- تم إصلاح عملية إعادة إنشاء ملفات الكائنات غير الضرورية عند استخدام النص البرمجي
- إصلاحات أخرى للأخطاء:
-
- إصلاحات ملف عنوان NDK:
- تم إصلاح
__WINT_TYPE__
وwint_t
للنوع نفسه. - تم تصحيح الخطأ الإملائي في
android/bitmap.h
. (المشكلة 15134) - تم تصحيح الخطأ الإملائي في
errno.h
. - تمت إضافة عملية التحقق من تواجد
__STDC_VERSION__
فيsys/cdefs.h
. (المشكلة 14627) - تمت إعادة تنظيم العناوين في
byteswap.h
وdirent.h
. - تم إصلاح
limits.h
ليتضمنpage.h
والذي يوفرPAGE_SIZE
الإعدادات. (المشكلة 39983) - نوع إرجاع ثابت بقيمة
glGetAttribLocation()
glGetUniformLocation()
منint
إلىGLint
. - تم تثبيت ثابت
__BYTE_ORDER
للإصدارات x86. (المشكلة 39824)
- تم إصلاح
- تم إصلاح نص برمجي
ndk-build
بحيث لا يستبدل-Os
بـ-O2
في ARM الإصدارات. - النصوص البرمجية للإصدار الثابت للسماح باستبدال
HOST_AWK
وHOST_SED
إعدادات "HOST_MAKE
" - تم إصلاح مشكلة
ld.gold
علىfsck_msdos
لإنشاء عناصر ربط تم إنشاؤها بواسطة برنامج التجميع Intel C/C++ (ICC). - دعم ARM EHABI ثابت في Clang للتوافق مع المواصفات.
- تم إصلاح "برنامج تصحيح الأخطاء GNU" (GDB) لتقصير الوقت المستغرَق في المشي على خريطة رابط الهدف.
خلال أحداث
solib
. (المشكلة 38402) - تم إصلاح مشكلة عدم توفّر ملف
libgcc.a
عند ربط المكتبات المشتركة.
- إصلاحات ملف عنوان NDK:
- تغييرات أخرى:
-
- وظائف بسيطة مدمجة في الخلفية 64 بت من أجل ARM إلى GCC 4.6.
- تمت إضافة وثائق حول وقت استجابة إخراج الصوت بالإضافة إلى مستندات أخرى إصلاحات الأخطاء.
- تم إصلاح إصدار تصحيح الأخطاء باستخدام Clang لكي ترفع الدوال غير الفارغة الآن
SIGILL
. إشارة للمسارات بدون عبارة إرجاع. - تم تعديل
make-standalone-toolchain.sh
لقبول اللاحقة-clang3.1
. أي ما يعادل إضافة--llvm-version=3.1
إلى سلسلة الأدوات الإصدار 4.6 من GCC. - تم تعديل عنوان URL لتقرير أخطاء GCC وClang ليصبح: https://source.android.com/source/report-bug. .s.html
- تمت إضافة دعم ARM ELF إلى
llvm-objdump
. - تم إلغاء تحذير معالجة الإدخال c كـ c++ لإصدارات Clang.
- تم تحديث الإصدار بحيث لا يتم إنشاء سوى الإصدار 32 بت من
libiberty.a
موضوع فيlib32/
.
Android NDK r8c (تشرين الثاني/نوفمبر 2012)
- تغييرات مهمة:
-
- تمت إضافة المحول البرمجي Clang 3.1 إلى NDK. الإصدار 4.6 من مجموعة GNU Compiler Group (GCC) هو
لا يزال هو الإعداد الافتراضي، لذا يجب عليك تمكين خيار برنامج التحويل البرمجي Clang بشكل صريح على النحو التالي:
- بالنسبة إلى
ndk-build
، يمكنك تصديرNDK_TOOLCHAIN_VERSION=clang3.1
أو. إضافة إعداد متغير البيئة هذا إلىApplication.mk
. - بالنسبة إلى الإصدارات المستقلة، يمكنك إضافة
--llvm-version=3.1
إلىmake-standalone-toolchain.sh
واستبدالCC
وCXX
في makefile مع<tool-path>/bin/clang
<tool-path>/bin/clang++
يمكنك الاطّلاع علىSTANDALONE-TOOLCHAIN.html
عن التفاصيل.
ملاحظة: هذه الميزة تجريبية. يُرجى تجربتها و والإبلاغ عن أي مشاكل.
- بالنسبة إلى
- تمت إضافة الرابط الذهبي
ld.gold
لسلسلة أدوات Windows. يعد الارتباط الذهبي أيضًا بشكل افتراضي لـ ARM وX86 على جميع المضيفات. يمكنك تجاوزه لاستخدامld.bfd
. رابط عن طريق إضافةLOCAL_LDFLAGS += -fuse-ld=bfd
إلىAndroid.mk
، أو من خلال تمرير الكرة-fuse-ld=bfd
إلى سطر الأوامر g++/clang++ الذي يؤدي الرابط. - تمت إضافة عمليات تحقّق من المسافات في مسار NDK إلى
ndk-build[.cmd]
ndk-gdb
نصوص برمجية، لمنع أخطاء الإصدار التي يصعب تشخيصها. - تم إجراء التغييرات التالية على التعامل على مستوى واجهة برمجة التطبيقات:
- تم تعديل منطق الإصدار لكي تصبح المشاريع التي تحدّد
android-10
من خلالandroid-13
فيAPP_PLATFORM
أوproject.properties
أو رابط "default.properties
" إلى "android-9
" بدلاً منandroid-14
- إصدار معدَّل كي تصبح الملفات التنفيذية التي تستخدم android-16 (Jelly Bean) أو الإصدارات الأحدث
ويتم تجميعها باستخدام الخيار
-fPIE
للملفات التنفيذية المستقلة عن الموضع (PIE). يتيح لك خيار "APP_PIE
" جديد التحكّم في هذا السلوك. لمزيد من التفاصيل، انتقِل إلىAPPLICATION-MK.html
.ملاحظة: لا تزال جميع مستويات واجهة برمجة التطبيقات الأعلى من 14 مرتبطة بـ
platforms/android-14
ولم تتم إضافةplatforms/android-N
جديد. - تم تعديل
ndk-build
لتقديم تحذيرات إذا كان مستوى واجهة برمجة التطبيقات المعدَّل أكبر. منandroid:minSdkVersion
فيAndroidManifest.xml
للمشروع.
- تم تعديل منطق الإصدار لكي تصبح المشاريع التي تحدّد
- تم تعديل مكتبة مساعد "
cpu-features
" لتشمل المزيد من الميزات الخاصة بمعالجات ARM. لمزيد من التفاصيل، انتقِل إلىsources/android/cpufeatures/cpu-features.h
. - تم تعديل المزدوج الطويل على النظام الأساسي X86 إلى 8 بايت. هذا النوع من البيانات هو الآن بحجم مزدوج مثل النوع المزدوج، إلا أنه لا يزال يُعامل على أنه نوع مميز.
- تم تحديث إصدار
APP_ABI=armeabi-v7a
:- تم تعديل نوع الإصدار هذا لتمرير معلَمة
-march=armv7-a
إلى الرابط. يؤكد هذا التغيير أن المكتبات الخاصة بالإصدار 7 وcrt*.o
بشكل صحيح. - تمت إضافة
-mfpu=vfpv3-d16
إلىndk-build
بدلاً من خيار-mfpu=vfp
الذي تم استخدامه في الإصدارات السابقة
- تم تعديل نوع الإصدار هذا لتمرير معلَمة
- تمت إضافة المحول البرمجي Clang 3.1 إلى NDK. الإصدار 4.6 من مجموعة GNU Compiler Group (GCC) هو
لا يزال هو الإعداد الافتراضي، لذا يجب عليك تمكين خيار برنامج التحويل البرمجي Clang بشكل صريح على النحو التالي:
- إصلاح الأخطاء المهمة:
-
- تم إصلاح مشكلة تشغيل
make-standalone-toolchain.sh
مع امتيازات الجذر أدى إلى عدم إمكانية وصول بعض المستخدمين إلى سلسلة الأدوات المستقلة. (المشكلة 35279)- تم تعيين جميع الملفات والملفات التنفيذية في حزمة إصدار NDK على قراءة أذونات التنفيذ للجميع.
- يتم الآن الاحتفاظ بملكية/مجموعة
libstdc++.a
عند نسخها.
- تمت إزالة إذن "
\r
" المكرّر من "echo.exe
" الذي تم إنشاؤه مسبقًا في نظام التشغيل Windows. التكرار تسبّب\r
في تعذُّر تشغيلgdb.setup
في برنامج تصحيح الأخطاء GNU (GDB) لأنّه أصبحت جزءًا من المسار بشكل غير صحيح. (المشكلة 36054) - تم إصلاح إصدارات Windows المتوازية التي تعذّر تنفيذها أحيانًا بسبب مشاكل في التوقيت
تنفيذ "
host-mkdir
". (المشكلة 25875) - تم إصلاح GCC 4.4.3 GNU
libstdc++
على عدم دمج أسماءtypeinfo
عن طريق الافتراضي. لمزيد من التفاصيل، يُرجى مراجعةtoolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo
(المشكلة 22165) - إصلاح مشكلة في سياق
null
في الإصدار 4.6 من GCCcp/mangle.c::write_unscoped_name
، حيث قد يتعطل GCC عندما يكون السياقnull
وتمت إزالة الإشارة إليه فيTREE_CODE
. - تم إصلاح أعطال GCC 4.4.3 في تعريفات النوع الخاصة بـ ARM NEON للقيم العائمة. (المشكلة 34613)
- تم إصلاح تنفيذ "
_IteWrapper::operator*()
" الداخلي لـSTLport
. حيث تم إرجاع موقع تكديس قديم يضم القيمة التي تمت إزالتها أثناء التشغيل. (المشكلة 38630) - الإصلاحات الخاصة بمعالجات ARM:
- تم إصلاح ARM GCC 4.4.3/4.6
g++
لعدم التحذير من <va_list> في GCC 4.4. يتمثل الحل البديل باستخدام لم يعُد التبديل إلى "-Wno-psabi
" لتجنُّب ظهور هذا التحذير مطلوبًا. - تم إصلاح مشكلة كانت تحدث عند مشروع يتضمّن لاحقات
.arm
أو.neon
. تم أيضًا استخدامAPP_STL
من قِبل "LOCAL_SRC_FILES
". باستخدامAPP_STL
، هناك نص برمجي واحد (ndk-build
) يبحث عن ملفات C++ فيLOCAL_SRC_FILES
قبل ذلك إضافة مسارات STLheader/lib
إلى التجميع. تم تعديلndk-build
إلى استبعاد اللاحقتين.arm
و.neon
قبل البحث، في الحالات الأخرى فيLOCAL_SRC_FILES
مثلmyfile.cpp.arm.neon
، لن يتم تجميعها على هيئة C++ الرمز. - تم إصلاح مشكلة "
binutils-2.21/ld.bfd
" لإتاحة إمكانية ربط عنصر من الإصدار القديم. binutils بدونtag_FP_arch
، والذي أدى إلى ظهور إخفاق التأكيد رسائل الخطأ في GNU Binutils. (المشكلة 35209) - تمت إزالة التحذير سمة عنصر EABI 44 غير المعروفة عند.
عنصر تم إنشاؤه مسبقًا في "
binutils-2.19/ld
" من قِبلbinutils-2.21
الأحدث - تم إصلاح مشكلة في تجميع GNU
stdc++
في كل من-mthumb
-march=armv7-a
، عن طريق تعديلmake-standalone-toolchain.sh
لتعبئةheaders/libs
في الدليل الفرعيarmv7-a/thumb
. (المشكلة 35616) - تم إصلاح خطأ نقل R_ARM_THM_CALL غير قابل للحل. (المشكلة 35342)
- تم إصلاح خطأ برنامج التحويل البرمجي الداخلي في
reload1.c:3633
، بسبب ARM واجهة خلفية تتوقع نوع المعامل غير الصحيح عند امتداد الإشارة منchar
. (المشكلة 50099 في مجلس التعاون الخليجي) - تم إصلاح خطأ برنامج التحويل البرمجي الداخلي مع مقدار التحول السالب. (مشكلة في مجلس التعاون الخليجي)
- تم إصلاح ARM GCC 4.4.3/4.6
- تم إصلاح
-fstack-protector
لـ X86، وهو أيضًا الإعداد التلقائي هدفndk-build
x86 ABI - الإصلاحات الخاصة بـ MIPS:
- تم إصلاح نهاية
STLport
من خلال ضبط_STLP_LITTLE_ENDIAN
على 1 عند. وتجميع MIPSlibstlport_*
. - تم إصلاح مشكلة
__builtin_unreachable
في GCC عند تجميع LLVM. (المشكلة 54369 في مجلس التعاون الخليجي) - إصلاح في الخلفية لعملية تجميع
cc1
تستهلك وحدة معالجة مركزية (CPU) بنسبة 100%. (المشكلة 50380 في مجلس التعاون الخليجي)
- تم إصلاح نهاية
- الإصلاحات الخاصة ببرنامج تصحيح الأخطاء GNU:
- دعم Python معطل في gdb-7.x في الإصدار، وإلا فإن gdb-7.x إعداد
أي إصدار بايثون متاح على المضيف وإنشاء
هي اللغة
gdb
التي تعتمد على مصدر معيّن من Python. (المشكلة 36120) - تم إصلاح
ndk-gdb
عندما يحتويAPP_ABI
علىall
ولا يطابق أي شيء البِنى الهندسية المعروفة. (المشكلة 35392) - تم إصلاح دعم اسم مسار Windows، من خلال الاحتفاظ بالحرف
:
في حال ظهوره كأنه يمكن أن يكون جزءًا من مسار Windows يبدأ بحرف محرك الأقراص. (مشكلة GDB 12843) - تم إصلاح إضافة دعم نقاط إيقاف الأجهزة لمعالجات ARM في
gdbserver
. (مشكلة في GDB) - تمت إضافة إصلاح لقراءة
solibs
الحالية فقط عندما يكون الرابط متسقًا. يؤدي هذا التغيير إلى تسريع معالجة أحداثsolib
. (المشكلة 37677) - تمت إضافة إصلاح لإجراء محاولات متكررة للعثور على
solib
نقطة توقّف. GDB الآن إعادة محاولةenable_break()
خلال كل مكالمة إلىsvr4_current_sos()
حتى إلا أنه نجح. (تغيير 43563) - تم إصلاح مشكلة عدم توقف
gdb
عند نقاط الإيقاف الموضوعة فيdlopen-ed
مكتبة (المشكلة 34856) - تم إصلاح
SIGILL
في الرابط الديناميكي عند طلبdlopen()
على النظام. حيث يتم تجريد/system/bin/linker
من الرموز تم تنفيذrtld_db_dlactivity()
كـThumb
، نظرًا لعدم الحفاظ عليهLSB
منsym_addr
. (المشكلة 37147)
- دعم Python معطل في gdb-7.x في الإصدار، وإلا فإن gdb-7.x إعداد
أي إصدار بايثون متاح على المضيف وإنشاء
هي اللغة
- تم إصلاح مشكلة تشغيل
- إصلاحات أخرى للأخطاء:
-
- عناوين NDK الثابتة:
- تم إصلاح رمز
arch-mips/include/asm/*
تمت إزالته بشكل غير صحيح من النواة الأصلية. (تغيير 43335). - تم استبدال بيانات أعضاء البنية
__unused
بـ__linux_unused
في.linux/sysctl.h
وlinux/icmp.h
لتجنب التعارض مع#define __unused
فيsys/cdefs.h
. - تم إصلاح
fenv.h
لدوال C المضمنة مع__BEGIN_DECLS
__END_DECLS
- تمت إزالة الدوال غير المُنفَّذة في
malloc.h
. - تم إصلاح تعريف
stdint.h
لـuint64_t
لبرامج التحويل البرمجي للمعهد الأمريكي للمعايير الوطنية (ANSI). (عدد 1952) - تم إصلاح وحدات ماكرو المعالجة المسبقة للمعالجة في
<arch>/include/machine/*
. - تم استبدال
link.h
لنظام MIPS بإصدار جديد يتوافق مع جميع الأنظمة الأساسية. - تمّت إزالة "
linux-unistd.h
" - نقل وحدات الماكرو الخاصة بـ GLibc
LONG_LONG_MIN
وLONG_LONG_MAX
وULONG_LONG_MAX
من<pthread.h>
إلى<limits.h>
- تم إصلاح رمز
- تم إصلاح فائض سعة المخزن المؤقت في
ndk-stack-parser
. - تم حلّ مشكلة
_STLP_USE_EXCEPTIONS
لحذف جميع التعريفات عندما لا تكون محددة واستخدامهما لـ__Named_exception
. تجميع واستخدام "__Named_exception
" لا تحدث الإعدادات إلا عندما يُسمح لتطبيقSTLport
باستخدام الاستثناءات. - إنشاء ثابت لحزم NDK الخاصة بنظام Linux فقط دون إنشاء كود Windows أيضًا. يمكنك استخدام
الإعدادات التالية لتنفيذ هذا النوع من الإصدارات:
./build/tools/make-release.sh --force --systems=linux-x86
- تم إصلاح
libc.so
بحيث لا يتم تصديرatexit()
و__do_handler
. ويتم تصدير هذه الرموز إلى إصدارات ARM من خلال إصدار النظام من مكتبة C إلى تتيح استخدام المكتبات الأصلية القديمة. يجب ألا تشير إليها مواد العرض التي ينشئها NDK بشكل مباشر. بدلاً من ذلك، يجب أن تتضمن كل مكتبة مشتركة أو قابلة للتنفيذ نسختها الخاصة من هذه الرموز، مقدمة من "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
أكثر قابلية للقراءة - تمت إزالة الرموز التالية المقدمة في الإصدار 4.6 من
libgcc.a
في GCC من مكتبة منصة X86libc.so
:__aeabi_idiv0
،__aeabi_ldiv0
،__aeabi_unwind_cpp_pr1
، و__aeabi_unwind_cpp_pr2
. - تمت إزالة
.ctors
و.dtors
و.eh_frame
غير المستخدَمة في MIPS.crt*_so.S
- تم تحديث
ndk-gdb
بحيث لا يستغرق سوى آخر سطر من الإخراجndk-build
DUMP_XXXX
. يضمن هذا التغيير أنه في حالةApplication.mk
أو تطبعAndroid.mk
شيئًا باستخدام بنية$(info ...)
، فلن يتم الحصول على تم إدخاله في نتيجةDUMP_XXXX
. (مزيد من المعلومات)
- عناوين NDK الثابتة:
- تغييرات أخرى:
-
- تمت إزالة العنوانَين
arch-x86
وarch-mips
منplatforms/android-[3,4,5,8]
كانت هذه العناوين غير مكتملة، نظرًا لأن كلاً من X86 لا تتوافق واجهات برمجة التطبيقات MIPS ABI إلا مع الإصدار 9 من واجهة برمجة التطبيقات أو الإصدارات الأحدث. - تتضمّن لغة c++ المبسطة المسار في الحزم المستقلة، كما هو موضّح أدناه.
(المشكلة 35279)
<path>/arm-linux-androideabi/include/c++/4.6.x-google to: <path>/include/c++/4.6/
- تم إصلاح
ndk-build
للتعرف على المزيد من امتدادات ملفات C++ تلقائيًا:.cc .cp .cxx .cpp .CPP .c++ .C
لا يزال بإمكانك استخدام "LOCAL_CPP_EXTENSION
" من أجل استبدال إعدادات الإضافات هذه. - تم إصلاح مشكلة في تطبيق "
samples/san-angeles
" تسبّبت في ظهور شاشة سوداء أو توقّف عن العمل. الإطار عند إعادة التشغيل. - تم استبدال واجهات برمجة التطبيقات المتوقّفة نهائيًا في نماذج NDK.
(عدد 20017)
- "
hello-gl2
" من android-5 إلى android-7 - "
native-activity
" من android-9 إلى android-10 - "
native-audio
" من android-9 إلى android-10 - "
native-plasma
" من android-9 إلى android-10
- "
- تمت إضافة علامة تجارية جديدة لملفات 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
، كما يتم تحسينها لتجميع معظم الاختبارات لجميع الاختبارات واجهات التطبيق الثنائية (ABI) المتوافقة وتعمل على جميع الأجهزة المتصلة
- تمت إزالة العنوانَين
Android NDK r8b (تموز/يوليو 2012)
تتمثّل الميزات الرئيسية لهذا الإصدار في سلسلة أدوات جديدة للإصدار 4.6 من أداة تجميع GNU Compiler Group (GCC) الإصدار 7.3.x من برنامج تصحيح الأخطاء GNU Debugger (GDB) يتيح تصحيح الأخطاء لنظام Android 4.1 (مستوى واجهة برمجة التطبيقات 16) .
- إصلاح الأخطاء المهمة:
-
- تم إصلاح مشاكل
LOCAL_SHORT_COMMANDS
في بيئات نظام التشغيل Mac وWindows Cygwin في والمكتبات الثابتة. يتم إنشاء ملفات القوائم بشكل أسرع، ولا تتم إعادة إنشائها لتجنُّب التكرارات لإعادة بناء المشروع. - تم إصلاح عدة مشاكل في
ndk-gdb
:- تم تعديل الأداة لتمرير العلامات
-e
و-d
و-s
لإضافة المزيد من الإعدادات. باستمرار. - تم تعديل الأداة لقبول الأسماء التسلسلية للأجهزة التي تحتوي على مسافات.
- تم تعديل الأداة لاسترداد معلومات
/system/bin/link
، وبالتالي أصبحgdb
في يمكن للمضيف ضبط نقطة إيقاف في__dl_rtld_db_dlactivity
والانتباه إلى نشاط الرابط (مثلًا، يمكنك إعادة مسح رموزsolib
ضوئيًا عند استدعاءdlopen()
).
- تم تعديل الأداة لتمرير العلامات
- تم إصلاح
ndk-build clean
على Windows، وتعذّرت إزالته./libs/*/lib*.so
- تم إصلاح
ndk-build.cmd
لعرض قيمة غير صفرية بقيمةERRORLEVEL
عندmake
. فشل. - تم إصلاح مشكلة
libc.so
لإيقاف تصدير__exidx_start
بشكل غير صحيح رموز__exidx_end
- تم إصلاح
SEGV
عند ترجيع الحزمة بعد__libc_init
للون ARM MIPS.
- تم إصلاح مشاكل
- تغييرات مهمة:
-
- تمت إضافة سلسلة أدوات GCC 4.6 (
binutils
2.21 معgold
وGDB 7.3.x) إلى جنبًا إلى جنب مع سلسلة الأدوات 4.4.3 من GCC الأصلية (binutils
2.19 وGDB 6.6).- أصبحت GCC 4.6 الآن سلسلة الأدوات التلقائية. يمكنك ضبط "
NDK_TOOLCHAIN_VERSION=4.4.3
" في "Application.mk
" لاختيار الحالة الأصلية. - لا يتوفّر الدعم لأداة ربط "
gold
" إلا للأجهزة التي تعمل بمعالجات ARM وx86. الهياكل على مضيفي نظامي التشغيل Linux وMac. تكون هذه الخدمة متوقّفة تلقائيًا. أضِفLOCAL_LDLIBS += -fuse-ld=gold
فيAndroid.mk
لتفعيلها. - تتطلّب البرامج التي يتمّ جمعها باستخدام
-fPIE
السمةGDB
الجديدة لتصحيح الأخطاء. بما في ذلك البرامج الثنائية في صور النظام Android 4.1 (المستوى 16 لواجهة برمجة التطبيقات). - تحتوي الأداة
binutils
2.21ld
على إصلاحات ذات منفذ خلفي من الإصدار 2.22:- تم إصلاح
ld --gc-sections
، الذي يحتفظ بشكل غير صحيح بمراجع الزومبي المكتبات الخارجية. (المزيد جديدة). - تم إصلاح أمر ARM
strip
للاحتفاظ بالعنصرp_align
الأصليp_flags
في قسمGNU_RELRO
إذا كانت صالحة. بدون هذا الإصلاح، لا يمكن تعذّر تصحيح الأخطاء التي تم إنشاؤها باستخدام-fPIE
. (أكثر هـ)
- تم إصلاح
- تم إيقاف تحسين
sincos()
للتوافق مع الأقدم الأساسية.
- أصبحت GCC 4.6 الآن سلسلة الأدوات التلقائية. يمكنك ضبط "
- تم تعديل خيارات الإصدار لتفعيل وحدات بت Never eXecute (NX) والحماية
relro
/bind_now
تلقائيًا:- تمت إضافة
--noexecstack
إلى أداة التجميع و-z noexecstack
إلى أداة الربط. توفر حماية NX من هجمات تجاوز سعة المخزن المؤقت عن طريق تمكين بت NX على حزمة لقطات لأجزاء من الذاكرة - تمت إضافة
-z relro
و-z now
إلى أداة الربط لتقوية الروابط الداخلية أقسام البيانات بعد الربط للحماية من الثغرات الأمنية الناتجة عن تلف الذاكرة. (مزيد من المعلومات: 1، 2) - يمكن إيقاف هذه الميزات باستخدام الخيارات التالية:
- يمكنك إيقاف الحماية من خلال NX من خلال ضبط الخيار
--execstack
على المجمّع و-z execstack
لأداة الربط. - يمكنك إيقاف تعزيز البيانات الداخلية من خلال ضبط
-z norelro
و-z lazy
خيار للرابط - يمكنك إيقاف إجراءات الحماية هذه في
jni/Android.mk
في NDK من خلال ضبط الخيارات التالية:LOCAL_DISABLE_NO_EXECUTE=true # disable "--noexecstack" and "-z noexecstack" DISABLE_RELRO=true # disable "-z relro" and "-z now"
لمزيد من التفاصيل، يُرجى الانتقال إلى
docs/ANDROID-MK.html
. - يمكنك إيقاف الحماية من خلال NX من خلال ضبط الخيار
- تمت إضافة
- تمت إضافة العلامة التجارية لملفات Android التنفيذية في القسم
.note.ABI-tag
(في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 (
- إصلاحات أخرى للأخطاء:
-
- تم إصلاح عملية نقل موقع
mips-linux-gnu
لتلائم مشكلة واحدة (R_MIPS_TLS_LDM
). (مزيد من المعلومات) - تم إصلاح الأخطاء في أداة
ld
عند استخدام--gc-sections
. (مزيد من المعلومات) - تم إصلاح مشكلة احتساب
GOT_PAGE
MIPS. (مزيد من المعلومات) - تم إصلاح رابط رمز الخطأ الخاص بالمتابعة في
mips_elf_count_got_symbols
. - تم إصلاح رابط رمز الخطأ الخاص بالمتابعة في
mips_elf_allocate_lazy_stub
. - تم نقل MIPS
.dynamic
إلى شريحة البيانات، بحيث تكون قابلة للكتابة. - تم استبدال القيم غير الثابتة ذات الترميز الثابت للرموز ذات أحجام الأجزاء الصحيحة لملفات MIPS.
- تمت إزالة الخيار
-mno-shared
من الإعدادات التلقائية في سلسلة أدوات MIPS. الإعداد التلقائي لسلسلة أدوات 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
إلىsources/cxx-stl/gnu-libstdc++/4.6
عند تجميعها باستخدام GCC 4.6، أوsources/cxx-stl/gnu-libstdc++/4.4.3
عند تجميعها باستخدام GCC 4.4.3. - تم نقل
libbfd.a
وlibintl.a
منlib/
إلىlib32/
.
- تم نقل
- تمت إضافة العديد من النصوص البرمجية وتحسينها في سلسلة أدوات NDK الجديدة:
- تمت إضافة
build-mingw64-toolchain.sh
لإنشاء سلسلة أدوات جديدة مستضافة على Linux. التي تنشئ ملفات تنفيذية لـ Win32 وWin64. - تم تحسين سرعة
download-toolchain-sources.sh
باستخدام الأمرclone
واستخدامcheckout
فقط للأدلة اللازمة لإنشاء ملف NDK. البرامج الثنائية لسلسلة الأدوات. - تمت إضافة
build-host-gcc.sh
وbuild-host-gdb.sh
نص برمجي. - تمّت إضافة
tests/check-release.sh
للتحقّق من محتوى NDK معيّن. أو دليل تثبيت أو حزمة NDK حالية. - تمت إعادة كتابة الاختبارَين المستقلَّين (
tests/standalone/run.sh
).
- تمت إضافة
- تمت إزالة العنوان
if_dl.h
من جميع الأنظمة الأساسية والبُنى الأساسية. العنصرانAF_LINK
وsockaddr_dl
الموضَّحان مرتبطان بـ BSD (أي أنّهما غير متوفّرين). في Linux).
- تم تغيير مواقع البرامج الثنائية:
Android NDK r8 (أيار (مايو) 2012)
يتضمن هذا الإصدار من NDK دعمًا لـ MIPS ABI وبعض الإصلاحات الإضافية.
- الميزات الجديدة:
-
- تمت إضافة التوافق مع واجهة التطبيق الثنائية (MIPS ABI)، ما يتيح لك إنشاء رمز برمجي للجهاز يتم تشغيله على
أجهزة Android المتوافقة المستندة إلى بروتوكول MIPS. تشمل الميزات الرئيسية لنظام MIPS
سلاسل الأدوات وعناوين النظام والمكتبات ودعم تصحيح الأخطاء. لمزيد من التفاصيل حول
دعم MIPS، يمكنك الاطّلاع على
docs/CPU-MIPS.html
في حزمة NDK.ويتم تلقائيًا إنشاء الرمز للأجهزة المستنِدة إلى معالِج البيانات ARM. يمكنك إضافة
mips
إلى تعريفAPP_ABI
في ملفApplication.mk
لإنشاء لمنصات MIPS. على سبيل المثال، السطر التالي يوجِّه تعليمات إلىndk-build
لإنشاء التعليمات البرمجية لثلاثة واجهات ABI مميزة:APP_ABI := armeabi armeabi-v7a mips
ما لم تكن تعتمد على مصادر التجميع الخاصة بالبنية، مثل تجميع ARM لن تحتاج إلى لمس ملفات
Android.mk
لإنشاء MIPS التعليمات البرمجية للجهاز. - يمكنك إنشاء سلسلة أدوات مستقلّة في نظام MIPS باستخدام "
--arch=mips
" عند الاتصال بـmake-standalone-toolchain.sh
. عرض لمزيد من التفاصيل، يُرجىdocs/STANDALONE-TOOLCHAIN.html
.
ملاحظة: لضمان توفّر تطبيقاتك إلى المستخدمين فقط إذا كانت أجهزتهم قادرة على تشغيلها، يفلتر Google Play التطبيقات حسب على معلومات مجموعة التعليمات المضمنة في طلبك؟ لا يلزم اتخاذ أي إجراء من جانبك لتفعيل التصفية. بالإضافة إلى ذلك، يفحص نظام Android نفسه تطبيقك على ووقت التثبيت ويسمح بمواصلة التثبيت فقط إذا كان التطبيق يوفر مكتبة ويتم تجميعها حسب بنية وحدة المعالجة المركزية (CPU) للجهاز.
- تمت إضافة التوافق مع واجهة التطبيق الثنائية (MIPS ABI)، ما يتيح لك إنشاء رمز برمجي للجهاز يتم تشغيله على
أجهزة Android المتوافقة المستندة إلى بروتوكول MIPS. تشمل الميزات الرئيسية لنظام MIPS
سلاسل الأدوات وعناوين النظام والمكتبات ودعم تصحيح الأخطاء. لمزيد من التفاصيل حول
دعم MIPS، يمكنك الاطّلاع على
- إصلاح الأخطاء المهمة:
-
- تم إصلاح خطأ إملائي في تنفيذ GAbi++ ، حيث تكون نتيجة
dynamic_cast<D>(b)
لكائن الفئة الأساسيةb
للفئة المشتقّةD
قد تم ضبطها بشكل غير صحيح في الاتجاه المعاكس للفئة الأساسية. (المشكلة 28721) - تم إصلاح مشكلة تعذّر نسخ
make-standalone-toolchain.sh
منهاlibsupc++.*
- تم إصلاح خطأ إملائي في تنفيذ GAbi++ ، حيث تكون نتيجة
- إصلاحات أخرى للأخطاء:
-
- تم إصلاح
ndk-build.cmd
لضمان عملndk-build.cmd
بشكل صحيح حتى إذا أعاد المستخدم تعريف متغيّر بيئةSHELL
، والذي يمكن تغييره عند تثبيت مجموعة متنوعة من أدوات التطوير في بيئات Windows.
- تم إصلاح
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
. - تم توفير إمكانية إنشاء وحدات باستخدام المئات أو حتى الآلاف من المصادر.
من خلال تحديد
LOCAL_SHORT_COMMANDS
إلىtrue
فيAndroid.mk
.يفرض هذا التغيير على نظام إصدار NDK وضع معظم خيارات أدوات الربط أو الأرشفة. إلى ملفات قائمة، كحل لقيود طول سطر الأوامر. لمزيد من التفاصيل، انتقِل إلى
docs/ANDROID-MK.html
.
- تمت إضافة إمكانية استخدام أدلة الإخراج المخصّصة من خلال
- إصلاحات أخرى للأخطاء:
-
- تم إصلاح تنفيذ سياسة
android_getCpuCount()
فيcpufeatures
. المساعدة. على بعض الأجهزة التي يتم فيها تفعيل النوى ديناميكيًا من خلال النظام سيُبلغ عن إجمالي عدد النوى النشطة في المرة الأولى التي تستخدم فيها الدالة بدلاً من إجمالي عدد النوى المتاحة فعليًا.
- تم إصلاح تنفيذ سياسة
Android NDK r7b (شباط (فبراير) 2012)
يتضمن هذا الإصدار من NDK إصلاحات لإصدارات Windows الأصلية وCygwin والعديد من التحسينات:
- إصلاح الأخطاء المهمة:
-
- تم تعديل السمة
sys/atomics.h
لتجنُّب المشاكل المتعلقة بالدقة. على بعض الأجهزة متعددة النواة والمستندة إلى معالِج البيانات ARM. إعادة إنشاء المصادر غير المعدَّلة باستخدام هذه الميزة من NDK وينبغي إزالة هذه المشكلة تمامًا. لمزيد من التفاصيل، يُرجى الاطّلاع على "docs/ANDROID-ATOMICS.html
". - تمت العودة إلى الإصدار 2.19 من
binutils
لحلّ مشاكل تصحيح الأخطاء التي في NDK r7 (الذي تحول إلىbinutils
2.20.1). - تم إصلاح
ndk-build
على نظام التشغيل Linux 32 بت. خطأ في الحزمة وضع إصدار 64 بت منawk
القابلة للتنفيذ بموجبprebuilt/linux-x86/bin
في الإصدار 7 من NDK. - إصدار Windows الأصلي الثابت (
ndk-build.cmd
). لم يتم تحديد أوضاع التصميم الأخرى المتأثرة. وتتضمّن الحلول ما يلي:- تمت إزالة خطأ في حلقة لانهائية / تجاوز تسلسل استدعاء الدوال البرمجية الذي حدث عند المحاولة
لاستدعاء
ndk-build.cmd
من دليل لم يكن في الجزء العلوي من مسار مشروعك (على سبيل المثال، في أي دليل فرعي منه). - تم إصلاح مشكلة تجاهل ملفات التبعية التي تم إنشاؤها تلقائيًا. هذا النمط أن تحديث العنوان لم يؤدي إلى إعادة تجميع المصادر التي تضمنت بها.
- تم إصلاح المشكلة التي كانت فيها الرموز الخاصة في الملفات أو المسارات، بخلاف المسافات علامات الاقتباس، لم تتم معالجتها بشكل صحيح.
- تمت إزالة خطأ في حلقة لانهائية / تجاوز تسلسل استدعاء الدوال البرمجية الذي حدث عند المحاولة
لاستدعاء
- إصلاح سلسلة الأدوات المستقلة لإنشاء برامج ثنائية مناسبة عند استخدامها
-lstdc++
(أي الربط ببيئة تشغيل GNUlibstdc++
C++ ) إِنْتَ يجب أن يستخدم-lgnustl_shared
إذا كنت تريد الربط بالمكتبة المشتركة أو-lstdc++
للإصدار الثابت.يُرجى الاطّلاع على
docs/STANDALONE-TOOLCHAIN.html
للحصول على مزيد من التفاصيل حول هذا الحلّ. - تم إصلاح
gnustl_shared
على Cygwin. اشتكى الرابط من أنه لم يتمكن من العثور علىlibsupc++.a
حتى لو كان الملف في المكان الصحيح. - رابط Cygwin C++ تم إصلاحه عند عدم استخدام أي وقت تشغيل C++ محدد من خلال
APP_STL
- تم تعديل السمة
- تغييرات أخرى:
-
- عندما يستخدم تطبيقك وقت تشغيل GNU
libstdc++
، سينشئ برنامج التجميع عدم فرض تفعيل الاستثناءات وبروتوكول RTTI مرة أخرى. يؤدي هذا التغيير إلى تصغير حجم الرمز.إذا كنت بحاجة إلى هذه الميزات، عليك تنفيذ أحد الإجراءات التالية:
- تفعيل الاستثناءات و/أو ميزة "مراسلة نصية في الوقت الفعلي" بشكل صريح في الوحدات
Application.mk
(موصى به) - تحديد
APP_GNUSTL_FORCE_CPP_FEATURES
إلى'exceptions'
،'rtti'
أو كليهما فيApplication.mk
. عرض لمزيد من التفاصيل، يُرجىdocs/APPLICATION-MK.html
.
- تفعيل الاستثناءات و/أو ميزة "مراسلة نصية في الوقت الفعلي" بشكل صريح في الوحدات
- يعمل
ndk-gdb
الآن بشكل صحيح عندما يحتوي تطبيقك على خدمات خاصة. يعمل في عمليات مستقلة. تصحح أخطاء عملية التطبيق الرئيسية، بدلاً من يتم إدراج العملية الأولى من قِبلps
، والتي تكون عادةً عملية خدمة. - تم إصلاح خطأ نادر حيث لا يفي NDK r7 بقيمة
LOCAL_ARM_MODE
وتجميع ملفات مصدر معينة (وليس كلها) دائمًا إلى تعليمات 32 بت. STLport
: يُرجى إعادة تحميل المصادر لتتطابق مع إصدار نظام Android الأساسي. هذا النمط إصلاح بعض الأخطاء الطفيفة:- تم إصلاح مثيل نوع غير مكتمل
- الإصدار الثانوي الذي تم إصلاحه "==" مقابل "=" خطأ إملائي
- تم استخدام
memmove
بدلاً منmemcpy
فيstring::assign
- تمت إضافة معالجة أفضل لـ
IsNANorINF
وIsINF
وIsNegNAN
وهكذا.
لمعرفة التفاصيل الكاملة، يُرجى الاطّلاع على سجلّ إتمام الصفقة.
STLport
: تمت إزالة 5 أدوات إعداد ثابتة غير ضرورية من المكتبة.- تم تجميع مكتبات GNU libstdc++ لـ armeabi-v7a عن طريق الخطأ armeabi بدلاً من ذلك. لم يكن لهذا التغيير أي تأثير على الصواب، ولكن استخدام يجب أن تحقّق واجهة التطبيق الثنائية (ABI) أداءً أفضل قليلاً.
- تم تعديل مكتبة مساعد "
cpu-features
" للإبلاغ عن ثلاث مشاكل اختيارية ميزات وحدة المعالجة المركزية x86 (SSSE3
وMOVBE
وPOPCNT
). عرض لمزيد من التفاصيل، يُرجى الانتقال إلىdocs/CPU-FEATURES.html
. - تم تعديل "
docs/NDK-BUILD.html
" للإشارة إلىNDK_APPLICATION_MK
بدلاً من ذلك. منNDK_APP_APPLICATION_MK
لاختيار ملفApplication.mk
مخصص - Cygwin: لم يعد
ndk-build
ينشئ قيمة "NUL" فارغة في الدليل عند استدعائه. - Cygwin: تمت إضافة اكتشاف تلقائي أفضل للتبعية. في الإصدار السابق،
لم تعمل بشكل صحيح في الحالات التالية:
- عندما لا تكون بادئة محرك أقراص Cygwin هي
/cygdrive
. - عند استخدام قواعد تثبيت بدون محرّك، على سبيل المثال، عندما يترجم Cygwin
/home
إلى\\server\subdir
بدلاً منC:\Some\Dir
- عندما لا تكون بادئة محرك أقراص Cygwin هي
- Cygwin: لا يحاول
ndk-build
استخدام أدوات Windows الأصلية ضمن$NDK/prebuilt/windows/bin
مع إصدارات معيّنة من Cygwin و/أو GNU Make.
- عندما يستخدم تطبيقك وقت تشغيل GNU
Android NDK r7 (تشرين الثاني (نوفمبر) 2011)
يتضمن هذا الإصدار من NDK ميزات جديدة لدعم النظام الأساسي Android 4.0 أيضًا أكبر عدد ممكن من الإضافات والتحسينات الأخرى:
- الميزات الجديدة
-
- تمت إضافة واجهات برمجة تطبيقات NDK الرسمية لنظام التشغيل Android 4.0 (المستوى 14)، ما يضيف ما يلي:
الميزات الأصلية على النظام الأساسي:
- تمت إضافة واجهة برمجة تطبيقات وسائط متعددة أصلية استنادًا إلى الإصدار 1.0.1 من مجموعة Khronos Group OpenMAX AL 1.0.1
القياسية. كل من
<OMXAL/OpenMAXAL.h>
تسمح عناوين<OMXAL/OpenMAXAL_Android.h>
باستهداف التطبيقات. للمستوى 14 من واجهة برمجة التطبيقات لتنفيذ إخراج وسائط متعددة مباشرةً من الرمز الأصلي عن طريق استخدام واجهة قائمة انتظار المخزن المؤقت الخاص بنظام التشغيل Android لمزيد من التفاصيل، يُرجى مراجعةdocs/openmaxal/index.html
وhttp://www.khronos.org/openmax/. - تم تعديل واجهة برمجة التطبيقات للصوت الأصلي استنادًا إلى الإصدار 1.0.1 من حزمة Khronos Group OpenSL ES.
القياسية. باستخدام المستوى 14 من واجهة برمجة التطبيقات، يمكنك الآن فك ترميز الصوت المضغوط (مثل MP3 وAAC
Vorbis) إلى PCM. لمزيد من التفاصيل، يمكنك الاطّلاع على
docs/opensles/index.html
و http://www.khronos.org/opensles/
- تمت إضافة واجهة برمجة تطبيقات وسائط متعددة أصلية استنادًا إلى الإصدار 1.0.1 من مجموعة Khronos Group OpenMAX AL 1.0.1
القياسية. كل من
- تمت إضافة دعم Ccache. لتسريع عمليات إعادة الإنشاء الكبيرة، حدد
NDK_CCACHE
متغير البيئة إلىccache
(أو المسار إلى برنامجccache
الثنائي). عند الإعلان، يتم تلقائيًا إنشاء نظام إصدار NDK. تستخدم ذاكرة التخزين المؤقت عند تجميع أي ملف مصدر. مثل:export NDK_CCACHE=ccache
ملاحظة: ذاكرة التخزين المؤقت غير مضمّنة في إصدار NDK. لذا، يجب أن يتم تثبيته قبل استخدامه. لمزيد من المعلومات حول ذاكرة التخزين المؤقت، يمكن مراجعة http://ccache.samba.org.
- تمت إضافة معلومات عن إمكانية ضبط
APP_ABI
علىall
للإشارة إلى أنّ: كنت تريد إنشاء وحدات NDK لجميع واجهات التطبيق الثنائية (ABI) التي يدعمها NDK المحدد . وهذا يعني أن أحد السطرين التاليين في تتساوىApplication.mk
مع هذا الإصدار:APP_ABI := all APP_ABI := armeabi armeabi-v7a x86
يعمل هذا الخيار أيضًا إذا حددت
APP_ABI
عند الاتصالndk-build
من سطر الأوامر، وهي طريقة سريعة للتحقق من لجميع واجهات التطبيق الثنائية (ABI) المتوافقة دون تغييرApplication.mk file
مثلاً:ndk-build APP_ABI=all
- تمت إضافة متغيّر
LOCAL_CPP_FEATURES
فيAndroid.mk
بحيث توضيح ميزات C++ (المراسلة النصية في الوقت الفعلي أو الاستثناءات) التي تستخدمها الوحدة. هذا النمط أن عملية الربط النهائي تعمل بشكل صحيح إذا كانت لديك وحدات معدّة مسبقًا تعتمد على هذه الميزات. يمكنك الاطّلاع علىdocs/ANDROID-MK.html
و لمزيد من التفاصيل، يُرجىdocs/CPLUSPLUS-SUPPORT.html
. - المسارات المختصرة للوصول إلى ملفات المصدر والكائنات المستخدَمة في أوامر الإصدار فعندما
استدعاء
$NDK/ndk-build
من مسار مشروعك، والمسارات إلى المصدر، والملفات الثنائية التي يتم تمريرها إلى أوامر الإصدار أقصر الآن، لأنه تم تمريرها بالنسبة إلى الدليل الحالي. هذا مفيد عند إنشاء مشروعات بها الكثير من ملفات المصدر، لتجنب القيود على الحدود القصوى طول سطر الأوامر الذي يدعمه نظام التشغيل المضيف. لم يطرأ أي تغيير على السلوك في حال استدعاءndk-build
من دليل فرعي في شجرة مشروعك، أو إذا ويمكنك تعريفNDK_PROJECT_PATH
للإشارة إلى دليل معين.
- تمت إضافة واجهات برمجة تطبيقات NDK الرسمية لنظام التشغيل Android 4.0 (المستوى 14)، ما يضيف ما يلي:
الميزات الأصلية على النظام الأساسي:
- ميزات تجريبية
-
يمكنك الآن إنشاء ملفات مصدر NDK على Windows بدون Cygwin عن طريق استدعاء
النص البرمجي
ndk-build.cmd
من سطر الأوامر من مسار مشروعك. تشير رسالة الأشكال البيانية يتعامل النص البرمجي تمامًا مع الوسيطات التي يستخدمها نصndk-build
الأصلي. تأتي حزمة Windows NDK مزودة ببرامج ثنائية تم إنشاؤها مسبقًا لنظام GNU Make وAwk والأدوات المطلوبة في الإصدار. لا يجب عليك تثبيت أي شيء آخر نظام إصدار مكتمل.ملاحظة مهمة: لا يعمل "
ndk-gdb
" على نظام التشغيل Windows، لذلك لا تزال بحاجة إلى استخدام Cygwin لتصحيح الأخطاء.لا تزال هذه الميزة تجريبية، لذا لا تتردد في تجربتها والإبلاغ عن المشاكل في قاعدة بيانات الأخطاء العامة أو المنتدى العام. جميع العيّنات واختبارات الوحدة التي تم شحنها مع NDK بنجاح باستخدام هذه الميزة.
- إصلاحات أخطاء مهمة
-
- يتم الآن تثبيت المكتبات المشتركة المستورَدة تلقائيًا في عملية التثبيت المستهدفة.
الموقع الجغرافي (
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 في المستندات غير المتوفّرة بصفتها واجهة برمجة تطبيقات ثابتة متوافقة، بدءًا من المستوى 9download-toolchain-sources.sh
: تم التعديل لتنزيل سلسلة الأدوات مصادر من android.googlesource.com، وهو الموقع الجديد لخوادم AOSP.- تمت إضافة بيئة تشغيل جديدة لدعم C++ باسم
gabi++
. مزيد من التفاصيل حول ذلك متاحة فيdocs/CPLUSPLUS-SUPPORT.html
المعدّلة. - تمت إضافة بيئة تشغيل جديدة لدعم C++ باسم
gnustl_shared
وتتوافق مع إلى إصدار المكتبة المشتركة من GNU libstdc++ v3 (ترخيص GPLv3). الاطّلاع على مزيد من المعلومات علىdocs/CPLUSPLUS-SUPPORT.html
- تمت إضافة دعم تقنية RTTI في بيئات تشغيل STLport C++ (لا يتوافق مع الاستثناءات).
- تم توفير إمكانية استخدام امتدادات ملفات متعددة في
LOCAL_CPP_EXTENSION
. بالنسبة على سبيل المثال، لتجميع كل منfoo.cpp
وbar.cxx
كمصادر لـ C++ ، يجب الإفصاح عما يلي:LOCAL_CPP_EXTENSION := .cpp .cxx
- تمت إزالة العديد من الرموز غير المرغوب فيها التي تم تصديرها من مكتبات النظام المشتركة في وقت الربط. المقدمة من NDK. يضمن ذلك إنشاء الرمز باستخدام سلسلة الأدوات المستقلة لا يخاطر بالاعتماد عن طريق الخطأ على رمز ABI غير ثابت (مثل أي libgcc.a يتغير في كل مرة تتغير فيها سلسلة الأدوات المستخدمة لإنشاء المنصة)
- تم تحديث عناوين EGL وOpenGLES Khronos لإتاحة المزيد من الإضافات. ملاحظة
أن هذا لا يؤدي إلى تغيير واجهات التطبيق الثنائية (NDK) للمكتبات المقابلة،
لأنه يجب فحص كل إضافة في وقت التشغيل بواسطة تطبيق العميل.
تعتمد الإضافات المتوفرة على جهازك الفعلي وبرامج تشغيل وحدة معالجة الرسومات، وليس إصدار النظام الأساسي الذي يعمل عليه الجهاز. يؤدي تغيير العنوان ببساطة إلى إضافة الثوابت والأنواع لتسهيل استخدام الإضافات عند استخدامها تم البحث باستخدام
eglGetProcAddress()
أوglGetProcAddress()
. تشير رسالة الأشكال البيانية تصف القائمة التالية الإضافات المتوافقة حديثًا:- GLES 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
- GLES 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)
لا يتضمن هذا الإصدار من NDK أي ميزات جديدة مقارنة بـ r6. إصدار r6b يعالج المشكلات التالية في إصدار r6:
- إصلاحات أخطاء مهمة
-
- تم إصلاح الإصدار عند استخدام
APP_ABI="armeabi x86"
. بُنى الهندسة المعمارية المتعددة. - تم إصلاح موقع برامج ثنائية STLport المصممة مسبقًا في حزمة إصدار NDK. هناك خطأ في النص البرمجي للتغليف أدى إلى وضعه في مكان غير صحيح.
- تم إصلاح استخدام
atexit()
في المكتبات المشتركة باستخدام الإصدار x86 المستقل. وسلسلة الأدوات. - تم إصلاح
make-standalone-toolchain.sh --arch=x86
. لقد اعتادت أن تفشل لنسخ ثنائيات GNU libstdc++ المناسبة إلى الموقع الصحيح. - تم إصلاح تحذيرات ربط سلسلة الأدوات المستقلة بشأن عدم توفّر التعريف
حجم الرمز
__dso_handle
(ARM فقط). - تم إصلاح ترتيب التضمين
$(SYSROOT)/usr/include
للإصدارات x86. راجع الخطأ للحصول على مزيد من المعلومات. - تم إصلاح تعريفي
ptrdiff_t
وsize_t
في للأنظمة الخاصة بالمعالج x86 عند استخدامها مع سلسلة الأدوات المستقلة x86.
- تم إصلاح الإصدار عند استخدام
Android NDK r6 (تموز (يوليو) 2011)
يشمل هذا الإصدار من NDK دعمًا لـ x86 ABI وتغييرات أخرى طفيفة.
للحصول على معلومات تفصيلية تصف التغييرات في هذا الإصدار، يُرجى قراءة
تم تضمين مستند واحد (CHANGES.HTML
) في حزمة NDK.
- ملاحظات عامة:
-
- يتيح هذا التحديث استخدام واجهة x86 ABI التي تتيح لك إنشاء رمز برمجي للجهاز.
تعمل على أجهزة Android المتوافقة المستندة إلى معالجات x86. الميزات الرئيسية لمعالجات x86
تتضمن سلاسل الأدوات الخاصة بـ x86 وعناوين النظام والمكتبات
دعم تصحيح الأخطاء. للحصول على جميع التفاصيل المتعلقة بدعم x86،
اطّلِع على
docs/CPU-X86.html
في حزمة NDK.يتم تلقائيًا إنشاء رمز للأجهزة المستنِدة إلى معالِج البيانات ARM، إلا أنه يمكنك إضافة الرموز x86 إلى تعريف
APP_ABI
في ملفApplication.mk
المطلوب إنشاؤه للأنظمة الأساسية x86. على سبيل المثال، السطر التالي يوجِّه تعليمات إلىndk-build
لإنشاء التعليمات البرمجية لثلاثة واجهات ABI مميزة:APP_ABI := armeabi armeabi-v7a x86
ما لم تكن تعتمد على مصادر التجميع المستندة إلى معالِج البيانات ARM، فلا تحتاج إلى لمس ملفات
Android.mk
لإنشاء رمز الجهاز x86. - يمكنك إنشاء سلسلة أدوات x86 مستقلة باستخدام
--toolchain=x86-4.4.3
عند الاتصال بـmake-standalone-toolchain.sh
. عرض لمزيد من التفاصيل، يُرجىdocs/STANDALONE-TOOLCHAIN.html
. - تتيح لك أداة
ndk-stack
الجديدة ترجمة عمليات تتبُّع تسلسل استدعاء الدوال البرمجية باللغةlogcat
التي يتم إنشاؤها باستخدام رمز برمجي أصلي تترجم الأداة عناوين التعليمات إلى تنسيق سهل القراءة يحتوي على أشياء مثل كالدالة وملف المصدر ورقم السطر المقابل لكل إطار مكدس. لمزيد من المعلومات ومثال على الاستخدام، يمكنك الاطّلاع علىdocs/NDK-STACK.html
.
- يتيح هذا التحديث استخدام واجهة x86 ABI التي تتيح لك إنشاء رمز برمجي للجهاز.
تعمل على أجهزة Android المتوافقة المستندة إلى معالجات x86. الميزات الرئيسية لمعالجات x86
تتضمن سلاسل الأدوات الخاصة بـ x86 وعناوين النظام والمكتبات
دعم تصحيح الأخطاء. للحصول على جميع التفاصيل المتعلقة بدعم x86،
اطّلِع على
- تغييرات أخرى:
- تم إيقاف
arm-eabi-4.4.0
، الذي تم إيقافه منذ NDK r5، من توزيع NDK.
Android NDK r5c (حزيران (يونيو) 2011)
لا يتضمن هذا الإصدار من NDK أي ميزات جديدة مقارنةً بـ r5b. إصدار R5c يعالج المشكلات التالية في إصدار r5b:
- إصلاح الأخطاء المهمة:
-
ndk-build
: تم إصلاح خطأ نادر كان يظهر عند محاولة تنفيذ إجراء موازٍ إصدارات المشروعات التي يمكن تصحيح الأخطاء بها.- تم إصلاح خطأ إملائي كان يمنع
LOCAL_WHOLE_STATIC_LIBRARIES
من العمل. بشكل صحيح باستخدام سلسلة الأدوات الجديدة وإضافة الوثائق الخاصة بذلك فيdocs/ANDROID-MK.html
- تم إصلاح الخطأ الذي تسبَّب في تعطُّل الرمز المرتبط بـ "
gnustl_static
" عند التشغيل على الإصدارات الأقدم من المستوى 8 لواجهة برمجة التطبيقات (Android 2.2). ndk-gdb
: تم إصلاح الخطأ الذي تسبَّب في حدوث خطأ في التقسيم عند تصحيح الأخطاء الإصدار 3.0 من نظام التشغيل Android أو الأجهزة الأحدث.<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);
- تم تعديل النظام الثنائي لمكتبة C من أجل مستوى واجهة برمجة التطبيقات 9 (الإصدار 2.3 من نظام التشغيل Android) ليتم عرضه بشكل صحيح على
الدوال الجديدة المتعلقة بوقت الربط التي تمت إضافتها في مستوى واجهة برمجة التطبيقات هذا (على سبيل المثال،
pthread_rwlock_init
).
- تحسينات وإصلاحات طفيفة:
-
- ترتبط ملفات الكائنات دائمًا بالترتيب الذي تظهر به
LOCAL_SRC_FILES
لم يكن هذا هو الحال في السابق لأن الملفات كانت مجمّعة حسب إضافات المصدر بدلاً من ذلك - عند تعذّر
import-module
، يطبع الآن قائمة الأدلة التي نتائج البحث. ويكون ذلك مفيدًا للتأكد من أن تعريفNDK_MODULE_PATH
التي يستخدمها نظام التصميم بشكل صحيح. - عندما تنجح
import-module
، فإنها تطبع الآن الدليل الذي يحتوي على تم العثور على الوحدة في السجل (مرئية فيNDK_LOG=1
). - تمت زيادة سرعة إصدار التطبيقات التي يمكن تصحيح الأخطاء فيها عند توفّر عدد كبير جدًا منها. من تضمين الأدلة في المشروع.
ndk-gdb
: رصد أفضل لحالات تعذُّر التشغيل (adb shell
) وتحسين الأداء رسائل الخطأ.<pthread.h>
: تم إصلاح تعريفPTHREAD_RWLOCK_INITIALIZER
للمستوى 9 من واجهة برمجة التطبيقات (Android 2.3) والإصدارات الأحدث.- تم إصلاح مشكلة إمكانية استيراد الوحدة لنفسها، ما يؤدي إلى حدوث تكرار لا نهائي في إنشاء GNU
- تم إصلاح الخطأ الذي تسبَّب في تعذُّر إنشاء الإصدار في حال ضبط السياسة
LOCAL_ARM_NEON
على صحيح (خطأ إملائي فيbuild/core/build-binary.mk
). - تم إصلاح خطأ كان يمنع تجميع ملفات
.s
(.S
ملف لا بأس به).
- ترتبط ملفات الكائنات دائمًا بالترتيب الذي تظهر به
Android NDK r5b (كانون الثاني/يناير 2011)
لا يتضمن هذا الإصدار من NDK أي ميزات جديدة مقارنة بـ r5. إصدار r5b يعالج المشكلات التالية في إصدار r5:
- تتطلب البرامج الثنائية r5 استخدام glibc 2.11، ولكن يتم إنشاء البرامج الثنائية r5b باستخدام جدول خاص التي تستهدف glibc 2.7 أو أعلى بدلاً من ذلك. تعمل البرامج الثنائية لسلسلة أدوات Linux الآن على نظام التشغيل Ubuntu 8.04 أو إصدار أحدث.
- إصلاح خطأ في المحول البرمجي في سلسلة أدوات arm-linux-androideabi-4.4.3. أنشأ البرنامج الثنائي السابق تسلسلات تعليمات إبهام غير صالحة عندما التعامل مع الأحرف الموقّعة.
- تضيف الوثائق الناقصة "gnustl_static" لـ APP_STL، تتيح لك الربط إصدار مكتبة ثابت من GNU libstdc++. الـ
- تم إصلاح المشاكل التالية البالغ عددها
ndk-build
:- يشير هذا المصطلح إلى خطأ أدى إلى إنشاء ملفات تبعية غير متسقة عند حدث خطأ في التحويل البرمجي على نظام التشغيل Windows. هذا منعت البناء الصحيح بعد تم إصلاح الخطأ في رمز المصدر.
- يشير هذا المصطلح إلى خطأ خاص بـ Cygwin حيث يتم استخدام مسارات قصيرة جدًا تثبيت Android NDK أو مسار المشروع الذي أدى إلى إنشاء ملفات تبعية غير صالحة. أدى ذلك إلى إنشاء مستحيل.
- خطأ إملائي منع مكتبة cpufeatures من العمل بشكل صحيح مع سلسلة أدوات NDK الجديدة.
- يتم البناء في Cygwin بشكل أسرع من خلال تجنُّب المكالمات إلى
cygpath -m
من GNU Make لكل ملف مصدر أو كائن، مما تسبب في مشكلات تضم أشجار مصدر كبيرة جدًا. في حالة عدم عمل ذلك بشكل صحيح، حددNDK_USE_CYGPATH=1
في البيئة لاستخدامcygpath -m
مرة أخرى. - يُبلغ تثبيت Cygwin المستخدم الآن بمسارات التثبيت غير الصالحة التي تحتوي على مسافات. كان المسار غير صالح في السابق خطأ بشان تقديم شكوى بشأن إصدار غير صحيح من GNU Make، حتى إذا كانت تم تثبيت الملف الأيمن.
- تم إصلاح خطأ إملائي كان يمنع متغيّر البيئة
NDK_MODULE_PATH
من يعمل بشكل صحيح عند كان يحتوي على أدلة متعددة مفصولة بنقطتين. - يحتوي النص البرمجي "
prebuilt-common.sh
" على إصلاحات لفحص المحول البرمجي للإصدار 64 بت التي تم إنشاؤها آليًا، بدلاً من الاعتماد على علامة المضيف، يسمح لسلسلة الأدوات 32 بت بإعادة البناء بشكل صحيح على Snow Leopard. سلسلة الأدوات الخاصة بإعادة إنشاء النصوص البرمجية الآن أيضًا يدعم باستخدام سلسلة أدوات مضيف 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)
يتضمن هذا الإصدار من NDK العديد من واجهات برمجة التطبيقات الجديدة، والتي تم تعريف معظمها على
تطوير الألعاب والتطبيقات المشابهة التي تستفيد من
من الرموز البرمجية الأصلية. باستخدام واجهات برمجة التطبيقات، يستطيع المطوّرون الوصول مباشرةً إلى الأحداث والملفات الصوتية
إدارة الرسومات والنوافذ، والأصول، والتخزين. يمكن للمطوّرين أيضًا تنفيذ
دورة حياة تطبيقات Android في الرموز البرمجية الأصلية بمساعدة من
صف واحد (NativeActivity
). للحصول على معلومات تفصيلية تصف التغييرات
في هذه الدورة
إصدار المستند، يُرجى قراءة المستند CHANGES.HTML
المضمّن في مستند NDK الذي تم تنزيله
طرد.
- ملاحظات عامة:
-
- تتيح إضافة الأنشطة الأصلية، ما يسمح لك بتنفيذ دورة حياة تطبيق Android في التعليمات البرمجية الأصلية.
- تتيح هذه الإضافة الدعم الأصلي لما يلي:
- النظام الفرعي للإدخال (مثل لوحة المفاتيح وشاشة اللمس)
- الوصول إلى بيانات جهاز الاستشعار (مقياس التسارع والبوصلة والجيروسكوب وغير ذلك)
- واجهات برمجة التطبيقات لحلقة الأحداث لانتظار إجراءات مثل أحداث الإدخال وأدوات الاستشعار.
- النظام الفرعي للنوافذ والسطح
- واجهات برمجة تطبيقات للصوت استنادًا إلى معيار OpenSL ES الذي يتيح التشغيل والتسجيل بالإضافة إلى التحكّم في التأثيرات الصوتية للنظام الأساسي
- إمكانية الوصول إلى مواد العرض المجمَّعة في ملف
.apk
- يتضمّن سلسلة أدوات جديدة (استنادًا إلى الإصدار 4.4.3 من GCC)، وتعمل على إنشاء رموز برمجية أفضل
أيضًا الآن
كمجمع مستقل
للأشخاص الذين يرغبون في بناء أغراضهم باستخدام
./configure && make
عرض docs/STANDALONE-TOOLCHAIN.html لمزيد من التفاصيل. وما زالت القيم الثنائية للإصدار 4.4.0 من GCC المقدمة، ولكن تمت إزالة البرامج الثنائية 4.2.1. - يضيف دعمًا للمكتبات الثابتة والمشتركة المنشأة مسبقًا (docs/PREBUILTS.html) وحدة التصدير والاستيراد لتسهيل مشاركة وحدات الجهات الخارجية وإعادة استخدامها (docs/IMPORT-MODULE.html يشرح السبب).
- توفّر تنفيذًا تلقائيًا لـ C++ STL (استنادًا إلى STLport) كوحدة مساعدة. أُنشأها جون هنتر، الذي كان متخصصًا يمكن استخدامها إما كمكتبة ثابتة أو مشتركة (تتوفّر التفاصيل وأمثلة الاستخدام المصادر/android/stlport/README). مصمّمة مسبقًا تعتبر أيضًا القيم الثنائية لـ STLport (الثابتة أو المشتركة) وGNU libstdc++ (الثابتة فقط) المقدمة إذا اخترت التجميع مقابل تلك المكتبات بدلاً من تنفيذ C++ STL الافتراضي. لا تتوفر استثناءات C++ وRTTI في تنفيذ STL التلقائي. لمزيد من المعلومات، المعلومات، راجع docs/CPLUSPLUS-SUPPORT.HTML.
- يتضمّن ذلك تحسينات على مكتبة مساعد "
cpufeatures
" التي من شأنها تحسين الأداء. الإعلام عن نوع وحدة المعالجة المركزية (CPU) (أبلغت بعض الأجهزة سابقًا عن وحدة المعالجة المركزية ARMv7 عندما كان الجهاز ARMv6). أر أن توصي بالمطوّرين الذين يستخدمون هذه المكتبة لإعادة إنشاء تطبيقاتهم حمِّلها إلى Google Play للاستفادة من التحسينات. - تضيف مكتبة EGL التي تتيح لك إنشاء زخارف OpenGL ES وإدارتها
- إضافة نماذج تطبيقات جديدة،
native-plasma
native-activity
, لتوضيح كيفية كتابة نشاط أصلي. - تضمين العديد من إصلاحات الأخطاء والتحسينات الصغيرة الأخرى؛ راجع docs/CHANGES.html المزيد قائمة مفصلة بالتغييرات.
Android NDK r4b (حزيران (يونيو) 2010)
- ملاحظات NDK r4b:
-
يتضمن إصلاحات لعدة مشكلات في إصدار NDK وتصحيح النصوص البرمجية - إذا كنت تستخدم الإصدار NDK r4، فنحن نوصي بتنزيل إصدار NDK r4b. للحصول على تفاصيل معلومات تصف التغييرات في هذا الإصدار، يُرجى قراءة مستند CHANGES.TXT تضمينها في حزمة NDK التي تم تنزيلها.
- ملاحظات عامة:
-
- يوفِّر هذا الإصدار نظام إنشاء مبسَّطًا من خلال إصدار
ndk-build
الجديد. الأمر. - إتاحة إمكانية تصحيح الأخطاء الأصلية بسهولة لرمز الجهاز الذي تم إنشاؤه في مرحلة الإنتاج
الأجهزة من خلال الأمر
ndk-gdb
الجديد. - إضافة واجهة تطبيق ثنائية (ABI) جديدة خاصة بنظام التشغيل Android لبُنى وحدة المعالجة المركزية (CPU) المستنِدة إلى معالجات ARM
armeabi-v7a
توسّع واجهة التطبيق الثنائية (ABI) الجديدة نطاقarmeabi
واجهة التطبيق الثنائية (ABI) الحالي ليشمل تتضمّن هذه الإضافات الخاصة بمجموعة تعليمات وحدة المعالجة المركزية (CPU):- تعليمات رائعة
- تعليمات FPU لأجهزة VFP (VFPv3-D16)
- دعم اختياري للميزات الأساسية ARM Advanced SIMD (NEON) GCC وVFPv3-D32 متوافق مع أجهزة، مثل Verizon Droid من Motorola وGoogle Nexus One و آخرون.
- تضيف مكتبة
cpufeatures
الثابتة الجديدة (مع مصادر) التي تسمح ميزات وحدة المعالجة المركزية (CPU) للجهاز المضيف في وقت التشغيل. على وجه التحديد، يمكن للتطبيقات والتحقق من توفر التوافق مع ARMv7-A وكذلك دعم VFPv3-D32 وNEON، ثم تقديم مسارات التعليمات البرمجية حسب الحاجة. - تضيف نموذج تطبيق،
hello-neon
، يوضح كيفية استخدامcpufeatures
للتحقق من ميزات وحدة المعالجة المركزية (CPU) ثم توفير واجهة محسَّنة مسار الرمز باستخدام رموز NEON، إذا كانت متوافقة مع وحدة المعالجة المركزية (CPU). - تتيح لك هذه الميزة إنشاء رمز جهاز لإحدى مجموعات التعليمات المتوافقة أو كلتيهما.
بواسطة NDK. على سبيل المثال، يمكنك إنشاء كل من بنيتي ARMv5 وARMv7-A في
نفس الوقت وتخزين كل شيء في النسخة النهائية
.apk
- للتأكد من أن تطبيقاتك غير متاحة للمستخدمين إلا إذا كانت أجهزتهم قادرة على تشغيلها، فإن Google Play الآن يصفي التطبيقات حسب التعليمات المضمنة في طلبك - لا يلزم اتخاذ أي إجراء من جانبك لتمكين التصفية. بالإضافة إلى ذلك، يتحقق نظام Android نفسه أيضًا تطبيقك أثناء التثبيت، ولا يسمح بمواصلة التثبيت إلا في حالة التطبيق أيضًا مكتبة يتم تجميعها من أجل بنية وحدة المعالجة المركزية (CPU) للجهاز.
- يدعم الإصدار 2.2 من نظام التشغيل Android، بما في ذلك واجهة برمجة تطبيقات ثابتة وجديدة للوصول إلى وحدات البكسل.
المخزن المؤقت لـ
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)
تم إصداره في الأصل باسم "الإصدار 1 من Android 1.6 NDK".
- ملاحظات عامة:
-
- يتيح هذا التحديث استخدام المكتبة الأصلية OpenGL ES 1.1.
- إضافة نموذج تطبيق،
san-angeles
، يعرض رسومات ثلاثية الأبعاد من خلال واجهات برمجة تطبيقات OpenGL ES الأصلية، مع إدارة مراحل النشاط باستخدام كائنGLSurfaceView
.
Android NDK r1 (حزيران (يونيو) 2009)
تم إصداره في الأصل باسم "الإصدار 1 من Android 1.5 NDK".
- ملاحظات عامة:
-
- يشمل دعم التجميع (GCC) لتعليمات ARMv5TE، بما في ذلك Thumb-1 على التعليمات
- يتضمن عناوين النظام لواجهات برمجة التطبيقات الأصلية الثابتة والوثائق والنماذج التطبيقات.