النماذج

توضح نماذج إضافة تطوير ألعاب Android كيفية استخدام الميزات الرئيسية. من الإضافة. يصف هذا الموضوع العينات الإعدادات اللازمة لتشغيلها.

تتوفر النماذج التالية على صفحة التنزيلات:

  • HelloJNI: مشروع تمهيدي.
  • نفق لا ينتهي: مشروع Android فقط
  • Teabot: مشروع عبر الأنظمة الأساسية لنظامي التشغيل Windows وAndroid.
  • AssemblyCode-Link-Objects: مشروع نموذجي يحتوي على رمز مصدر مجموعة.

قبل البدء

  • ثبِّت إضافة تطوير ألعاب Android والنماذج. يمكنك الاطّلاع على التشغيل السريع للحصول على التفاصيل. كما يصف الموضوع كيفية إنشاء وتشغيل عيّنة واستخدام إصدار Android من عيّنة Teabot كمثال.

  • يصف دليل ضبط المشروع كيفية هي تهيئة الإعدادات لمشروع يستخدم الإضافة، مثل إضافة نظام أساسي Android وحزمة APK.

مؤسسة HelloJNI

نموذج HelloJNI هو مشروع بسيط يعرض رسالة "مرحبًا من JNI" في نافذة التطبيق. يستخدم المشروع مجموعة مختلفة من رموز المصدر لنظام التشغيل Windows Android

  • رمز المصدر لنظام Android ودليل النصوص البرمجية لإصدار Gradle: مرحبًاJNI\AndroidPackaging
  • رمز المصدر لنظام التشغيل Windows ودليل مشروع Visual Studio: HelloJNI

عند إنشاء المشروع، تجتاز Visual Studio ما يلي: الإعدادات إلى ملف build.gradle على مستوى التطبيق. يمكنك تغيير هذه الإعدادات من خلال تعديل النصوص البرمجية لإنشاء Gradle

  • MSBUILD_NDK_VERSION
  • MSBUILD_MIN_SDK_VERSION
  • MSBUILD_JNI_LIBS_SRC_DIR
  • MSBUILD_ANDROID_OUTPUT_APK_NAME
  • MSBUILD_ANDROID_GRADLE_BUILD_OUTPUT_DIR

لإعداد النموذج وتشغيله:

  1. في Visual Studio، افتح عينة HelloJNI وأنشئها.
  2. إضافة النظام الأساسي Android Arm64-v8a لمزيد من المعلومات، المعلومات، راجع إضافة نظام أساسي Android.
  3. إضافة ملف APK لنظام التشغيل Android على المنصة الجديدة.
  4. قم بتجميع المشروع.
  5. يمكنك إضافة أنظمة Android الأساسية التالية، ثم إضافة أحد ملفات APK لنظام التشغيل Android. إلى كل منها: Android-armeabi-v7a، Android-x86 وAndroid-x86_64
  6. إنشاء العيّنة وتشغيلها

نفق لا نهائي

نموذج Endless-Tunnel هي إحدى ألعاب Android حيث يجمع اللاعبين مكعّبة أثناء محاولة الوصول إلى نهاية نفق. تم نقله من OpenGL في العينة مستودع Android NDK على GitHub. لا يوفّر النموذج إصدار اللعبة من نظام التشغيل Windows.

سبق أن تم ضبط إعدادات النموذج وأنظمة Android الأساسية في النموذج، ما يتيح لك إنشاء المشروع وتشغيله في Visual Studio دون إجراء أي تعديلات. عندما تريد لفتح الحل، يعرض مستكشف الحلول الوحدات التالية:

  • نفق لا نهائي: وحدة التطبيق التي تعرض منطق اللعبة.
  • glm: لقطة من OpenGL Math repo التي تم إنشاؤها كمكتبة ثابتة.
  • أصلي_app_glue: برنامج تضمين NDK يتصل بـ NativeActivity الخاص بك.

إبريق شاي

