یک پروژه را برای استفاده از برنامه افزودنی توسعه بازی اندروید پیکربندی کنید.
برنامه افزودنی توسعه بازی Android از MSBuild فراخوانی می کند تا کد منبع C/C++ را در کتابخانه های مشترک ( .so
) و کتابخانه های ثابت ( .a
) بسازد. به عنوان بخشی از فرآیند ساخت، یک کار سفارشی MSBuild از Gradle برای کامپایل کد منبع جاوا و Kotlin، داراییهای بسته و ایجاد یک فایل APK برای استقرار فراخوانی میکند. هنگامی که پروژه خود را پیکربندی می کنید، باید اطمینان حاصل کنید که MSBuild اطلاعات لازم برای ساختن برای پلتفرم اندروید را دارد.
ساخت C/C++ با MSBuild
یک پروژه معمولی اندروید با Gradle ساخته میشود، جایی که کد بومی داخل پروژه توسط یک پاس Gradle ساخته میشود که CMake یا ndk-build را اجرا میکند. با افزونه توسعه بازی اندروید برای ویژوال استودیو، روند ساخت معکوس شده است. اکنون MSBuild نقطه شروع فرآیند ساخت است. تمام کد منبع C/C++ ابتدا توسط MSBuild برای پلتفرمهای اندروید جدید نصب شده روی سیستم شما به عنوان بخشی از برنامه افزودنی ساخته شده است (به عنوان مثال، "Android-x86_64"). سپس MSBuild از Gradle فراخوانی میکند تا فایلهای کتابخانه مشترک که حاوی منطق C/C++ شما هستند را در یک APK بسته بندی کند.
ابتدا باید منطق ساخت موجود پروژه خود را در CMake یا ndk-build در MSBuild تکرار کنید. پلتفرم های هدف را به صورت زیر تنظیم کنید:
- Android-x86
- Android-x86_64
- Android-armeabi-v7a
- Android-arm64-v8a
این پلتفرم ها همگی توسط افزونه توسعه بازی اندروید ارائه شده اند.
یک پلتفرم اندروید اضافه کنید
در حالی که پروژه نمونه قوری شامل پلتفرم های اندروید است، شما باید به صورت دستی یک پلتفرم اندروید را به پروژه موجود اضافه کنید. برای افزودن پلتفرم جدید، در ویژوال استودیو مراحل زیر را انجام دهید:
- Build > Configuration Manager را انتخاب کنید.
- در زیر پلت فرم راه حل فعال ، <جدید> را انتخاب کنید.
یکی از موارد زیر را برای پلتفرم جدید تایپ کنید:
- Android-armeabi-v7a
- Android-arm64-v8a
- Android-x86
- Android-x86_64
در کادر کپی تنظیمات از ، پلتفرم اندروید موجود دیگری را انتخاب کنید یا اگر هنوز هیچ پلتفرم اندرویدی ندارید <Empty> را انتخاب کنید. مطمئن شوید که ایجاد پلتفرم های پروژه جدید را فعال کرده اید.
یک مورد Android APK اضافه کنید
Add > New Item > Visual C++ > Android > Android APK را انتخاب کنید و روی Add کلیک کنید. برنامه اندروید را در گفتگوی زیر پیکربندی کنید.
- نام برنامه : نام قابل خواندن برای انسان برنامه اندروید شما.
- شناسه برنامه : شناسه منحصر به فرد برنامه اندروید شما.
- Solution Explorer Location : محل پوشه مجازی که حاوی فایل های پشتیبانی بسته بندی اندروید اضافه شده است. به طور پیش فرض، این فایل ها نیز در پروژه در پوشه ای با همین نام قرار دارند. میتوانید با انتخاب کادر تأیید قرار دادن فایلهای پشتیبانی در مکان سفارشی و تعیین یک مکان سفارشی، مکان را سفارشی کنید. پوشه مجازی همچنان تحت پروژه فعلی در Solution Explorer خواهد بود.
MSBuild را برای ساختن APK به Gradle فراخوانی کنید
MSBuild نمی تواند Gradle را فراخوانی کند مگر اینکه مکان پروژه Gradle را بداند. همانطور که در شکل 1 نشان داده شده است، این مکان را با استفاده از ویژگی Gradle Build Directory تنظیم کنید.
شکل 1 . ویژگی Gradle Build Directory
علاوه بر این، ویژگیهای Application Module ، Application Variant و APK Name (همانطور که در تصویر قبلی نشان داده شده است) را تنظیم کنید تا MSBuild بداند چه چیزی را بسازد.
- ماژول کاربردی : نام زیر پروژه Gradle. این پروژه اصلی تنظیم شده در فایل
settings.gradle
است. معمولاً به آنapp
برای پروژه هایی گفته می شود که مستقیماً با استفاده از Android Studio ایجاد می شوند. - Application Variant : نوع اندرویدی که باید ساخته شود. این مقدار باید بر اساس تنظیمات MSBuild تنظیم شود. به عنوان مثال، یک ساخت اشکال زدایی باید مقداری برای نوع اشکال زدایی داشته باشد. اگر نام پیکربندی MSBuild پروژه شما با نام انواع Gradle مطابقت دارد، کافیست از مقدار پیش فرض
$(Configuration)
استفاده کنید. - نام APK : نام فایل APK تولید شده که برای اشکال زدایی و نمایه سازی در رایانه برنامه نویسی شما استفاده می شود. این نام به Gradle منتقل شده است و اسکریپت ساخت Gradle شما باید به آن احترام بگذارد (ویژگی
MSBUILD_ANDROID_OUTPUT_APK_NAME
را در بخش زیر ببینید).
اسکریپت های ساخت Gradle خود را تغییر دهید
در طول ساخت، MSBuild اطلاعات زیر را به عنوان ویژگی های پروژه به اسکریپت Gradle ارسال می کند. اسکریپت های ساخت موجود پروژه خود را (که معمولاً build.gradle
نام دارند) را برای خواندن این ویژگی ها تغییر دهید.
MSBUILD_MIN_SDK_VERSION
: حداقل نسخه SDK برای ساخت APK. این مقدار را در کادر Minimum Android SDK Version در صفحه ویژگی پروژه نشان داده شده در شکل 2 تنظیم کنید.
شکل 2 . حداقل ویژگی نسخه SDK Androidاسکریپت ساخت Gradle باید
minSdkVersion
روی این مقدار تنظیم کند، همانطور که در زیر نشان داده شده است.شیار
android { // ... defaultConfig { applicationId "com.yourcompany.yourapp" minSdkVersion MSBUILD_MIN_SDK_VERSION // ... } // ... }
کاتلین
android { // ... defaultConfig { applicationId = "com.yourcompany.yourapp" minSdkVersion(MSBUILD_MIN_SDK_VERSION) // ... } // ... }
MSBUILD_ANDROID_OUTPUT_APK_NAME
: نام مورد انتظار APK که Gradle میسازد. برنامه افزودنی توسعه بازی اندروید به دنبال APK منطبق با این نام می گردد و سپس آن را در دستگاه های متصل (برای اشکال زدایی و نمایه سازی) مستقر می کند. این مقدار را در کادر APK Name در صفحه ویژگی پروژه نشان داده شده در شکل 3 تنظیم کنید.
شکل 3 . ویژگی نام APKاسکریپت ساخت Gradle باید به این ویژگی احترام بگذارد. به عنوان مثال، مثال زیر نام APK خروجی را برای همه انواع به نام انتخاب شده توسط MSBuild تنظیم می کند.
شیار
android { // ... applicationVariants.all { variant -> variant.outputs.all { outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME } } // ... }
کاتلین
android { // ... applicationVariants.all { variant -> variant.outputs.all { outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME } } // ... }
MSBUILD_JNI_LIBS_SRC_DIR
: دایرکتوری حاوی کتابخانه های مشترک (فایل های.so
) ساخته شده توسط MSBuild. این مقدار را در کادر Output Directory در صفحه ویژگی پروژه نشان داده شده در زیر تنظیم کنید. به طور پیش فرض، همانطور که در شکل 4 نشان داده شده است، این مقدار ویژگی دایرکتوری خروجی برای پروژه ویژوال استودیو است.
شکل 4 . ویژگی Output DirectoryGradle باید فایل های کتابخانه اشتراکی را در این پوشه در داخل APK بسته بندی کند تا برنامه اندروید آنها را در زمان اجرا بارگیری کند.
شیار
android { // ... sourceSets { main { jniLibs.srcDirs += [MSBUILD_JNI_LIBS_SRC_DIR] } } // ... }
کاتلین
android { // ... sourceSets.getByName("main") { jniLibs.srcDir(MSBUILD_JNI_LIBS_SRC_DIR) } // ... }
علاوه بر این، از آنجایی که هر کد C/C++ اکنون توسط MSBuild ساخته شده است، بخش های
externalNativeBuild
را در اسکریپت های ساخت Gradle خود حذف کنید. این بخشها برای فراخوانی CMake یا ndk-build برای کامپایل کد C/C++ شما استفاده میشوند، اما دیگر مورد نیاز نیستند.MSBUILD_NDK_VERSION
: نسخه ای از NDK که برای ساخت پروژه خود استفاده می کنید. این مقدار را در کادر Android NDK Version در صفحه ویژگی پروژه نشان داده شده در شکل 5 تنظیم کنید.
شکل 5 . ویژگی Android NDK Versionاسکریپت ساخت Gradle باید
ndkVersion
را روی این مقدار تنظیم کند، همانطور که نشان داده شده است:شیار
android { // ... ndkVersion MSBUILD_NDK_VERSION // ... }
کاتلین
android { // ... ndkVersion = MSBUILD_NDK_VERSION // ... }
برای اطلاعات بیشتر، به مبحث Android Studio Install and Configure NDK and CMake مراجعه کنید.