Android Studio 用に build.gradle ファイルを変更する

このガイドでは、Android Studio で AGDE プロジェクトを開くために build.gradle ファイルを変更する方法について説明します。主な対象読者は、AGDE プロジェクトを管理するビルド エンジニアです。

このガイドに沿って変更を行うと、次のことが可能になります。

  • コマンドラインと Android Studio から Gradle でビルドを行う。
  • マルチ ABI APK と App Bundle をビルドする。
  • 言語サービスを完全にサポートするソース(go-to 定義など)を Android Studio で編集する。
  • Android Studio デバッガを使用して、ネイティブ プロセスと混合プロセスをデバッグする。

この AGDE 機能は、ビルドシステムとしての Ninja をサポートする試験運用版の Android Gradle プラグイン機能を基にして構築されています。

プロジェクト レベルの 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 の検出と呼び出しを行います。

アプリレベルの build.gradle ファイルを含むフォルダに run-msbuild.bat をコピーします。

アプリレベルの 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] をクリックしてください。バグが適切なチームに届くようにするため、「Custom C/C++ Build Systems」と記載してください。
  • Android Studio をインストールしていない場合は、このリンクをクリックしてください。