Gradle 템플릿은 Gradle을 사용하여 Android 애플리케이션을 빌드하는 방법을 설정합니다. 각 Gradle 템플릿은 단일 Gradle 프로젝트를 나타냅니다. Gradle 프로젝트는 다른 Gradle 프로젝트를 포함하고 이에 의존할 수 있습니다.
Gradle 템플릿은 다음의 파일로 구성됩니다.
File | 위치 | 내용물 |
---|---|---|
baseProjectTemplate.gradle |
익스포트한 프로젝트의 root/build.gradle 폴더 |
최종 Gradle 프로젝트의 모든 모듈에 영향을 미치는 설정 정보가 있습니다. 사용할 Android Gradle 플러그인 버전과 Java 플러그인의 위치를 지정합니다. 이 위치는 프로젝트 내부의 온라인 저장소와 Java 플러그인을 조합하여 지정합니다. |
launcherTemplate.gradle |
익스포트한 프로젝트의 root/launcher/build.gradle 폴더 |
Android 애플리케이션을 빌드하는 방법에 대한 명령어가 있습니다. 여기에는 번들링, 서명, APK를 나누는지 여부가 포함됩니다. unityLibrary 프로젝트에 따라 다르며 .apk 파일이나 앱 번들을 출력합니다. |
mainTemplate.gradle |
익스포트한 프로젝트의 root/unityLibrary/build.gradle 폴더 |
Unity를 라이브러리로 빌드하는 방법에 대한 명령어가 있습니다.이는 .aar 파일을 출력합니다.Unity 에디터의 커스텀 템플릿으로 Unity 템플릿을 오버라이드할 수 있습니다.자세한 내용은 이 페이지의 커스텀 Gradle 빌드 템플릿 제공 섹션을 참조하십시오. |
libTemplate.gradle |
다양함 |
Android 라이브러리 프로젝트 플러그인에 build.gradle 파일이 포함되어 있지 않은 경우 Unity는 파일을 생성하기 위해 libTemplate.gradle 파일을 템플릿으로 사용합니다. Unity가 build.gradle 파일을 생성한 후 또는 플러그인 디렉토리에 이미 파일이 존재하는 경우 Unity는 플러그인을 Gradle 프로젝트에 복사합니다. |
settingsTemplate.gradle |
익스포트한 프로젝트의 root/settings.gradle 파일 |
프로젝트를 빌드할 때 Gradle 빌드 시스템이 포함해야 하는 모듈 이름을 지정합니다.Unity 에디터의 커스텀 템플릿으로 Unity 템플릿을 오버라이드할 수 있습니다.자세한 내용은 이 페이지의 커스텀 Gradle 빌드 템플릿 제공 섹션을 참조하십시오. |
gradleTemplate.properties |
익스포트한 프로젝트의 root/gradle.properties 파일 |
Gradle 빌드 시스템을 설정하고 Java 가상 머신(JVM) 힙의 크기와 같은 속성을 지정합니다. |
Unity가 생성한 Gradle 프로젝트 파일을 더 잘 제어하기 위해 Unity의 기본 Gradle 템플릿 파일을 오버라이드할 수 있습니다.이 작업을 수행하는 방법은 다음과 같습니다.
커스텀 Gradle 템플릿 파일에서 다음 변수를 사용할 수 있습니다.
변수 | 설명 |
---|---|
DEPS | 프로젝트 종속성 리스트입니다. 이는 해당 프로젝트가 사용하는 라이브러리의 리스트입니다. |
APIVERSION | 빌드할 API 버전입니다. Unity는 해당 버전과 TARGETSDKVERSION을 같은 값(Android 플레이어 설정의 Target API Level)으로 설정합니다. |
MINSDKVERSION | 애플리케이션을 지원하는 최소 API 버전입니다. |
BUILDTOOLS | 사용할 SDK 빌드 툴입니다. |
TARGETSDKVERSION | 대상으로 지정할 API 버전입니다. Unity는 해당 버전과 APIVERSION을 같은 값(Android 플레이어 설정의 Target API Level)으로 설정합니다. |
APPLICATIONID | Android 애플리케이션 ID입니다. 예: com.mycompany.myapp |
MINIFY_DEBUG | 디버그 빌드를 축소할지 여부를 나타냅니다. |
PROGUARD_DEBUG | 디버그 빌드에서 축소화를 위해 ProGuard를 사용할지 여부를 나타냅니다. |
MINIFY_RELEASE | 릴리스 빌드를 축소할지 여부를 나타냅니다. |
PROGUARD_RELEASE | 릴리스 빌드에서 축소화를 위해 ProGuard를 사용할지 여부를 나타냅니다. |
USER_PROGUARD | 축소화를 위해 사용할 커스텀 ProGuard 파일을 지정합니다. |
SIGN | 이 빌드가 서명된 경우 signingConfigs 섹션을 완료합니다. |
SIGNCONFIG | 빌드가 서명될지 여부를 나타냅니다. 이 프로퍼티가 signingConfig.release 로 설정되면 빌드가 서명됩니다. |
DIR_GRADLEPROJECT | Unity가 Gradle 프로젝트를 만드는 디렉토리입니다. |
DIR_UNITYPROJECT | Unity 프로젝트의 디렉토리입니다. |
PLAY_ASSET_PACKS | 애플리케이션에 포함할 에셋 팩을 지정합니다. |
커스텀 settingsTemplate.gradle
파일은 다음 변수를 포함할 수도 있습니다.
변수 | 설명 |
---|---|
INCLUDES | Gradle 프로젝트에 포함된 Android Library 플러그인의 목록입니다. |
커스텀 gradleTemplate.properties
파일은 다음 변수를 포함할 수도 있습니다.
변수 | 설명 |
---|---|
JVM_HEAP_SIZE | Java 가상 머신(JVM) 힙의 최대 크기입니다. |
STREAMING_ASSETS | Gradle이 압축하지 않아야 하는 Steaming Assets 폴더에 있는 파일의 목록입니다. |
ADDITIONAL_PROPERTIES | 애플리케이션에 대한 추가 프로퍼티가 있습니다.여기에는 다음이 포함됩니다. • Gradle 템플릿 버전 • Unity 프로젝트에 대한 경로 • 애플리케이션이 Android App Bundle 퍼블리싱 포맷을 사용하는 경우, 네이티브 라이브러리를 압축된 상태로 나타내는 플래그 |
Unity에서 조합된 Gradle 프로젝트를 수정하려면 IPostGenerateGradleAndroidProject에서 상속된 클래스를 생성하고 OnPostGenerateGradleAndroidProject 함수를 오버라이드합니다. 이 함수는 unityLibrary 모듈에 대한 경로를 파라미터로 수신하며 이를 사용하여 C# 스크립팅을 통해 애플리케이션 매니페스트와 리소스에 도달할 수 있습니다.
경고: 이제 Unity는 증분 빌드 파이프라인을 사용하며 이는 Unity가 연속된 빌드에 대해 동일한 Gradle 프로젝트를 다시 사용한다는 의미입니다. 즉 Unity가 모든 빌드에 대해 더 이상 새로운 Gradle 프로젝트를 생성하지 않기 때문에 API를 사용하여 수행하는 모든 수정 사항이 누적됩니다. 예를 들어 이 API를 사용하여 추가 파일을 Gradle 프로젝트에 추가한다면 예상대로 첫 번째 빌드는 작동하지만 두 번째 빌드를 하는 동안에는 해당 파일이 이미 존재합니다. 다른 예로는 이 API를 사용하여 특정 파일에 권한을 추가하는 경우입니다. 각 연속 빌드는 권한에 대해 다른 엔트리를 추가합니다. 수정할 사항이 빌드에 이미 존재하지 않는지 확인하는 것이 중요합니다.