ضبط مشروع

عليك ضبط مشروع لاستخدام إضافة تطوير ألعاب Android.

تستدعي إضافة تطوير ألعاب Android MSBuild إلى رمز المصدر C/C++ في المكتبات المشتركة (.so) والمكتبات الثابتة (.a). وكجزء من عملية الإنشاء، تستدعي مهمة MSBuild المُخصصة Gradle تجميع رمز المصدر بلغة Java ولغة Kotlin ومواد عرض الحزمة وإنشاء ملف APK للنشر. عند تهيئة مشروعك، يجب عليك التأكد من أن MSBuild يحتوي على المعلومات التي يحتاجها لإنشائها لنظام Android الأساسي.

إنشاء C/C++ باستخدام MSBuild

يتم إنشاء مشروع Android نموذجي باستخدام Gradle، حيث يتم إنشاء الرمز الأصلي داخل المشروع بواسطة بطاقة Gradle التي تشغّل إما CMake أو ndk-build. إنّ الإضافة الخاصة بتطوير الألعاب على Android الخاصة بـ Visual Studio، يتم عكس عملية الإصدار. الآن تعد MSBuild نقطة الانطلاق في عملية الإنشاء. يتم إنشاء جميع الرموز البرمجية المصدر بلغة C/C++ أولاً بواسطة MSBuild لأنظمة Android الجديدة المثبَّتة على نظامك كجزء من الإضافة (على سبيل المثال، "Android-x86_64"). بعد ذلك، يستدعي MSBuild إلى Gradle لدمج ملفات المكتبة المشتركة التي تحتوي على منطق C/C++ في حزمة APK.

يجب عليك أولاً تكرار منطق الإصدار الحالي لمشروعك في CMake أو ndk-build في MSBuild. اضبط المنصّات المستهدَفة على ما يلي:

  • Android-x86
  • Android-x86_64
  • Android-armeabi-v7a
  • Android-arm64-v8a

ويتم توفير جميع هذه الأنظمة الأساسية من خلال "إضافة تطوير ألعاب Android".

إضافة نظام Android الأساسي

على الرغم من أن نموذج مشروع إبريق الشاي يتضمن أنظمة أساسية متوافقة مع Android، إلا أنه يجب عليك إضافة نظام Android الأساسي يدويًا إلى مشروع حالي. لإضافة منصة جديدة، قم بما يلي في Visual Studio:

  1. اختَر إنشاء > مدير الإعداد.
  2. ضِمن منصّة الحلول النشطة، اختَر <جديد>.
  3. اكتب واحدًا مما يلي للنظام الأساسي الجديد:

    • Android-armeabi-v7a
    • Android-arm64-v8a
    • Android-x86
    • Android-x86_64
  4. في المربع نسخ الإعدادات من، اختر نظام Android أساسي آخر، أو <إفراغ> إذا لم تكن لديك أي أنظمة أساسية لنظام Android حتى الآن. تأكَّد من تفعيل إنشاء منصات مشاريع جديدة.

إضافة عنصر APK لنظام التشغيل Android

اختَر إضافة > عنصر جديد > Visual C++ > Android > Android APK ثم انقر على إضافة. اضبط تطبيق Android في مربع الحوار التالي.

  • اسم التطبيق: اسم تطبيق Android الذي يمكن للإنسان قراءته.
  • رقم تعريف التطبيق: المعرّف الفريد لتطبيق Android.
  • موقع مستكشف الحلول: موقع المجلد الافتراضي الذي يحتوي على ملفات دعم حزمة Android المُضافة. بشكل افتراضي، توجد هذه الملفات أيضًا في المشروع في مجلد بنفس الاسم. يمكنك تخصيص الموقع عن طريق تحديد مربّع الاختيار وضع ملفات الدعم في موقع مخصص وتحديد موقع مخصص. سيظل المجلد الافتراضي ضمن المشروع الحالي في Solution Explorer (مستكشف الحلول).

جعل MSBuild استدعاء Gradle لإنشاء ملف APK

لا يمكن لـ MSBuild استدعاء Gradle ما لم يعرف موقع مشروع Gradle. قم بتعيين هذا الموقع باستخدام خاصية Gradle Build Directory، كما هو موضح في الشكل 1.


الشكل 1. موقع دليل إنشاء Gradle

