GameActivity جزء من حزمة تطوير الألعاب لنظام Android
GameActivity هي مكتبة Jetpack مصمَّمة لمساعدة ألعاب Android في معالجة أوامر دورة حياة التطبيق وأحداث الإدخال وإدخال النصوص في رمز C/C++ الخاص بالتطبيق. GameActivity هو عنصر فرعي مباشر من
NativeActivity ويشترك معه في بنية مشابهة:

كما هو موضّح في الرسم البياني أعلاه، تنفّذ GameActivity الوظائف التالية:
- التفاعل مع إطار عمل Android من خلال المكوّن من جهة Java
- تمرير أوامر دورة حياة التطبيق وأحداث الإدخال والنص المُدخَل إلى الجانب الأصلي
- تصميم رمز المصدر C/C++ في ثلاثة مكونات منطقية:
- وظائف JNI في GameActivity التي تتيح مباشرةً وظائف Java في GameActivity وتضيف الأحداث إلى قائمة الانتظار في
native_app_glue. native_app_glue، الذي يتم تشغيله في الغالب في سلسلة التعليمات الأصلية الخاصة به (تختلف عن سلسلة التعليمات الرئيسية للتطبيق)، وينفّذ المهام باستخدام حلقة الرسائل الخاصة به.- رمز اللعبة الخاص بالتطبيق، والذي يستطلع الأحداث التي تم وضعها في قائمة الانتظار داخل
native_app_glueويعالجها، وينفّذ رمز اللعبة ضمن سلسلة المحادثاتnative_app_glue
- وظائف JNI في GameActivity التي تتيح مباشرةً وظائف Java في GameActivity وتضيف الأحداث إلى قائمة الانتظار في
باستخدام GameActivity، يمكنك التركيز على تطوير الألعاب الأساسية وتجنُّب إضاعة الكثير من الوقت في التعامل مع رمز JNI.
إذا كنت معتادًا على استخدام NativeActivity، إليك الاختلافات الرئيسية بين GameActivity وNativeActivity:
- يتم عرض
GameActivityفيSurfaceView، ما يسهّل على الألعاب التفاعل مع عناصر واجهة المستخدم الأخرى. - بالنسبة إلى أحداث إدخال اللمس والمفاتيح، تتضمّن
GameActivityعملية تنفيذ جديدة تمامًا باستخدام واجهةandroid_input_buffer، منفصلة عنInputQueueالتي تستخدمهاNativeActivity. -
GameActivityهي فئة مشتقة منAppCompatActivity، ما يتيح لك استخدام مكوّنات Jetpack الأخرى بسلاسة.ActionBarوFragmentوغيرهما كلها متاحة. - تضيف
GameActivityوظيفة إدخال النص من خلال دمج مكتبة GameTextInput. - من المتوقّع أن تنشئ التطبيقات المشتقة من
GameActivityجميع أجزاء رمز C/C++ في مكتبة واحدة. من ناحية أخرى، تشكّل دوال JNI الخاصة بـNativeActivityجزءًا من إطار العمل (يتم تحميلها دائمًا بواسطة نظام التشغيل). وبالتالي، من المتوقّع أن يتم إنشاءnative_app_glueورمز C/C++ للتطبيق في مكتبة واحدة فقط. -
NativeActivityهو جزء من إطار عمل Android ويتبع دورة الإصدار (عادةً ما تكون سنوية). GameActivityهو جزء من مكتبة Jetpack، التي تتضمّن دورة إصدار أكثر تكرارًا (عادةً كل أسبوعين)، ويمكن أن تصل الميزات الجديدة وإصلاحات الأخطاء بشكل أسرع.
مواقع الإصدار
تتوفّر مكتبة GameActivity في القنوات التالية:
- كجزء من مكتبة Android Jetpack (يُنصح به)
- رمز المصدر لنظام التشغيل Android
يتم توفير رمز C/C++ البرمجي كرمز مصدر في جميع قنوات الإصدار، وذلك باستخدام تنسيق Prefab. يضيف الإصدار 1.2.2 من GameActivity مكتبة ثابتة إلى التوزيع. اعتبارًا من هذا الإصدار والإصدارات الأحدث، ننصحك باستخدام المكتبة الثابتة بدلاً من رمز المصدر.
محتويات مكتبة Jetpack
باستخدام مكتبة Jetpack، يتم إصدار GameActivity مع ملف AAR. يحتوي هذا التقرير على المكوّنات الرئيسية التالية:
- ملف JAR لرمز Java
- يتم تضمين مكتبة C/C++ الثابتة
game-activity_staticمع الإصدار 1.2.2 والإصدارات الأحدث من GameActivity. - رمز المصدر C/C++ (ضمن المجلد
/prefab)
تفترض تعليمات الدمج المرتبطة بهذه الصفحة أنّه يمكنك استخدام Prefab في نظام الإصدار. وإلا، يمكنك نسخ الرمز المصدري المعبّأ ضمن المجلد prefab/modules/game-activity/include إلى نظام الإصدار واتّخاذ خطوات الدمج اللازمة. تتوفّر بنية ملفات مشابهة للإصدارات ضمن androidx لمكتبة Android Jetpack، وبشكل تلقائي، يفكّ Gradle حِزم AAR في دليل ذاكرة التخزين المؤقت (~/.gradle/caches/...). يمكنك العثور على رمز المصدر C/C++ من خلال البحث عن prefab/modules/game-activity/include
واختيار الموقع الجغرافي ضمن إصدارك المستهدف.
للحصول على تعليمات حول الدمج باستخدام مكتبة Jetpack، يُرجى الاطّلاع على البدء في استخدام GameActivity.
محتوى رمز المصدر لنظام التشغيل AOSP
يتضمّن AOSP دائمًا أحدث رمز مصدر. اتّبِع [تعليمات الإنشاء][GameActivity implementation]{: .external} لإنشاء إصداراتك الخاصة أو دمج المصدر مباشرةً في بيئة الإنشاء. يتم حفظ الرمز المصدري للغة C/C++ في بنية ملف مشابهة لمكتبة Jetpack.
أدلة الدمج
اتّبِع هذه الأدلة لدمج GameActivity في تطبيقاتك:
مراجع إضافية
لمزيد من المعلومات حول GameActivity، يُرجى الاطّلاع على ما يلي:
- ملاحظات إصدار GameActivity وAGDK
- استخدام GameTextInput في GameActivity
- دليل نقل بيانات NativeActivity
- المستندات المرجعية الخاصة بفئة GameActivity
- تنفيذ GameActivity
الملاحظات
للإبلاغ عن أخطاء أو طلب ميزات جديدة في GameActivity، استخدِم أداة تتبُّع المشاكل في GameActivity.