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

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

يتوافق Android Studio مع أداة 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 (NDK): مجموعة أدوات تتيح لك استخدام رمز C وC++ مع نظام Android توفّر NDK مكتبات لمنصات إدارة المحتوى الأنشطة والوصول إلى مكونات الجهاز المادية، مثل أدوات الاستشعار واللمس إدخال.
  • CMake: أداة تصميم خارجية تعمل جنبًا إلى جنب مع Gradle لإنشاء المكتبة. ولست بحاجة إلى هذا المكون إذا كنت تخطط لاستخدام ndk-build
  • LLDB: برنامج تصحيح الأخطاء في "استوديو Android" الذي يصحح أخطاء الرمز البرمجي الأصلي.

لمزيد من المعلومات عن تثبيت هذه المكوّنات، يُرجى الاطّلاع على تثبيت وتكوين NDK وCMake.

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

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

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

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

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

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

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

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

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