[Android] kts(Kotlin DSL) 파일에서 api키 숨기기

알린·2025년 1월 5일
0

Android

목록 보기
14/21

build.gradle.kts(:app) 파일에서 api키 숨기기

1. Groovy VS Kotlin DSL

안드로이드에서 "KTS"는 Kotlin Script의 약자로, Kotlin DSL(Domain-Specific Language)을 사용하여 Gradle 빌드 스크립트를 작성하는 방법이다.
이는 기존의 Groovy 스크립트와 다르며 두 가지는 문법 구성과 빌드 구성에서 차이점을 가지고 있다.

따라서 현재 프로젝트에서 사용 중인 스크립트가 KTS인지 Groovy인지 확인한 후 타 기술 블로그의 코드를 참고해야 한다.
이 포스팅에서는 KTS 형태의 파일을 사용하여 API 키를 숨기는 과정을 설명한다.

2. kts 버전 API 키 숨기기

  1. local.properties에 API 키 저장하기
sdk.dir=/Users/yeseul/Library/Android/sdk
awsAccessKey="My access key"
awsSecretKey="My secret key"

🚨 주의

  • API 키 값 양쪽에 큰따옴표("")를 반드시 추가
  • local.properties 파일은 .gitignore에 추가하여 버전 관리에서 제외
/local.properties
  1. app수준 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
    }
    // 추가 끝
}
  1. 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";
}
  1. Activity나 Fragment에서는 BuildConfig에 접근하여 API 키 사용하기 (Kotlin)
val awsAccessKey = BuildConfig.AWS_ACCESS_KEY
val awsSecretKey = BuildConfig.AWS_SECRET_KEY
profile
Android 짱이 되고싶은 개발 기록 (+ ios도 조금씩,,👩🏻‍💻)

0개의 댓글