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 مكتبة ثابتة إلى التوزيع. اعتبارًا من هذا الإصدار والإصدارات الأحدث، ننصحك باستخدام المكتبة الثابتة بدلاً من رمز المصدر.
محتويات حزمة ZIP الخاصة بمكتبة Jetpack وAGDK
يتم إصدار GameActivity مع ملف AAR باستخدام مكتبة Jetpack وقنوات حزمة AGDK المضغوطة. يحتوي هذا التقرير على المكوّنات الرئيسية التالية:
- ملف 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 دائمًا أحدث رمز مصدر. اتّبِع تعليمات الإنشاء لإنشاء إصداراتك الخاصة أو دمج المصدر مباشرةً في بيئة الإنشاء. يتم حفظ رمز المصدر C/C++ في بنية ملفات مشابهة لتلك الخاصة بمكتبة Jetpack وحزمة AGDK المضغوطة.
أدلة الدمج
اتّبِع هذه الأدلة لدمج GameActivity
في تطبيقاتك:
مراجع إضافية
لمزيد من المعلومات حول GameActivity
، يُرجى الاطّلاع على ما يلي:
- ملاحظات إصدار GameActivity وAGDK
- استخدام GameTextInput في GameActivity
- دليل نقل بيانات NativeActivity
- المستندات المرجعية الخاصة بفئة GameActivity
- تنفيذ GameActivity
الملاحظات
للإبلاغ عن أخطاء أو طلب ميزات جديدة في GameActivity، استخدِم أداة تتبُّع المشاكل في GameActivity.