안드로이드 개발 시에 API Key와 암호화 정보등을 코드에 기술해서 git으로 공유하게되면 문제가 발생할 수 있습니다.
그래서 보통은 local.properties를 사용해서 로컬에 저장해두고 git에 업로드 시에 ignore하는 방식으로 소스 코드를 Repo에 올리면 유출을 방지할 수 있습니다.
그리고 BuildConfig라는 것을 사용해서 빌드 할때 코드에 자동 생성되어 반영해주어야만 제대로 적용이 가능합니다.
실제로 프로젝트를 빌드해보면 BuildConfig.java 파일이 자동 생성되어 적용되는 것을 확인 할 수있습니다.
먼저 프로젝트 Root 폴더에 다음과 같이 loacal.properties 파일을 작성해서 API Key 정보를 저장합니다.
# API Key 예제 API_KEY = "39093840093855323"
여기서 반드시 ""를 사용해서 정의해 주어야 합니다.
숫자를 표현하는 방식이 있는데 보통 String을 사용하기 때문에 생략하겠습니다.
이제 BuildConfig.java에 자동으로 반영되게 하기 위해서는 다음과 같이 Build.Gridle.kts 파일에 입력합니다.
import java.util.Properties import java.io.FileInputStream // 위의 라이브러리를 포함해 주세요. .... android { compileSdk = 32 .... // 아래와 같이 local.Properties를 지정해주고 로딩합니다. val properties = Properties().apply { load(FileInputStream(File(rootProject.rootDir, "local.properties"))) } // Key 정보가 없을 경우 ""를 입력해주도록하면 빌드 에러를 방지할 수 있다. val apiKey = properties["API_KEY"] ?: "\"\"" defaultConfig { buildConfigField("String", "API_KEY", "$apiKey") } ....
이제 클린하고 다시 빌드해보면 BuildConfig.Java에 다음과 같이 변수가 정의된 것을 확인할 수 있습니다.
// BuildConfig.java의 내용 public final class BuildConfig { // Field from default config. public static final String API_KEY = "39093840093855323"; }
이제 코들린 코드에서 아래와 같이 사용하면 됩니다.
val apiKey = BuildConfig.API_KEY
이제 git 명령어로 local.properties 파일을 .gitignore파일에 포함 시키면 됩니다.