Настройте проект для использования расширения 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 следующие действия:
- Выберите «Сборка» > «Диспетчер конфигурации» .
- В разделе «Платформа активного решения» выберите <Новый> .
Введите одно из следующих слов для новой платформы:
- Android-armeabi-v7a
- Android-arm64-v8a
- Android-x86
- Android-x86_64
В поле Копировать настройки из выберите другую существующую платформу 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 .