إضافة رمز C وC++ إلى مشروعك

أضِف رمز C وC++ إلى مشروع Android عن طريق وضع الرمز في دليل cpp في وحدة مشروعك. عند إنشاء مشروعك، يتم تجميع هذا الرمز في مكتبة أصلية يمكن لنظام Gradle أن يجمع التطبيق مع تطبيقك. ويمكن عندئذٍ لرمز Java أو Kotlin استدعاء دوال في مكتبتك الأصلية من خلال واجهة Java الأصلية (JNI). لمزيد من المعلومات عن استخدام إطار عمل JNI ، يُرجى الاطّلاع على نصائح لاستخدام JNI في Android.

يتوافق "استوديو Android" مع أداة CMake، وهي مفيدة للمشاريع على عدّة منصات. يتوافق "استوديو Android" أيضًا مع أداة ndk-build التي يمكن أن تكون أسرع من تكنولوجيا CMake، لكنّها تتوافق مع Android فقط. لا يمكن حاليًا استخدام كلّ من CMake و ndk-build في الوحدة نفسها.

لاستيراد مكتبة ndk-build حالية إلى مشروعك في IDE "استوديو Android"، تعرَّف على كيفية ربط Gradle بمشروع مكتبتك الأصلية.

توضّح لك هذه الصفحة كيفية إعداد "استوديو Android" باستخدام أدوات التصميم اللازمة وإنشاء مشروع جديد باستخدام دعم C/C++ وإضافة ملفات C/C++ جديدة إلى مشروعك.

وبدلاً من ذلك، إذا أردت إضافة رمز برمجي أصلي إلى مشروع حالي، اتّبِع الخطوات التالية:

  1. أنشئ ملفات مصدر أصلية جديدة وأضِف الملفات إلى مشروعك على Android Studio.
    • يمكنك تخطّي هذه الخطوة إذا كان لديك رمز برمجي أصلي أو إذا كنت تريد استيراد مكتبة أصلية مُنشأة مسبقًا.
  2. يجب ضبط CMake لإنشاء رمز المصدر الأصلي في مكتبة. يجب استخدام نص البرمجة هذا لإنشاء التطبيق إذا كنت تستورد مكتبات مبنية مسبقًا أو مكتبات منصّة وتربطها بتطبيقك.
    • إذا كانت لديك مكتبة أصلية حالية تتضمّن نص برمجي لإنشاء CMakeLists.txt أو تستخدم ndk-build وتتضمّن نص برمجي لإنشاء Android.mk ، يمكنك تخطّي هذه الخطوة.
  3. إعداد Gradle من خلال توفير مسار إلى ملف نص برمجي CMake أو ndk-build يستخدم Gradle نصّ إنشاء المشروع لاستيراد رمز المصدر إلى مشروعك على "استوديو Android" وتجميع مكتبتك الأصلية في التطبيق.

بعد ضبط إعدادات مشروعك، يمكنك الوصول إلى دوالّك الأصلية من код Java أو Kotlin باستخدام إطار عمل JNI. لإنشاء تطبيقك وتشغيله، انقر على تشغيل تشغيل التطبيق ثم تشغيله من شريط القوائم.

ملاحظة: إذا كان مشروعك الحالي يستخدم أداة ndkCompile المتوقّفة نهائيًا، انتقِل إلى استخدام أداة CMake أو ndk-build.

تنزيل حِزم NDK وأدوات الإنشاء

لتجميع الرمز البرمجي الأصلي لتطبيقك وتصحيح أخطاءه، تحتاج إلى المكونات التالية:

  • مجموعة تطوير البرامج الأصلية لنظام Android (NDK): هي مجموعة أدوات تتيح لك استخدام رمز C وC++ مع نظام Android. يوفّر NDK مكتبات المنصة التي تتيح لك إدارة الأنشطة المكتوبة بلغة برمجة برمجة تطبيقات Android الأصلية والوصول إلى مكوّنات الجهاز المادية، مثل أجهزة الاستشعار وinput اللمس.
  • CMake: أداة برمجة خارجية تعمل مع Gradle لإنشاء مكتبتك الأصلية. ولن تحتاج إلى هذا المكوِّن إذا كنت تخطط لاستخدام ndk-build فقط.
  • LLDB: أداة debugging (تصحيح الأخطاء) في "استوديو Android" التي تصحِّح أخطاء الرموز البرمجية الأصلية

