مساعدة نيون

يدعم NDK ARM Advanced SIMD، والمعروفة باسم Neon، وهي إضافة اختيارية لمجموعة التعليمات لكل من ARMv7 وARMv8. يوفر Neon تعليمات عددية/متجهات وعمليات تسجيل (تتم مشاركتها مع FPU) مثل MMX/SSE/3DNow! في عالم x86.

جميع أجهزة Android المستندة إلى ARMv8 ("arm64") تتوافق مع تطبيق Neon. تتوافق تقريبًا جميع أجهزة Android المستندة إلى ARMv7 ("32 بت") مع تطبيق Neon، بما في ذلك جميع الأجهزة التي تم شحنها بالمستوى 21 من واجهة برمجة التطبيقات أو الإصدارات الأحدث. ويعمل NDK على تمكين Neon بشكل افتراضي لكليهما.

إذا كنت تستهدف أجهزة قديمة جدًا، يمكنك فلترة الأجهزة غير المتوافقة على Google Play Console. يمكنك أيضًا استخدام وحدة التحكم لتطبيقك لمعرفة عدد الأجهزة التي سيؤثر ذلك فيها.

وبدلاً من ذلك، يمكن للرمز 32 بت بدلاً من ذلك رصد وقت التشغيل للتأكّد من إمكانية تشغيل رمز النيون على الجهاز المستهدف. ويمكن للتطبيق إجراء هذا الفحص باستخدام أي من الخيارات المذكورة في ميزات وحدة المعالجة المركزية.

يمكنك استخدام أساسيات نيون في الرموز C وC++ للاستفادة من إضافة SIMD المتقدمة. يوفِّر دليل مبرمج نيون لتقنية Armv8-A مزيدًا من المعلومات حول أساسيات نيون وبرمجة نيون بشكل عام.

زيادة التشويق

إيقاف Neon على مستوى العالم

إنشاء ndk

لا يتيح ndk-build إيقاف Neon على مستوى العالم. لإيقاف تطبيق Neon بالكامل، يمكنك تطبيق الخطوات لكل وحدة على كل وحدة في تطبيقك.

الإنشاء

تجاوز الرقم -DANDROID_ARM_NEON=ON عند استدعاء CMake في حال إنشاء المحتوى باستخدام Android Studio/Gradle، يمكنك ضبط الخيار التالي في إصدار Build.gradle:

android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_ARM_NEON=OFF"
            }
        }
    }
}

إيقاف Neon لكل وحدة

إنشاء ndk

لإنشاء جميع ملفات المصدر في وحدة إنشاء ndk بدون Neon، أضف ما يلي إلى تعريف الوحدة في Android.mk:

LOCAL_ARM_NEON := false

الإنشاء

لإنشاء جميع ملفات المصدر في هدف CMake بدون نيون، أضف ما يلي إلى ملف CMakeLists.txt:

if(ANDROID_ABI STREQUAL armeabi-v7a)
    set_target_properties(${TARGET} PROPERTIES COMPILE_FLAGS -mfpu=vfpv3-d16)
endif()

حيث يتم استبدال ${TARGET} باسم مكتبتك.

التوافق مع أنظمة تشغيل x86 المختلفة

يتوافق تطبيق NDK مع إمكانية التجميع عبر الأنظمة الأساسية لوظائف شريحة SIM (Neon) ARM (النيون) الحالية عبر النظام الأساسي في رمز x86 SSE، وذلك باستخدام الجهة الخارجية NEON_2_SSE.h. لمزيد من المعلومات حول هذا الموضوع، يمكنك الاطّلاع على من ARM NEON حتى Intel SSE-نصائح وحيل حل النقل التلقائي.

نموذج التعليمات البرمجية

توفّر عيّنة hello-neon مثالاً على كيفية استخدام مكتبة cpufeatures وسمات Neon في الوقت نفسه. ينفِّذ هذا النموذج معيارًا صغيرًا لتكرار فلتر FIR مع إصدار C وإصدار محسَّن من النيون للأجهزة التي تتوافق مع Neon.