목차
map 자료구조를 띄고 있으며 key: value 형식으로 변수를 선언할 수 있다.
ex) manifestPlaceholders = [key1: value1, key2: value2, …]
android {
defaultConfig {
manifestPlaceholders = [hostName:"www.example.com"]
}
...
}
AndroidManifest.xml 파일 안에서 ${key}로 Gradle 빌드 변수값을 얻어올 수 있다.
<intent-filter ... >
<data android:scheme="http" android:host="${hostName}" ... />
...
</intent-filter>
앱을 식별하기 위한 고유한 ID. 기기와 Google Play Store 등에서 이 값으로 앱을 식별한다. 프로젝트에서 보통 여러 빌드 변형을 사용하는데 이 때 applicationIdSuffix를 이용해 applicationId의 값을 com.example.myapp.free, com.example.myapp.pro 등으로 바꾸어 각각 다른 앱으로 식별하게 한다.
android {
defaultConfig {
applicationId "com.example.myapp"
}
productFlavors {
free {
applicationIdSuffix ".free"
}
pro {
applicationIdSuffix ".pro"
}
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
}
AndroidManifest.xml에서 현재 빌드 변형의 applicationId를 참조하고 싶을 땐 아래와 같이 사용한다.
<intent-filter ... >
<action android:name="${applicationId}.TRANSMOGRIFY" />
...
</intent-filter>
위와 같은 방식을 사용하면 각 빌드 변형에 AndroidManifest.xml을 따로 두지 않고 하나의 Manifest 파일에서 처리가능하다.
그럼 각 빌드변형에 따라 아래처럼 빌드가 된다.
free 빌드 변형으로 빌드 시
<intent-filter ... >
<action android:name="com.example.myapp.free.TRANSMOGRIFY" />
...
</intent-filter>
pro 빌드 변형으로 빌드 시
<intent-filter ... >
<action android:name="com.example.myapp.pro.TRANSMOGRIFY" />
...
</intent-filter>
free 빌드 변형, debug 타입으로 빌드 시
<intent-filter ... >
<action android:name="com.example.myapp.free.debug.TRANSMOGRIFY" />
...
</intent-filter>
https://developer.android.com/studio/build/manifest-build-variables
안드로이드 Youtube Android Player API 적용방법 (0) | 2019.09.15 |
---|---|
[Android] error: failed linking file resources. (0) | 2019.09.10 |
공식 문서 기반의 Kotlin 한글 정리 (0) | 2017.10.31 |
JAR, AAR, DEX, APK 차이점 (0) | 2017.03.01 |
Android Studio에서 AIDL 사용하기 (2) | 2016.12.14 |