يمكنك إضافة رمز C وC++ البرمجي إلى مشروع Android من خلال وضع الرمز في دليل
cpp في وحدة مشروعك. عند إنشاء مشروعك، يتم تجميع هذا
الرمز البرمجي في مكتبة مجمَّعة من رموز برمجية أصلية يمكن أن تدرجها Gradle في حزمة تطبيقك.
ويمكن لرمز Java أو Kotlin البرمجي بعد ذلك طلب الدوال في مكتبتك المجمَّعة من رموز برمجية أصلية
من خلال واجهة Java Native Interface (JNI). لمزيد من المعلومات عن استخدام إطار عمل JNI
، يُرجى قراءة مقالة نصائح JNI لنظام Android.
يتوافق "استوديو Android" مع CMake، وهو مفيد للمشاريع من عدّة منصات.
يتوافق "استوديو Android" أيضًا مع ndk-build، الذي
قد يكون أسرع من CMake ولكنه لا يتوافق إلا مع Android. لا يتوافق حاليًا استخدام كلّ من CMake وndk-build في الوحدة نفسها.
لاستيراد مكتبة ndk-build حالية إلى مشروعك في "استوديو Android"
، تعرَّف على كيفية
ربط Gradle بمشروع مكتبتك المجمَّعة من رموز برمجية أصلية.
توضّح لك هذه الصفحة كيفية إعداد "استوديو Android" باستخدام أدوات الإنشاء اللازمة، وإنشاء مشروع جديد يتوافق مع C/C++ ، وإضافة ملفات C/C++ جديدة إلى مشروعك.
إذا كنت تريد بدلاً من ذلك إضافة رمز برمجي أصلي إلى مشروع حالي، اتّبِع الخطوات التالية:
-
أنشِئ ملفات مصدر جديدة للرموز البرمجية الأصلية وأضِف
الملفات إلى مشروعك في "استوديو Android".
- يمكنك تخطّي هذه الخطوة إذا كان لديك رمز برمجي أصلي أو إذا كنت تريد استيراد مكتبة مجمَّعة من رموز برمجية أصلية.
-
اضبط CMake لـ
إنشاء رمز المصدر الأصلي في مكتبة. يكون نص الإنشاء البرمجي هذا مطلوبًا
إذا كنت تستورد مكتبات مجمَّعة أو مكتبات منصة
وتربطها بها.
- إذا كان لديك مكتبة مجمَّعة من رموز برمجية أصلية حالية تحتوي على نص
CMakeLists.txtالبرمجي أو تستخدمndk-buildوتتضمّن نصAndroid.mkالبرمجي، يمكنك تخطّي هذه الخطوة.
- إذا كان لديك مكتبة مجمَّعة من رموز برمجية أصلية حالية تحتوي على نص
-
اضبط
Gradle من خلال توفير مسار لملف نص CMake أو
ndk-buildالبرمجي. يستخدم Gradle نص الإنشاء البرمجي لاستيراد رمز المصدر إلى مشروعك في "استوديو Android" وتجميع مكتبتك المجمَّعة من رموز برمجية أصلية في التطبيق.
بعد ضبط مشروعك، يمكنك الوصول إلى الدوال الأصلية من
رمز Java أو Kotlin البرمجي باستخدام إطار عمل JNI. لإنشاء تطبيقك وتشغيله،
انقر على تشغيل
.
ملاحظة: إذا كان مشروعك الحالي يستخدم الأداة المتوقّفة نهائيًا
ndkCompile، عليك الانتقال إلى استخدام CMake أو
ndk-build.
تنزيل حزمة NDK وأدوات الإنشاء
لتجميع الرمز البرمجي الأصلي لتطبيقك وتصحيح أخطائه، تحتاج إلى المكوّنات التالية:
- حزمة Android Native Development Kit (NDK): هي مجموعة أدوات تتيح لك استخدام رمز C وC++ البرمجي مع Android. توفر حزمة NDK مكتبات منصة تتيح لك إدارة الأنشطة الأصلية والوصول إلى مكونات الجهاز الفعلي، مثل أجهزة الاستشعار والإدخال باللمس.
-
CMake: هي أداة إنشاء خارجية تعمل جنبًا إلى جنب مع Gradle لإنشاء مكتبتك المجمَّعة من رموز برمجية أصلية. لست بحاجة إلى هذا المكوّن إذا كنت تخطط لاستخدام
ndk-buildفقط. - LLDB: هو برنامج تصحيح الأخطاء في "استوديو Android" الذي يصحّح أخطاء الرمز البرمجي الأصلي.
لمزيد من المعلومات عن تثبيت هذه المكوّنات، يُرجى الاطّلاع على مقالة تثبيت حزمة NDK وCMake وضبطهما.
إنشاء مشروع جديد يتوافق مع C/C++
لإنشاء مشروع جديد يتوافق مع الرمز البرمجي الأصلي، تكون العملية مشابهة لـ إنشاء أي مشروع آخر في "استوديو Android"، ولكن مع خطوة إضافية:
- في قسم اختيار مشروعك في المعالج، اختر نوع مشروع Native C++.
- انقر على التالي.
- أكمِل جميع الحقول الأخرى في القسم التالي من المعالج.
- انقر على التالي.
-
في قسم تخصيص دعم C++ في المعالج، يمكنك تخصيص
مشروعك باستخدام حقل معيار C++.
- استخدِم القائمة المنسدلة لاختيار معيار C++ الذي تريد استخدامه. يؤدي اختيار سلسلة الأدوات الافتراضية إلى استخدام إعداد CMake الافتراضي.
- انقر على إنهاء.
بعد أن ينتهي "استوديو Android" من إنشاء مشروعك الجديد، افتح لوحة المشروع من الجانب الأيمن من بيئة التطوير المتكاملة (IDE) واختَر طريقة العرض Android من القائمة. كما هو موضّح في الشكل 1، يضيف "استوديو Android" مجموعة cpp:
الشكل 1: مجموعات طريقة عرض Android لمصادر الرموز البرمجية الأصلية ونصوص الإنشاء البرمجية الخارجية
ملاحظة: لا تعكس طريقة العرض هذه التسلسل الهرمي الفعلي للملفات على القرص، ولكنها تجمع الملفات المتشابهة لتسهيل التنقّل في مشروعك.
مجموعة cpp هي المكان الذي يمكنك فيه العثور على جميع ملفات مصدر الرموز البرمجية الأصلية
، والعناوين، ونصوص الإنشاء البرمجية لـ CMake أو ndk-build، والمكتبات المجمَّعة
التي تشكّل جزءًا من مشروعك. بالنسبة إلى المشاريع الجديدة، ينشئ "استوديو Android"
ملف مصدر C++ نموذجيًا، native-lib.cpp، ويضعه
في الدليل src/main/cpp/ لوحدة تطبيقك. يوفّر رمز النموذج البرمجي هذا دالة C++ بسيطة، stringFromJNI() تعرض السلسلة "Hello from C++". تعرَّف على كيفية إضافة ملفات مصدر إضافية إلى مشروعك في القسم الذي يتناول كيفية
إنشاء ملفات مصدر جديدة للرموز البرمجية الأصلية.
على غرار كيفية توجيه ملفات build.gradle نظام Gradle بشأن كيفية إنشاء
تطبيقك، يتطلب CMake وndk-build نص إنشاء برمجيًا لمعرفة كيفية إنشاء
مكتبتك المجمَّعة من رموز برمجية أصلية. بالنسبة إلى المشاريع الجديدة، ينشئ "استوديو Android" نص CMake البرمجي
،CMakeLists.txt ويضعه في الدليل الجذري لوحدتك.
لمزيد من المعلومات عن محتويات نص الإنشاء البرمجي هذا، يُرجى قراءة مقالة ضبط CMake.
إنشاء تطبيق النموذج وتشغيله
عند النقر على تشغيل
، ينشئ "استوديو Android" تطبيقًا ويشغّله يعرض النص "Hello from C++" على جهاز Android أو المحاكي. يصف الملخّص التالي الأحداث التي
تحدث لإنشاء تطبيق النموذج وتشغيله:
- يطلب Gradle نص الإنشاء البرمجي الخارجي،
CMakeLists.txt. - يتّبع CMake الأوامر الواردة في نص الإنشاء البرمجي لتجميع ملف مصدر C++
، وهو
native-lib.cpp، في مكتبة كائن مشترك ويسمّيهاlibnative-lib.so. ثم يدرجها Gradle في حزمة التطبيق. - أثناء وقت التشغيل، تحمّل
MainActivityفي التطبيق المكتبة المجمَّعة من رموز برمجية أصلية باستخدامSystem.loadLibrary(). تتوفّر الآن الدالة الأصلية للمكتبة،stringFromJNI()، للتطبيق. -
MainActivity.onCreate()تطلبstringFromJNI()، التي تعرض"Hello from C++"وتستخدمها لتعديلTextView.
للتأكّد من أنّ Gradle يدرج المكتبة المجمَّعة من رموز برمجية أصلية في حزمة التطبيق، استخدِم أداة تحليل ملفات APK:
- انقر على إنشاء > إنشاء حِزم/حِزم APK > إنشاء حِزم APK.
- انقر على إنشاء > تحليل حزمة APK.
- اختَر حزمة APK أو AAB من الدليل
app/build/outputs/وانقر على موافق. - كما هو موضّح في الشكل 2، يمكنك الاطّلاع على
libnative-lib.soفي نافذة أداة تحليل ملفات APK ضِمنlib/<ABI>/.
الشكل 2: تحديد موقع مكتبة مجمَّعة من رموز برمجية أصلية باستخدام أداة APK Analyzer
نصيحة: إذا كنت تريد تجربة تطبيقات Android أخرى تستخدم رموزًا برمجية أصلية، انقر على ملف > جديد > استيراد نموذج واختَر مشروعًا نموذجيًا من قائمة Ndk.
إنشاء ملفات مصدر جديدة لـ C/C++
لإضافة ملفات مصدر جديدة لـ C/C++ إلى مشروع حالي، اتّبِع الخطوات التالية:
- إذا لم يكن لديك دليل
cpp/في مجموعة المصادر الرئيسية لتطبيقك، أنشِئ واحدًا على النحو التالي: - افتح لوحة المشروع في الجانب الأيمن من بيئة التطوير المتكاملة (IDE) و اختر طريقة العرض المشروع من القائمة.
- انتقِل إلى your-module > src.
- انقر بزر الماوس الأيمن على دليل main واختَر جديد > دليل.
- أدخِل
cppكاسم للدليل وانقر على موافق. - انقر بزر الماوس الأيمن على الدليل
cpp/واختَر جديد > ملف مصدر C/C++. - أدخِل اسمًا لملف المصدر، مثل
native-lib. - من قائمة النوع ، اختَر امتداد الملف
لملف المصدر، مثل
.cpp.- انقر على تعديل أنواع الملفات
لإضافة أنواع ملفات أخرى إلى القائمة، مثل
.cxxأو.hxx. في مربّع الحوار امتدادات الملفات الجديدة الذي يظهر، اختَر امتداد ملف آخر من قائمتَي امتداد المصدر وامتداد العنوان وانقر على موافق.
- انقر على تعديل أنواع الملفات
- لإنشاء ملف العنوان، حدِّد مربّع الاختيار إنشاء ملف رأس مرتبط.
- انقر على موافق.
بعد إضافة ملفات C/C++ جديدة إلى مشروعك، لا يزال عليك ضبط CMake لتضمين الملفات في مكتبتك المجمَّعة من رموز برمجية أصلية.
مراجع إضافية
لمزيد من المعلومات عن دعم رمز C/C++ البرمجي في تطبيقك، جرِّب المرجع التالي.
اختبارات الرموز
- إنشاء مشروع Hello-CMake باستخدام "استوديو Android" يوضّح لك هذا الدرس التطبيقي حول الترميز كيف تستخدم نموذج CMake في "استوديو Android" لبدء تطوير مشروع Android NDK.