Android 스튜디오의 build.gradle 파일 수정

이 가이드에서는 AGDE 프로젝트에서 build.gradle 파일을 수정하여 Android 스튜디오에서 열 수 있는 방법을 설명합니다. 이 문서는 AGDE 프로젝트를 관리하는 빌드 엔지니어를 주 대상으로 작성되었습니다.

이 가이드 변경 후에는 다음을 실행할 수 있습니다.

  • 명령줄 및 Android 스튜디오에서 Gradle로 빌드합니다.
  • 다중 ABI APK 및 App Bundle을 빌드합니다.
  • Android 스튜디오에서 전체 언어 서비스 지원(예: 정의로 이동)을 사용하여 소스를 수정합니다.
  • Android 스튜디오 디버거를 사용하여 네이티브 및 혼합 프로세스를 디버그합니다.

이 AGDE 기능은 Ninja를 빌드 시스템으로 지원하도록 실험용 Android Gradle 플러그인 기능을 기반으로 빌드되었습니다.

프로젝트 수준 build.gradle 파일 수정

Android Gradle 플러그인 버전 7.3.0-alpha02 이상을 참조하도록 프로젝트 수준 build.gradle을 변경합니다. 예:

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_DIR, MSBUILD_ANDROID_OUTPUT_APK_NAME, MSBUILD_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 스튜디오를 열고 Help/Submit Feedback을 클릭합니다. 해당 버그를 찾을 수 있도록 '맞춤 C/C++ 빌드 시스템'을 언급해 주세요.
  • Android 스튜디오를 설치하지 않은 경우 이 링크를 클릭합니다.