تعرض عينة Teabot إبريق شاي كلاسيكي يتم عرضه باستخدام OpenGL ES إلى إضافة تطوير ألعاب Android لتوضيح الميزات التالية:

  • تطوير مشروع عبر المنصات: يمكنك إنشاء عينة Tea بشأن Windows وAndroid.
  • استخدام حزم Android المخصصة: تم نقل النصوص البرمجية لإصدار Gradle إلى الدليل الجذري للنموذج، حيث يوجد الملف Teapot.sln.
  • ميزة دمج إصدار Ninja التجريبية التي تتيح ستفتح المشروع في Android Studio.
  • إعدادات Android المخصّصة التي توضح كيفية استخدام Address Sanitizer (ASan) و مطهّر عنوان الجهاز (HWAsan)

ينقسم تنفيذ عينة Teabot إلى أجزاء متعددة، وهي نموذجي للتطبيقات والألعاب الكبيرة التي تعمل على أنظمة أساسية متعددة:

  • وحدة GameApplication: تحدّد إجراءات المستخدم وحالات التطبيق، مثل مستخدم يقوم بتدوير إبريق الشاي أو تحديث إحصائيات التطبيق.
  • وحدة GameEngine: تستخدم وحدة العرض الأساسية.

لإعداد العيّنة وتشغيلها على Android، يُرجى الاطّلاع على دليل Quickstart (التشغيل السريع). إلى إعداد العيّنة وتشغيلها على نظام التشغيل Windows:

  1. تثبيت GLEW:
    1. نزِّل ملف GLEW وألغِ ضغطه.
    2. انسخ الملفات الثنائية من من $your-glew-directory\bin\Release\x64 إلى %SystemRoot%\system32
  2. تثبيت Freeglut:
    1. نزِّل تطبيق freeglut وألغِ ضغطه.
    2. نسخ $your-freeglut-directory\bin\x86\freeglut.dll إلى %SystemRoot%\system32
  3. أضف تبعيات المشروع الحر:
    1. فتح "Teapot.sln" في Visual Studio
    2. في القائمة، انقر على تصحيح الأخطاء > x64 > برنامج تصحيح الأخطاء المحلي في نظام التشغيل Windows.
    3. في Solution Explorer، انقر بزر الماوس الأيمن GameApplication واختَر المواقع > C/C++ > إعدادات عامة > تضمين دلائل إضافية.
    4. إضافة $your-freeglut-dir\include إلى المسار
      لقطة شاشة لمربّع الحوار "أدلة تضمين إضافية"
    5. انقر على موافق.
    6. اختر الرابط > إعدادات عامة > أدلة المكتبات الإضافية
    7. إضافة $your-freeglut-dir\lib\x64 إلى المسار لقطة شاشة لمربّع الحوار "أدلة مكتبة إضافية"
    8. انقر على موافق.
    9. اختر الرابط > إعدادات عامة > أدلة المكتبات الإضافية
    10. إضافة freeglut.lib إلى المسار
    11. انقر على موافق.
  4. أضِف تبعيات مشروع GLEW:
    1. في لوحة مستكشف الحلول، انقر بزر الماوس الأيمن GameApplication واختَر المواقع > C/C++ > إعدادات عامة > تضمين دلائل إضافية.
    2. إضافة $your-glew-dir\include إلى المسار
    3. انقر على موافق.
    4. اختر الرابط > إعدادات عامة > أدلة المكتبات الإضافية
    5. إضافة $your-glew-dir\lib\Release\x86 إلى المسار
    6. انقر على موافق.
    7. اختر الرابط > إعدادات عامة > أدلة المكتبات الإضافية
    8. إضافة glew32.lib إلى المسار
    9. انقر على موافق.
  5. شغِّل النموذج على نظام التشغيل Windows:
    1. في شريط أدوات Visual Studio، انقر على زر التشغيل Local Windows Debugger.
    2. من المفترض أن يظهر النموذج على النحو التالي:
      لقطة شاشة لعينة Teabot التي تعمل على نظام التشغيل Windows

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

  • AssemblyCode-Link-Objects: مكتبة Android الأصلية الرئيسية التي تم إنشاؤها من C++ ورمز مصدر التجميع
  • StaticLib: مكتبة ثابتة مساعِدة تصدِّر from_static_lib_assembly_code_as.

