針對 Android Studio 修改 build.gradle 檔案

本指南說明如何修改 AGDE 專案中的 build.gradle 檔案,讓這些檔案能夠在 Android Studio 中開啟。內容的主要對象為管理 AGDE 專案的建構工程師。

完成本指南中的變更後,您應該能夠:

  • 透過指令列和 Android Studio 使用 Gradle 進行建構。
  • 建構多 ABI 的 APK 和應用程式套件。
  • 使用 Android Studio 中的完整語言服務支援 (前往定義等等) 編輯原始碼。
  • 使用 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
    

意見回饋

這是一項實驗功能,歡迎您提供寶貴的意見。方法如下:

  • 如果是一般的留言和意見回饋,您可以對這個錯誤留言。
  • 如要回報錯誤,請開啟 Android Studio,然後依序點選「Help」>「Submit Feedback」。請務必參閱「自訂 C/C++ 建構系統」,以利修正錯誤。
  • 如果您沒有安裝 Android Studio,請點選這個連結。