티스토리 뷰

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에 적용할 수도 있겠죠??

유용하게 사용하시길 바랍니다.