import java.io.FileInputStream
import java.util.Properties
val properties = Properties().apply {
load(FileInputStream(rootProject.file("local.properties")))
}
// 안전하게 키 읽기 (값이 없으면 에러를 띄우도록 하거나 기본값 설정)
val API_KEY: String = properties.getProperty("API_KEY")
?: throw GradleException("API_KEY is not defined in local.properties")
android {
defaultConfig {
...
// 1) buildConfigField: 문자열값은 반드시 큰따옴표로 감싼 리터럴이어야 함
//일반 .kt 코드에서 사용할때
buildConfigField("String", "API_KEY", "\"$API_KEY\"")
// 2) manifestPlaceholders: manifest 치환을 위해 반드시 전달
//mainfest에서 사용할때
manifestPlaceholders["API_KEY"] = API_KEY
...
}
buildFeatures {
buildConfig = true
}
}
API_KEY=API_KEY //이때 쌍따옴표를 사용하지 않음
만약 빨간줄이 뜨면, File -> invalidate Caches -> 이후 다시 빌드
BuildConfig.API_KEY
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication">
<meta-data
android:name="com.example.myapp.API_KEY"
android:value="${apiKeyPlaceholder}" />
</application>