Android Game Development Extension का इस्तेमाल करने के लिए, कोई प्रोजेक्ट कॉन्फ़िगर करें.
Android गेम डेवलपमेंट एक्सटेंशन, C/C++ सोर्स कोड को शेयर की गई लाइब्रेरी (.so
) और स्टैटिक लाइब्रेरी (.a
) में बनाने के लिए, MSBuild को कॉल करता है. बिल्ड प्रोसेस के हिस्से के तौर पर, कस्टम MSBuild टास्क, Gradle को कॉल करता है, ताकि Java और Kotlin सोर्स कोड को कंपाइल किया जा सके, एसेट को पैकेज किया जा सके, और डिप्लॉयमेंट के लिए APK फ़ाइल जनरेट की जा सके. प्रोजेक्ट को कॉन्फ़िगर करते समय, आपको यह पक्का करना होगा कि MSBuild में Android प्लैटफ़ॉर्म के लिए, ज़रूरी जानकारी मौजूद हो.
MSBuild की मदद से C/C++ प्रोग्राम बनाना
आम तौर पर, Android प्रोजेक्ट को Gradle की मदद से बनाया जाता है. इसमें, प्रोजेक्ट के नेटिव कोड को Gradle पास की मदद से बनाया जाता है. यह पास, CMake या ndk-build में से किसी एक को चलाता है. Visual Studio के लिए Android Game Development Extension की मदद से, बिल्ड करने की प्रोसेस को उलट दिया जाता है. अब MSBuild, बाइल्ड प्रोसेस का शुरुआती पॉइंट है. MSBuild, एक्सटेंशन के हिस्से के तौर पर आपके सिस्टम पर इंस्टॉल किए गए नए Android प्लैटफ़ॉर्म (उदाहरण के लिए, "Android-x86_64") के लिए, पहले सभी C/C++ सोर्स कोड बनाता है. इसके बाद, MSBuild, शेयर की गई लाइब्रेरी फ़ाइलों को पैकेज करने के लिए Gradle को कॉल करता है. इन फ़ाइलों में आपका C/C++ लॉजिक होता है, जिसे APK में पैकेज किया जाता है.
आपको पहले अपने प्रोजेक्ट के मौजूदा बिल्ड लॉजिक को CMake में या MSBuild में ndk-build में दोहराना चाहिए. टारगेट प्लैटफ़ॉर्म को इन पर सेट करें:
- Android-x86
- Android-x86_64
- Android-armeabi-v7a
- Android-arm64-v8a
ये सभी प्लैटफ़ॉर्म, Android Game Development Extension की ओर से उपलब्ध कराए जाते हैं.
कंपाइल और लिंक करने के विकल्प सेट करना
AGDE, आपके चुने गए NDK का इस्तेमाल करके, आपके ऐप्लिकेशन के C/C++ हिस्से को बनाते समय, डिफ़ॉल्ट तौर पर कॉम्पाइल और लिंक करने के विकल्पों का पता लगाता है.
अगर आपको कंपाइल या लिंक करने के इन विकल्पों को पसंद के मुताबिक बनाना है, तो प्रोजेक्ट प्रॉपर्टी का इस्तेमाल करके उन्हें सेट किया जा सकता है. आपको सबसे सामान्य विकल्प, C/C++ (कंपाइलेशन के लिए), लाइब्रेरियन (स्टैटिक लाइब्रेरी को संग्रहित करने के लिए) और लिंकर (डाइनैमिक लाइब्रेरी को लिंक करने के लिए) ग्रुप में मिल सकते हैं. अगर आपको कोई अन्य कस्टम विकल्प पास करना है, तो उसे कमांड लाइन सेक्शन में जोड़ा जा सकता है. उदाहरण के लिए, अगर आपके पास r28 से पहले के वर्शन का NDK टूल है, तो हो सकता है कि आप अपने ऐप्लिकेशन को 16 केबी के पेज साइज़ के साथ काम करने के लिए, लिंकर फ़्लैग सेट करना चाहें.
Android प्लैटफ़ॉर्म जोड़ना
टीपोट के सैंपल प्रोजेक्ट में Android प्लैटफ़ॉर्म शामिल हैं. हालांकि, किसी मौजूदा प्रोजेक्ट में Android प्लैटफ़ॉर्म को मैन्युअल तरीके से जोड़ना होगा. नया प्लैटफ़ॉर्म जोड़ने के लिए, Visual Studio में ये काम करें:
- बिल्ड > Configuration Manager चुनें.
- सक्रिय समाधान प्लैटफ़ॉर्म में जाकर, <नया> चुनें.
नए प्लैटफ़ॉर्म के लिए, इनमें से कोई एक टाइप करें:
- Android-armeabi-v7a
- Android-arm64-v8a
- Android-x86
- Android-x86_64
इससे सेटिंग कॉपी करें बॉक्स में, कोई दूसरा मौजूदा Android प्लैटफ़ॉर्म चुनें. अगर आपके पास अभी तक कोई Android प्लैटफ़ॉर्म नहीं है, तो <खाली है> चुनें. पक्का करें कि आपने नए प्रोजेक्ट प्लैटफ़ॉर्म बनाएं को चालू किया हो.
Android APK आइटम जोड़ना
जोड़ें > नया आइटम > Visual C++ > Android > Android APK चुनें और जोड़ें पर क्लिक करें. नीचे दिए गए डायलॉग बॉक्स में, Android ऐप्लिकेशन को कॉन्फ़िगर करें.
- ऐप्लिकेशन का नाम: आपके Android ऐप्लिकेशन का ऐसा नाम जिसे कोई भी पढ़ सके.
- ऐप्लिकेशन आईडी: यह आपके Android ऐप्लिकेशन का यूनीक आइडेंटिफ़ायर होता है.
- सलूशन एक्सप्लोरर की जगह: उस वर्चुअल फ़ोल्डर की जगह जहां Android पैकेजिंग से जुड़ी जोड़ी गई फ़ाइलें मौजूद हैं. डिफ़ॉल्ट रूप से, ये फ़ाइलें प्रोजेक्ट में एक ही नाम वाले फ़ोल्डर में भी मौजूद होती हैं. सहायता फ़ाइलों को पसंद के मुताबिक जगह पर डालें चेकबॉक्स चुनकर और पसंद के मुताबिक जगह तय करके, जगह को पसंद के मुताबिक बनाया जा सकता है. वर्चुअल फ़ोल्डर अब भी, Solution Explorer में मौजूद मौजूदा प्रोजेक्ट में दिखेगा.
APK बनाने के लिए, MSBuild को Gradle को कॉल करने के लिए सेट अप करना
MSBuild, Gradle को तब तक नहीं चला सकता, जब तक उसे Gradle प्रोजेक्ट की जगह की जानकारी नहीं होती. इस जगह को सेट करने के लिए, Gradle बिल्ड डायरेक्ट्री प्रॉपर्टी का इस्तेमाल करें, जैसा कि पहला इमेज में दिखाया गया है.
पहली इमेज. Gradle बिल्ड डायरेक्ट्री प्रॉपर्टी
इसके अलावा, ऐप्लिकेशन मॉड्यूल, ऐप्लिकेशन वैरिएंट, और APK नाम प्रॉपर्टी (जैसा कि पिछली इमेज में दिखाया गया है) सेट करें, ताकि MSBuild को पता चल सके कि क्या बनाना है.
- ऐप्लिकेशन मॉड्यूल: Gradle सब-प्रोजेक्ट का नाम. यह
settings.gradle
फ़ाइल में सेट किया गया मुख्य प्रोजेक्ट है. आम तौर पर, Android Studio का इस्तेमाल करके सीधे तौर पर बनाए गए प्रोजेक्ट के लिए, इसेapp
कहा जाता है. - ऐप्लिकेशन का वैरिएंट: वह Android वैरिएंट जिसे बिल्ड करना है. यह वैल्यू, MSBuild कॉन्फ़िगरेशन के हिसाब से सेट की जानी चाहिए. उदाहरण के लिए, डीबग बिल्ड के लिए, डीबग वैरिएंट पर वैल्यू सेट होनी चाहिए. अगर आपके प्रोजेक्ट के MSBuild कॉन्फ़िगरेशन का नाम, Gradle वैरिएंट के नाम से मेल खाता है, तो सिर्फ़
$(Configuration)
की डिफ़ॉल्ट वैल्यू का इस्तेमाल करें. - APK का नाम: जनरेट की गई APK फ़ाइल का नाम, जिसका इस्तेमाल आपके डेवलपमेंट कंप्यूटर पर डीबग करने और प्रोफ़ाइल करने के लिए किया जाता है. यह नाम Gradle को पास किया जाता है और आपकी Gradle बिल्ड स्क्रिप्ट को इस नाम का इस्तेमाल करना चाहिए. इसके बारे में ज़्यादा जानने के लिए, नीचे दिए गए सेक्शन में प्रॉपर्टी
MSBUILD_ANDROID_OUTPUT_APK_NAME
देखें.
अपनी Gradle बिल्ड स्क्रिप्ट में बदलाव करना
बिल्ड के दौरान, MSBuild इस जानकारी को प्रोजेक्ट प्रॉपर्टी के तौर पर, Gradle स्क्रिप्ट को भेजता है. इन प्रॉपर्टी को पढ़ने के लिए, अपने प्रोजेक्ट की मौजूदा बिल्ड स्क्रिप्ट (आम तौर पर, इनका नाम build.gradle
होता है) बदलें.
MSBUILD_MIN_SDK_VERSION
: APK बनाते समय, SDK टूल का कम से कम वर्शन. इस वैल्यू को, दूसरे चित्र में दिखाए गए प्रोजेक्ट प्रॉपर्टी पेज पर मौजूद Android SDK टूल का कम से कम वर्शन बॉक्स में सेट करें.
दूसरी इमेज. Android SDK टूल का कम से कम वर्शन प्रॉपर्टीGradle बिल्ड स्क्रिप्ट को
minSdkVersion
को इस वैल्यू पर सेट करना चाहिए, जैसा कि यहां दिखाया गया है.Groovy
android { // ... defaultConfig { applicationId "com.yourcompany.yourapp" minSdkVersion MSBUILD_MIN_SDK_VERSION // ... } // ... }
Kotlin
android { // ... defaultConfig { applicationId = "com.yourcompany.yourapp" minSdkVersion(MSBUILD_MIN_SDK_VERSION) // ... } // ... }
MSBUILD_ANDROID_OUTPUT_APK_NAME
: Gradle के ज़रिए बनाए गए APK का अनुमानित नाम. Android Game Development Extension, इस नाम से मैच होने वाला APK खोजेगा और फिर उसे कनेक्ट किए गए डिवाइसों पर डिप्लॉय करेगा. ऐसा, डिबग करने और प्रोफ़ाइल बनाने के लिए किया जाएगा. इस वैल्यू को APK का नाम बॉक्स में सेट करें. यह बॉक्स, तीसरे चित्र में दिखाए गए प्रोजेक्ट प्रॉपर्टी पेज पर मौजूद होता है.
तीसरी इमेज. APK का नाम प्रॉपर्टीGradle बिल्ड स्क्रिप्ट को इस प्रॉपर्टी का पालन करना चाहिए. उदाहरण के लिए, यहां दिए गए उदाहरण में, सभी वैरिएंट के लिए आउटपुट APK का नाम, MSBuild के चुने गए नाम पर सेट किया गया है.
Groovy
android { // ... applicationVariants.all { variant -> variant.outputs.all { outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME } } // ... }
Kotlin
android { // ... applicationVariants.all { variant -> variant.outputs.all { outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME } } // ... }
MSBUILD_JNI_LIBS_SRC_DIR
: MSBuild की मदद से बनाई गई शेयर की गई लाइब्रेरी (.so
फ़ाइलें) वाली डायरेक्ट्री. इस वैल्यू को नीचे दिए गए प्रोजेक्ट प्रॉपर्टी पेज पर, आउटपुट डायरेक्ट्री बॉक्स में सेट करें. डिफ़ॉल्ट रूप से, यह वैल्यू Visual Studio प्रोजेक्ट के लिए आउटपुट डायरेक्ट्री प्रॉपर्टी होती है, जैसा कि चौथे चित्र में दिखाया गया है.
चौथी इमेज. आउटपुट डायरेक्ट्री प्रॉपर्टीGradle को APK में इस फ़ोल्डर में शेयर की गई लाइब्रेरी फ़ाइलों को पैकेज करना चाहिए, ताकि Android ऐप्लिकेशन उन्हें रनटाइम पर लोड कर सके.
Groovy
android { // ... sourceSets { main { jniLibs.srcDirs += [MSBUILD_JNI_LIBS_SRC_DIR] } } // ... }
Kotlin
android { // ... sourceSets.getByName("main") { jniLibs.srcDir(MSBUILD_JNI_LIBS_SRC_DIR) } // ... }
इसके अलावा, अब MSBuild की मदद से C/C++ कोड बनाया जाता है. इसलिए, अपनी Gradle बिल्ड स्क्रिप्ट में
externalNativeBuild
सेक्शन हटाएं. इन सेक्शन का इस्तेमाल, आपके C/C++ कोड को कंपाइल करने के लिए, CMake या ndk-build को शुरू करने के लिए किया जाता था. हालांकि, अब इनकी ज़रूरत नहीं है.MSBUILD_NDK_VERSION
: प्रोजेक्ट बनाने के लिए, NDK का वह वर्शन जिसका इस्तेमाल करना है. इस वैल्यू को, Android NDK वर्शन बॉक्स में सेट करें. यह बॉक्स, पांचवें चित्र में दिखाए गए प्रोजेक्ट प्रॉपर्टी पेज पर मौजूद होता है.
पांचवीं इमेज. Android एनडीके (NDK) वर्शन प्रॉपर्टीGradle बिल्ड स्क्रिप्ट को
ndkVersion
को इस वैल्यू पर सेट करना चाहिए, जैसा कि दिखाया गया है:Groovy
android { // ... ndkVersion MSBUILD_NDK_VERSION // ... }
Kotlin
android { // ... ndkVersion = MSBUILD_NDK_VERSION // ... }
ज़्यादा जानकारी के लिए, Android Studio का विषय NDK और CMake इंस्टॉल और कॉन्फ़िगर करना देखें.