بالإضافة إلى ذلك، يجب ضبط الخصائص وحدة التطبيق وصيغة التطبيق واسم APK (كما هو موضّح في الصورة السابقة) لكي تتمكّن MSBuild من معرفة ما يجب إنشاؤه.

  • وحدة التطبيق: اسم مشروع Gradle الفرعي. هذا هو المشروع الرئيسي الذي تم تعيينه في ملف settings.gradle. ويُطلَق عليها عادةً app للمشاريع التي يتم إنشاؤها مباشرةً باستخدام "استوديو Android".
  • صيغة التطبيق: صيغة Android المطلوب إنشاؤها. يجب ضبط هذه القيمة وفقًا لإعدادات MSBuild. على سبيل المثال، يجب أن يحتوي إصدار تصحيح الأخطاء على قيمة معيّنة لمتغير تصحيح الأخطاء. في حال كان اسم إعداد MSBuild لمشروعك يتطابق مع أسماء متغيرات Gradle، ما عليك سوى استخدام القيمة التلقائية لـ $(Configuration).
  • اسم APK: اسم ملف APK الذي تم إنشاؤه والمستخدَم في تصحيح الأخطاء وإنشاء الملفات على جهاز كمبيوتر التطوير. تمّ تمرير هذا الاسم إلى Gradle ويجب أن يلتزم نص إنشاء Gradle بذلك (اطّلِع على السمة MSBUILD_ANDROID_OUTPUT_APK_NAME في القسم التالي).

تعديل النصوص البرمجية لإصدار Gradle

أثناء الإصدار، تمرّر MSBuild المعلومات التالية كخصائص للمشروع إلى نص Gradle البرمجي. يمكنك تغيير النصوص البرمجية الحالية لإنشاء مشروعك (التي تحمل عادةً اسم build.gradle) لقراءة هذه السمات.

  • MSBUILD_MIN_SDK_VERSION: الحد الأدنى من إصدار حزمة SDK لإنشاء حزمة APK. اضبط هذه القيمة في مربّع الحد الأدنى لإصدار SDK لنظام التشغيل Android في صفحة موقع المشروع المعروضة في الشكل 2.


    الشكل 2. موقع الحد الأدنى لإصدار حزمة تطوير البرامج (SDK) لنظام التشغيل Android

    من المفترض أن يضبط النص البرمجي لإنشاء Gradle minSdkVersion على هذه القيمة، كما هو موضّح أدناه.

    رائع

    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: الاسم المتوقع لحزمة APK التي ينشئها Gradle. ستبحث إضافة تطوير ألعاب Android عن حزمة APK مطابقة لهذا الاسم وتنشرها بعد ذلك على الأجهزة المتصلة (لتصحيح الأخطاء وتحديد المواصفات). قم بتعيين هذه القيمة في مربع اسم ملف APK على صفحة خاصية المشروع الموضحة في الشكل 3.


    الشكل 3. السمة اسم ملف APK

    يجب أن يلتزم نص إنشاء Gradle بهذه السمة. على سبيل المثال، يضبط المثال التالي اسم حزمة الإخراج لكل المتغيرات على الاسم الذي اختاره MSBuild.

    رائع

    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: الدليل الذي يحتوي على المكتبات المشتركة (.so ملف) تم إنشاؤه بواسطة MSBuild. قم بتعيين هذه القيمة في مربع دليل الناتج في صفحة موقع المشروع الموضحة أدناه. بشكل افتراضي، هذه القيمة هي خاصية دليل الناتج لمشروع Visual Studio، كما هو موضح في الشكل 4.


    الشكل 4. خاصية دليل المخرجات

    يجب أن تغلِّف Gradle ملفات المكتبة المشتركة في هذا المجلد داخل حزمة APK حتى يتمكّن تطبيق Android من تحميلها في وقت التشغيل.

    رائع

    android {
      // ...
    
      sourceSets {
          main {
              jniLibs.srcDirs += [MSBUILD_JNI_LIBS_SRC_DIR]
          }
      }
    
      // ...
    }
    

    Kotlin

    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 لاستخدامها في إنشاء مشروعك. قم بتعيين هذه القيمة في مربع إصدار NDK من Android في صفحة موقع المشروع الموضحة في الشكل 5.


    الشكل 5. خاصية إصدار NDK على نظام التشغيل Android

    يجب أن يضبط النص البرمجي لإنشاء Gradle ndkVersion على هذه القيمة، كما هو موضّح:

    رائع

    android {
      // ...
    
      ndkVersion MSBUILD_NDK_VERSION
    
      // ...
    }
    

    Kotlin

    android {
      // ...
    
      ndkVersion = MSBUILD_NDK_VERSION
    
      // ...
    }
    

    ولمزيد من المعلومات، يمكنك الاطّلاع على موضوع "استوديو Android" تثبيت NDK وCMaker وضبطهما.