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

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

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

لاستيراد مكتبة ndk-build حالية إلى مشروعك في IDE، تعرَّف على كيفية ربط 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 Studio، ولكن مع خطوة إضافية:

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

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

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

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

يمكنك العثور على جميع ملفّات المصدر والرؤوس والنصوص البرمجية لإنشاء ملفّات CMake أو ndk-build والمكتبات prebuilt التي تشكّل جزءًا من مشروعك في مجموعة cpp. بالنسبة إلى المشاريع الجديدة، ينشئ "استوديو 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 Studio تطبيقًا يعرض النص "مرحبًا من 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++ في تطبيقك، يمكنك الاطّلاع على المحاولة التالية مرجع.

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