نمونه های برنامه افزودنی توسعه بازی اندروید نحوه استفاده از ویژگی های کلیدی برنامه افزودنی را نشان می دهد. این مبحث نمونه ها و تنظیمات مورد نیاز برای اجرای آنها را توضیح می دهد.
نمونه های زیر در صفحه دانلود موجود است:
- HelloJNI: یک پروژه مقدماتی.
- Endless-Tunnel: یک پروژه فقط اندروید.
- Teapot: یک پروژه چند پلتفرمی برای ویندوز و اندروید.
- AssemblyCode-Link-Objects: یک پروژه الگو که دارای کد منبع اسمبلی است.
قبل از شروع
افزونه توسعه بازی اندروید و نمونه ها را نصب کنید. برای جزئیات به شروع سریع مراجعه کنید. این موضوع همچنین نحوه ساخت و اجرای یک نمونه را شرح می دهد و از نسخه اندروید نمونه Teapot به عنوان نمونه استفاده می کند.
راهنمای پیکربندی پروژه نحوه پیکربندی تنظیمات پروژه ای که از افزونه استفاده می کند، مانند افزودن پلتفرم Android و APK را شرح می دهد.
سلام JNI
نمونه HelloJNI یک پروژه ساده است که پیام "Hello From JNI" را در پنجره برنامه نمایش می دهد. این پروژه از مجموعه متفاوتی از کد منبع برای ویندوز و اندروید استفاده می کند.
- کد منبع اندروید و دایرکتوری اسکریپت های ساخت gradle: HelloJNI\AndroidPackaging
- کد منبع ویندوز و دایرکتوری پروژه ویژوال استودیو: HelloJNI
هنگامی که پروژه را می سازید، ویژوال استودیو تنظیمات زیر را به فایل 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
برای تنظیم و اجرای نمونه:
- در ویژوال استودیو، نمونه HelloJNI را باز کرده و بسازید.
- یک پلتفرم Android arm64-v8a اضافه کنید. برای اطلاعات بیشتر، به افزودن پلتفرم Android مراجعه کنید.
- یک مورد Android APK را به پلتفرم جدید اضافه کنید .
- پروژه را کامپایل کنید.
- پلتفرمهای Android زیر را اضافه کنید و سپس یک مورد Android APK را به هر یک از آنها اضافه کنید: Android-armeabi-v7a ، Android-x86 و Android-x86_64 .
- نمونه را بسازید و اجرا کنید .
بی پایان-تونل
نمونه Endless-Tunnel یک بازی اندرویدی است که در آن بازیکن مکعب های سفید را جمع آوری می کند در حالی که سعی می کند به انتهای یک تونل برسد. از یک نمونه OpenGL در مخزن Android NDK در Github منتقل شده است. نمونه نسخه ویندوزی بازی را ارائه نمی دهد.
نمونه قبلاً تنظیمات و پلافرمهای اندروید را پیکربندی کرده است، بنابراین میتوانید پروژه را بدون هیچ گونه تغییری در ویژوال استودیو بسازید و اجرا کنید. هنگامی که راه حل را باز می کنید، Solution Explorer این ماژول ها را نمایش می دهد:
- endless-tunnel: ماژول برنامه ای که منطق بازی را نمایش می دهد.
- glm: یک عکس فوری از مخزن ریاضی OpenGL که به عنوان یک کتابخانه ثابت ساخته شده است.
- native_app_glue: یک پوشش NDK که با شی NativeActivity ارتباط برقرار می کند.
قوری
نمونه Teapot یک قوری کلاسیک را نشان میدهد که با OpenGL ES رندر شده و به برنامه توسعه بازی اندروید منتقل شده است تا ویژگیهای زیر را نشان دهد:
- توسعه پروژه Cross Platform: می توانید نمونه Teapot را برای ویندوز و اندروید بسازید.
- استفاده سفارشی از بستهبندی اندروید: اسکریپتهای ساخت Gradle به فهرست اصلی نمونه منتقل شدند، جایی که فایل
Teapot.sln
در آن قرار دارد. - پیکربندیهای سفارشی Android که نحوه استفاده از Address Sanitizer (ASan) و Hardware Address Sanitizer (HWAsan) را نشان میدهد.
اجرای نمونه Teapot به چند قسمت تقسیم می شود که برای برنامه ها و بازی های بزرگ پلت فرم معمولی است:
- ماژول
GameApplication
: اقدامات کاربر و حالت های برنامه را تعریف می کند، مانند چرخاندن قوری توسط کاربر یا به روز رسانی آمار برنامه. - ماژول
GameEngine
: ماژول رندر هسته را پیاده سازی می کند.
برای راه اندازی نمونه و اجرای آن در اندروید، شروع سریع را ببینید. برای تنظیم نمونه و اجرای آن در ویندوز:
- GLEW را نصب کنید:
- GLEW را دانلود و از حالت فشرده خارج کنید.
- فایل های باینری را از
$your-glew-directory\bin\Release\x64
در%SystemRoot%\system32
کپی کنید.
- نصب Freeglut:
- Freeglut را دانلود و از حالت فشرده خارج کنید.
-
$your-freeglut-directory\bin\x86\freeglut.dll
در%SystemRoot%\system32
کپی کنید.
- وابستگی های پروژه Freeglut را اضافه کنید:
-
Teapot.sln
در ویژوال استودیو باز کنید. - در منو، روی Debug > x64 > Local Windows Debugger کلیک کنید.
- در Solution Explorer ، روی GameApplication کلیک راست کرده و Properties > C/C++ > General > Additional Include Directories را انتخاب کنید.
-
$your-freeglut-dir\include
به مسیر اضافه کنید. - Ok را کلیک کنید.
- Linker > General > Additional Library Directories را انتخاب کنید.
-
$your-freeglut-dir\lib\x64
به مسیر اضافه کنید. - Ok را کلیک کنید.
- Linker > General > Additional Library Directories را انتخاب کنید.
-
freeglut.lib
را به مسیر اضافه کنید. - Ok را کلیک کنید.
-
- وابستگی های پروژه GLEW را اضافه کنید:
- در پنجره Solution Explorer ، روی GameApplication کلیک راست کرده و Properties > C/C++ > General > Additional Include Directories را انتخاب کنید.
-
$your-glew-dir\include
به مسیر اضافه کنید. - Ok را کلیک کنید.
- Linker > General > Additional Library Directories را انتخاب کنید.
-
$your-glew-dir\lib\Release\x86
به مسیر اضافه کنید. - Ok را کلیک کنید.
- Linker > General > Additional Library Directories را انتخاب کنید.
-
glew32.lib
را به مسیر اضافه کنید. - Ok را کلیک کنید.
- نمونه را روی ویندوز اجرا کنید:
- در نوار ابزار ویژوال استودیو، روی دکمه اجرای Local Windows Debugger کلیک کنید.
- نمونه باید به صورت زیر باشد:
AssemblyCode-Link-Objects
این یک پروژه قالب است که نشان می دهد چگونه یک کتابخانه بومی اندروید از اسمبلی و کد منبع C/C++ ایجاد کنید. اینها اجزای اصلی هستند:
-
AssemblyCode-Link-Objects
: کتابخانه اصلی اندروید که از C++ و کد منبع اسمبلی ساخته شده است. -
StaticLib
: یک کتابخانه استاتیک کمکی که تابعfrom_static_lib_assembly_code_as
را صادر می کند.
این پروژه از چندین معماری پشتیبانی می کند. هر معماری پشتیبانی شده دارای فایل های منبع مخصوص به خود است که توابعی را اجرا می کند که از StaticLib
صادر می شوند. شما فقط باید فایل های منبع اسمبلی را برای پلتفرم هایی که در حال ساخت آن هستید قرار دهید. این پروژه شامل فایل های اسمبلی در بیلدها با استفاده از ابزارهای ساخت سفارشی می باشد.
برای تنظیم و ساخت نمونه:
- در ویژوال استودیو، بررسی کنید که ابزارهای ساخت سفارشی برای فایل های اسمبلی پیکربندی شده باشند:
- در Solution Explorer ، روی فایل اسمبلی کلیک راست کرده و روی Properties کلیک کنید. با این کار کادر گفتگوی Properties Pages برای فایل باز می شود.
- پیکربندی و پلتفرم را انتخاب کنید، مانند همه تنظیمات برای Android-arm64-v8a .
- مطمئن شوید که General > Exclude from Build روی No تنظیم شده باشد.
- مطمئن شوید که General > Item Type روی ابزار ساخت سفارشی تنظیم شده است.
- اگر تغییراتی برای اعمال وجود دارد روی Apply کلیک کنید.
- مطمئن شوید که Configuration Properties > Custom Build Tools > Command Line : روی
$(AsToolExe) -o "$(IntDir)%(FileName).o" %(FullPath)
تنظیم شده باشد. NDK شامل یک اسمبلر جداگانه برای هر معماری CPU است و$(AsToolExe)
به اسمبلر صحیح نقشه میدهد. این نمونه از زنجیره ابزار NDK برای ساخت هر دو پروژه اندروید x86 و x86_64 استفاده می کند. اگر می خواهید از yasm برای پلتفرم اندروید x86_64 استفاده کنید، به جای آن از$(YasmToolExe)
استفاده کنید. - مطمئن شوید که Configuration Properties > Custom Build Tools > Outputs : روی
$(IntDir)%(FileName).o
تنظیم شده باشد. این رشته باید در تنظیمات خط فرمان گنجانده شود. - مطمئن شوید که Configuration Properties > Custom Build Tools > Link Objects : روی
Yes
تنظیم شده باشد.
به عنوان مثال، تنظیمات Android-arm64-v8a باید شبیه به تصویر زیر باشد:
- پروژه را بسازید. این فایل
libAssmeblyCodeLinkObjects.so
را می سازد:- فایل
AssemblyCode-Link-Objects.sln
را باز کنید. - در منو، روی Build > Build Solution کلیک کنید.
- فایل
- برای تأیید اینکه توابع به درستی به کتابخانه Android صادر شده اند، از ابزار nm.exe NDK استفاده کنید:
- در خط فرمان، به پوشه نمونه بروید.
- به مکان کتابخانه Android که توسط ساخت شما ایجاد شده است بروید. مکان پیش فرض مشابه
$sample_dir\$solution_configuration\$solution_platform\$platform
و$sample_dir\Debug\Android-arm64-v8a\arm64-v8a
برای پلتفرم arm64-v8a است. - با اجرای دستور زیر اطمینان حاصل کنید که بخش نماد صادراتی حاوی توابع است:
…\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