يدعم المشروع بنى متعددة. ولكل بنية متوافقة ملفات المصدر الخاصة التي تنفِّذ الدوال التي يتم تصديرها من StaticLib. يجب عليك فقط تضمين ملفات مصدر التجميع للأنظمة الأساسية التي المبنى. يتضمن هذا المشروع ملفات تجميع في إصدارات باستخدام أدوات التصميم المخصّصة.

لإعداد النموذج وإنشائه:

  1. في Visual Studio، تحقَّق من ضبط أدوات التصميم المخصّصة ملفات التجميع:
    1. في مستكشف الحلول، انقر بزر الماوس الأيمن على ملف التجميع وانقر على الخصائص. يؤدي هذا إلى فتح مربع حوار صفحات الخصائص للملف.
    2. حدد التكوين والنظام الأساسي، مثل جميع إعدادات Android-arm64-v8a
    3. تأكد من أن عام > تم ضبط الاستثناء من الإصدار. إلى لا.
    4. تأكد من أن عام > تم ضبط نوع العنصر. إلى أداة الإنشاء المخصّصة
    5. انقر على تطبيق إذا كانت هناك تغييرات لتطبيقها.
    6. تأكَّد من خصائص الإعداد > أدوات إنشاء مخصصة > سطر الأوامر: تم ضبطه على $(AsToolExe) -o "$(IntDir)%(FileName).o" %(FullPath) يتضمن NDK مجمعًا منفصلاً لكل بنية وحدة معالجة مركزية تربط $(AsToolExe) بالمجمّع الصحيح. هذا العيّنة سلسلة أدوات NDK لإنشاء كل من الإصدارين x86 وx86_64 من نظام التشغيل Android مماثلة. إذا كنت ترغب في استخدام yasm لنظام Android الأساسي x86_64، استخدِم $(YasmToolExe) بدلاً من ذلك.
    7. تأكَّد من خصائص الإعداد > أدوات إنشاء مخصصة > النتائج: تم ضبطه على $(IntDir)%(FileName).o يجب تضمين هذه السلسلة في إعداد سطر الأوامر.
    8. تأكَّد من خصائص الإعداد > أدوات إنشاء مخصصة > كائنات الروابط: تم ضبطه على Yes

    على سبيل المثال، يجب ضبط إعدادات Android-arm64-v8a على مشابهة للقطة الشاشة التالية:

    لقطة شاشة لصفحة الخصائص في Custom Build Tools.
  2. قم ببناء المشروع. وهذا يبني ملف libAssmeblyCodeLinkObjects.so:
    1. افتح ملف AssemblyCode-Link-Objects.sln.
    2. في القائمة، انقر على إنشاء > إنشاء حلّ:
  3. للتأكد من تصدير الدوال بشكل صحيح إلى نظام التشغيل Android ، استخدم أداة nm.exe NDK:
    1. في سطر الأوامر، انتقِل إلى نموذج الدليل.
    2. انتقِل إلى موقع مكتبة Android الذي أنشأه يتشابه الموقع الافتراضي مع $sample_dir\$solution_configuration\$solution_platform\$platform و$sample_dir\Debug\Android-arm64-v8a\arm64-v8a عن منصة arm64-v8a
    3. التحقق من أن قسم الرموز التي تم تصديرها يحتوي على الدوال تشغيل الأمر التالي:
        …\ndk\toolschains\llvm\prebuilt\windows-x86_64\aarch64-linux-android\bin\nm.exe --defined-only …\Debug\Android-arm64-v8a\arm64-v8a\libAssmeblyCodeLinkObjects.so
      

      في الإخراج، يُفترض أن ترى قائمة بالرموز التي تتضمن التالي:

         T from_shared_object_assembly_code_as
         T from_static_lib_assembly_code_as