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

أضِف رمزَي 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++ جديدة إلى مشروعك.

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

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

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

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

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

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

الشكل 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" تطبيقًا يعرض النص "مرحبًا من C++ " ويشغِّله على جهاز Android أو المحاكي. تصف النظرة العامة التالية الأحداث التي تتم لإنشاء نموذج التطبيق وتشغيله:

  1. استدعائي Gradle على النص البرمجي للإصدار الخارجي، CMakeLists.txt.
  2. يتّبع CMake الأوامر في النص البرمجي للإصدار لتجميع ملف مصدر C++، native-lib.cpp، في مكتبة عناصر مشتركة، وتسميته libnative-lib.so. بعد ذلك، يتم جمعها في التطبيق من خلال Gradle.
  3. أثناء وقت التشغيل، تُحمِّل MainActivity في التطبيق المكتبة الأصلية باستخدام 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. انقر بزرّ الماوس الأيمن على الدليل الرئيسي واختَر جديد > دليل.
    4. أدخِل cpp كاسم الدليل، ثم انقر على حسنًا.

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

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

مراجع إضافية

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

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