Android
[Android] AndroidManifest 값 동적 주입 (manifestPlaceholders)
도토리흑미
2023. 12. 7. 20:19
manifestPlaceholders는 Gradle의 build.gradle 파일에서 AndroidManifest.xml에 값을 동적으로 주입할 수 있게 해줍니다.
AndroidManifest.xml에는 android:value="${MY_CUSTOM_VALUE}"와 같은 형태로 placeholder를 사용할 수 있습니다. 이러한 placeholders를 manifestPlaceholders라고 부릅니다.
Gradle은 이러한 placeholders를 build.gradle 파일에 지정된 key-value pairs로 대체합니다.
android {
defaultConfig {
// ...
manifestPlaceholders = [
MY_CUSTOM_VALUE: "myCustomValue",
ANOTHER_ONE: "anotherOne"
]
}
}
저는 빌드 변형을 나눌 때 사용했습니다.
예를 들어 black / white 다른 버전의 빌드가 있을 때 각 빌드마다 테마가 다르게 적용되어야 한다면 다음과 같이 build.gradle에 설정합니다.
android {
productFlavors {
black {
manifestPlaceholders = [mainTheme: "@style/theme_black"]
}
white {
manifestPlaceholders = [mainTheme: "@style/theme_white"]
}
}
}
그리고 AndroidManifest에 다음과 같이 설정합니다.
<activity
android:name=".MainActivity"
android:theme="${mainTheme}"/>
저는 activity에 적용했지만 상황에 따라 application에 적용할 수도 있겠죠??
유용하게 사용하시길 바랍니다.