للحصول على معلومات عن تثبيت هذه المكوّنات، يُرجى الاطّلاع على مقالة تثبيت NDK وCMake وضبطهما.

إنشاء مشروع جديد متوافق مع C/C++

لإنشاء مشروع جديد يتيح استخدام الرموز البرمجية الأصلية، تتشابه العملية مع إنشاء أي مشروع آخر في IDE استوديو Android، ولكن مع خطوة إضافية:

  1. في قسم اختيار مشروعك من المعالج، اختَر نوع المشروع C++ الأصلي.
  2. انقر على التالي.
  3. أكمِل جميع الحقول الأخرى في القسم التالي من المعالج.
  4. انقر على التالي.
  5. في قسم تخصيص دعم C++ في المعالج، يمكنك تخصيص مشروعك باستخدام حقل معيار C++.
    • استخدِم القائمة المنسدلة لتحديد معيار C++ الذي تريد استخدامه. يؤدي اختيار مجموعة الأدوات تلقائي إلى استخدام الإعداد التلقائي لـ CMake.
  6. انقر على إنهاء.

بعد أن ينتهي "استوديو Android" من إنشاء مشروعك الجديد، افتح لوحة المشروع من الجانب الأيمن من بيئة تطوير البرامج المتكاملة (IDE) واختَر عرض Android من القائمة. كما هو موضّح في الشكل 1، يضيف "استوديو Android" مجموعة cpp:

الشكل 1: يعرض Android مجموعات للمصادر الأصلية والنصوص البرمجية الخارجية لإنشاء الإصدارات.

ملاحظة: لا يعكس هذا العرض التسلسل الهرمي الفعلي للملفات على القرص، ولكنه يجمع الملفات المتشابهة لتبسيط التنقّل في مشروعك.

يمكنك العثور في مجموعة cpp على جميع ملفات المصدر الأصلية والعناوين وإنشاء نصوص برمجية لـ CMake أو ndk-build والمكتبات المنشأة مسبقًا التي تشكّل جزءًا من مشروعك. بالنسبة إلى المشاريع الجديدة، ينشئ "استوديو Android"native-lib.cpp نموذجًا لملف مصدر C++ ويضعnative-lib.cpp في الدليل src/main/cpp/ لوحدة تطبيقك. يوفّر رمز النموذج هذا دالة C++ بسيطة، وهي stringFromJNI()، والتي تعرِض السلسلة "Hello from C++". تعرَّف على كيفية إضافة ملفات مصدر إضافية إلى مشروعك في القسم المخصص لكيفية إنشاء ملفات مصدر أصلية جديدة.

وكما هي الحال في طريقة توجيه ملفات build.gradle إلى أداة Gradle المتعلقة بإنشاء تطبيقك، يتطلب CMake وndk-build نصًا برمجيًا للإصدار لمعرفة كيفية إنشاء مكتبتك الأصلية. بالنسبة إلى المشاريع الجديدة، ينشئ "استوديو Android" نصًا برمجيًا لإنشاء ملف CMakeCMakeLists.txt، ويضع هذا النص في الدليل الجذر لمكوّن التطبيق. لمعرفة المزيد من المعلومات عن محتوى نصّ الترميز هذا، يُرجى الاطّلاع على مقالة ضبط CMake.

إنشاء تطبيق النموذج وتشغيله

