针对 Android Studio 修改 build.gradle 文件

本指南介绍了如何修改 AGDE 项目中的 build.gradle 文件,以便您可以在 Android Studio 中打开它们。本指南主要适用于管理 AGDE 项目的构建工程师。

在完成本指南中的更改后,您应该能够:

  • 从命令行和 Android Studio 中使用 Gradle 进行构建。
  • 构建多 ABI APK 和 App Bundle。
  • 在 Android Studio 中利用完整的语言服务支持来修改源代码(go-to definition 等)。
  • 使用 Android Studio 调试程序调试原生进程和混合进程。

此 AGDE 功能基于实验性 Android Gradle 插件功能构建而成,支持 Ninja 作为构建系统

修改项目级 build.gradle 文件

更改项目级 build.gradle,以引用 Android Gradle 插件 7.3.0-alpha02 或更高版本。例如:

buildscript {
    repositories {
       google()
       mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.3.0-alpha02'
    }
}

此变更生效后,您仍应该能够在 Visual Studio 中构建项目。我们建议您立即试用,因为在做出以下更改之前进行调试将更加轻松。

将 run-msbuild.bat 复制到您的项目中

最新版本的 AGDE 搭载的 Teapot 示例具有名为 run-msbuild.bat 的脚本。此脚本将从 AGP 调用,负责查找和调用 MSBuild。

run-msbuild.bat 复制到包含应用级 build.gradle 文件的文件夹中。

修改应用级 build.gradle 文件

此步骤的主要目标是配置对 run-msbuild.bat 的调用以及移除对 MSBUILD_* 变量的引用。

设置 ndkVersion

ndkVersion 更改为特定的 NDK 版本。例如:

  android {
      ndkVersion "22.1.7171670"
  }

设置 minSdkVersion

minSdkVersion 更改为特定的最低 SDK 版本。例如:

  android {
      defaultConfig {
          minSdkVersion 30
      }
  }

调用 run-msbuild.bat

  1. 添加一个部分,以对项目的解决方案文件调用 run-msbuild.bat

       android {
           defaultConfig {
               externalNativeBuild {
                   experimentalProperties["ninja.abiFilters"] = [ "x86", "arm64-v8a" ]
                   experimentalProperties["ninja.path"] = "Teapot.sln"
                   experimentalProperties["ninja.configure"] = "run-msbuild"
                   experimentalProperties["ninja.arguments"] = [
                           "\${ndk.moduleMakeFile}",
                           "-p:Configuration=\${ndk.variantName}",
                           "-p:Platform=Android-\${ndk.abi}",
                           "-p:NinjaBuildLocation=\${ndk.buildRoot}",
                           "-p:NinjaProject=GameApplication",
                           "-p:RequireAndroidNdkVersion=\${ndk.moduleNdkVersion}",
                           "-p:RequireMinSdkVersion=\${ndk.minPlatform}",
                           "-t:GenerateBuildNinja"
                    ]
               }
           }
       }
    
  2. 删除所有的 MSBUILD_JNI_LIBS_SRC_DIRMSBUILD_ANDROID_OUTPUT_APK_NAMEMSBUILD_ANDROID_GRADLE_BUILD_OUTPUT_DIR 使用代码。

    通常,应用级 build.gradle 文件中的以下代码块可以完全删除。

       sourceSets {
           main {
               jniLibs.srcDirs = [MSBUILD_JNI_LIBS_SRC_DIR]
           }
       }
    
       applicationVariants.all { variant ->
           variant.outputs.all {
               outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME
           }
       }
    
       buildDir = MSBUILD_ANDROID_GRADLE_BUILD_OUTPUT_DIR
    

反馈

此功能是实验性功能,因此如果您能提供反馈,我们将不胜感激。提供方法如下:

  • 对于一般性评论和反馈,可以向此 bug 添加注释。
  • 如要报告 bug,请打开 Android Studio,然后依次点击 Help > Submit Feedback。请务必参考“自定义 C/C++ 构建系统”,以帮助找到 bug。
  • 如果您尚未安装 Android Studio,请点击此链接。