Настроить проект

Настройте проект для использования расширения Android Game Development Extension.

Расширение разработки игр для Android вызывает MSBuild для сборки исходного кода C/C++ в общие библиотеки ( .so ) и статические библиотеки ( .a ). В рамках процесса сборки пользовательская задача MSBuild вызывает Gradle для компиляции исходного кода Java и Kotlin, упаковки ресурсов и создания APK-файла для развертывания. При настройке проекта вы должны убедиться, что MSBuild имеет информацию, необходимую для сборки для платформы Android.

Сборка C/C++ с помощью MSBuild

Типичный проект Android создается с помощью Gradle, где собственный код внутри проекта создается с помощью прохода Gradle, который запускает либо CMake , либо ndk-build . С расширением Android Game Development Extension для 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 Game Development Extension.

Добавьте платформу Android

Хотя пример проекта чайника включает платформы Android, вам необходимо вручную добавить платформу Android в существующий проект. Чтобы добавить новую платформу, выполните в Visual Studio следующие действия:

  1. Выберите «Сборка» > «Диспетчер конфигурации» .
  2. В разделе «Платформа активного решения» выберите <Новый> .
  3. Введите одно из следующих слов для новой платформы:

    • Android-armeabi-v7a
    • Android-arm64-v8a
    • Android-x86
    • Android-x86_64
  4. В поле Копировать настройки из выберите другую существующую платформу Android или <Пусто> , если у вас еще нет платформ Android. Убедитесь, что вы включили параметр «Создавать новые платформы проектов» .

Добавить элемент Android APK

Выберите «Добавить» > «Новый элемент» > Visual C++ > Android > Android APK и нажмите «Добавить» . Настройте приложение Android в следующем диалоговом окне.

  • Имя приложения : удобочитаемое имя вашего приложения Android.
  • Идентификатор приложения : уникальный идентификатор вашего приложения Android.
  • Местоположение обозревателя решений : расположение виртуальной папки, содержащей добавленные файлы поддержки упаковки Android. По умолчанию эти файлы также располагаются в проекте в одноименной папке. Вы можете настроить расположение, установив флажок Помещать файлы поддержки в произвольное расположение и указав произвольное расположение. Виртуальная папка по-прежнему будет находиться в текущем проекте в обозревателе решений.

Заставить MSBuild вызывать Gradle для создания APK

MSBuild не может вызвать Gradle, если ему не известно расположение проекта Gradle. Задайте это местоположение, используя свойство Gradle Build Directory , как показано на рисунке 1.


Рисунок 1 . Свойство каталога сборки Gradle

Кроме того, задайте свойства Application Module , Application Variant и APK Name (как показано на предыдущем изображении), чтобы MSBuild знал, что собирать.

  • Модуль приложения : имя подпроекта Gradle. Это основной проект, заданный в файле settings.gradle . Обычно его называют app для проектов, созданных непосредственно с помощью Android Studio.
  • Вариант приложения : вариант 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. Установите это значение в поле «Минимальная версия Android SDK» на странице свойств проекта, показанной на рис. 2.


    Рисунок 2 . Свойство "Минимальная версия Android SDK"

    Сценарий сборки 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. Расширение разработки игр для Android найдет APK-файл, соответствующий этому имени, а затем развернет его на подключенных устройствах (для отладки и профилирования). Установите это значение в поле «Имя APK» на странице свойств проекта, показанной на рисунке 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. Установите это значение в поле «Каталог вывода» на странице свойств проекта, показанной ниже. По умолчанию это значение является свойством выходного каталога проекта Visual Studio, как показано на рис. 4.


    Рисунок 4 . Свойство выходного каталога

    Gradle должен упаковать файлы общей библиотеки в эту папку внутри APK, чтобы приложение Android могло загружать их во время выполнения.

    классный

    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» на странице свойств проекта, показанной на рисунке 5.


    Рисунок 5 . Свойство версии Android NDK

    Сценарий сборки Gradle должен установить для ndkVersion это значение, как показано:

    классный

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

    Котлин

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

    Дополнительные сведения см. в разделе Android Studio . Установка и настройка NDK и CMake .