عند النقر على رمز التشغيل تشغيل التطبيق ثم تشغيله من شريط القوائم، ينشئ "استوديو Android" تطبيقًا يعرض العبارة "مرحبًا من C++ " على جهاز Android أو المحاكي، كما يعمل على تشغيله. تصف النظرة العامة التالية الأحداث التي تحدث لإنشاء نموذج تطبيق وتشغيله:

  1. تستدعي أداة Gradle نص إنشاء خارجي، وهو CMakeLists.txt.
  2. يتّبع CMake الأوامر الواردة في نصّ الإنشاء لتجميع ملف مصدر native-lib.cpp لبرنامج C++ في مكتبة كائنات مشترَكة ويُطلق عليه اسم libnative-lib.so. بعد ذلك، يُجمِّع Gradle هذه العناصر في حزمة التطبيق.
  3. أثناء التشغيل، تحمّل MainActivity في التطبيق مكتبة System.loadLibrary() الأصلية باستخدام System.loadLibrary(). أصبحت الوظيفة الأصلية للمكتبة، stringFromJNI()، متاحة الآن للتطبيق.
  4. تستدعي MainActivity.onCreate() stringFromJNI()، الذي يعرض "Hello from C++" ويستخدمه لتعديل TextView.

للتأكّد من أنّ Gradle يُجمِّع المكتبة الأصلية في التطبيق، استخدِم أداة تحليل حِزم APK:

  1. اختَر إنشاء > إنشاء الحِزم / حِزم APK > إنشاء حِزم APK.
  2. اختَر الإنشاء > تحليل حِزمة APK.
  3. اختَر حزمة APK أو حزمة AAB من الدليل app/build/outputs/ وانقر على حسنًا.
  4. كما هو موضّح في الشكل 2، يمكنك الاطّلاع على libnative-lib.so في نافذة "أداة تحليل حِزم APK" ضمن lib/<ABI>/.

    الشكل 2: حدِّد موقع مكتبة أصلية باستخدام أداة تحليل حِزم APK.

ملاحظة: إذا كنت تريد تجربة تطبيقات Android أخرى تستخدم رمزًا أصليًا، انقر على ملف > جديد > استيراد نموذج و اختَر نموذج مشروع من قائمة Ndk.

إنشاء ملفات مصدر جديدة بلغة C/C++

لإضافة ملفات مصدر C/C++ جديدة إلى مشروع حالي، اتّبِع الخطوات التالية:

  1. إذا لم يكن لديك دليل cpp/ في مجموعة المصادر الأساسية لتطبيقك، أنشئ دليلاً على النحو التالي:
    1. افتح لوحة المشروع في الجانب الأيمن من IDE و اختَر عرض المشروع من القائمة.
    2. انتقِل إلى your-module > src.
    3. انقر بزر الماوس الأيمن على الدليل main واختَر New (جديد) > Directory (دليل).
    4. أدخِل cpp كاسم للدليل، وانقر على حسنًا.

  2. انقر بزر الماوس الأيمن على دليل cpp/ واختر جديد > ملف المصدر C/C++.
  3. أدخِل اسمًا لملف المصدر، مثل native-lib.
  4. من قائمة النوع، اختَر امتداد الملف لملفات المصدر، مثل .cpp.
    • انقر على تعديل أنواع الملفات لإضافة أنواع ملفات أخرى إلى القائمة، مثل .cxx أو .hxx. في مربّع الحوار إضافات الملفات الجديدة الذي ينبثق، اختَر إضافة ملف أخرى من قائمتَي إضافة المصدر وإضافة العنوان وانقر على حسنًا.
  5. لإنشاء ملف رأس، ضَع علامة في مربّع الاختيار إنشاء ملف رأس مرتبط.
  6. انقر على موافق.

بعد إضافة ملفات C/C++ جديدة إلى مشروعك، سيظل عليك ضبط CMake لتضمين الملفات في مكتبتك الأصلية.

مصادر إضافية

لمزيد من المعلومات حول دعم رموز C/C++ في تطبيقك، جرّب المرجع التالي.

الدروس التطبيقية حول الترميز