안드로이드에서 "KTS"는 Kotlin Script의 약자로, Kotlin DSL(Domain-Specific Language)을 사용하여 Gradle 빌드 스크립트를 작성하는 방법이다.
이는 기존의 Groovy 스크립트와 다르며 두 가지는 문법 구성과 빌드 구성에서 차이점을 가지고 있다.
따라서 현재 프로젝트에서 사용 중인 스크립트가 KTS인지 Groovy인지 확인한 후 타 기술 블로그의 코드를 참고해야 한다.
⇒ 이 포스팅에서는 KTS 형태의 파일을 사용하여 API 키를 숨기는 과정을 설명한다.
local.properties
에 API 키 저장하기sdk.dir=/Users/yeseul/Library/Android/sdk
awsAccessKey="My access key"
awsSecretKey="My secret key"
🚨 주의
- API 키 값 양쪽에 큰따옴표("")를 반드시 추가
local.properties
파일은 .gitignore에 추가하여 버전 관리에서 제외/local.properties
build.gradle.kts
에서 local.properties
에 저장된 키 가져와 빌드 시 사용할 수 있도록 설정import java.util.Properties
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
// 1. 추가 시작: local.properties 파일 읽기
val localProperties = Properties()
localProperties.load(project.rootProject.file("local.properties").inputStream())
val awsAccessKey = localProperties.getProperty("awsAccessKey")?:""
val awsSecretKey = localProperties.getProperty("awsSecretKey")?:""
// 추가 끝
android {
namespace = "com.example.pie"
compileSdk = 34
defaultConfig {
applicationId = "com.example.pie"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0"
// 2. 추가 시작: BuildConfig에 키 추가
// buildConfigField으로 BuildConfig 클래스에 API 키를 추가
buildConfigField("String", "AWS_ACCESS_KEY", awsAccessKey)
buildConfigField("String", "AWS_SECRET_KEY", awsSecretKey)
// 추가 끝
}
// 3. 추가 시작: Android Gradle Plugin 9.0의 BuildConfig Deprecated 이슈 대응
// buildFeatures를 사용하고 있지 않다면 android {} 내부에 만들어서 사용
buildFeatures {
buildConfig = true
}
// 추가 끝
}
BuildConfig
클래스에서 저장된 키가 컴파일 시 자동으로 생성되는지 확인public final class BuildConfig {
// Field from default config.
public static final String AWS_ACCESS_KEY = "My access key";
// Field from default config.
public static final String AWS_SECRET_KEY = "My secret key";
}
val awsAccessKey = BuildConfig.AWS_ACCESS_KEY
val awsSecretKey = BuildConfig.AWS_SECRET_KEY