-
[Android] API Key값 관리안드로이드 2022. 1. 4. 23:38728x90반응형
안드로이드에서 특정 API를 사용하려고 할 때 API Key값을 가지고 통신을 하게 됩니다.
이때 API Key값을 코드 내부에 작성을 해야 하는데 Git Hub에 해당 코드를 Push 하여 누구나 접근 가능하게 된다면 난처해질 수 있습니다.
이를 보완하기 위한 방법이 바로 local.properties에 Key값을 작성하는 것입니다.
1. gitignore 파일 작성
local.properties에 Key값을 저장할텐데 해당 파일이 Git에 commit 되는 것을 사전에 막는다.
그 이후에 /build 경로도 막는다. 해당 경로에는 BuildConfig라는 파일이 존재하는데, 여기에 API Key를 변수로 저장하기 때문에 이 파일 또한 commit 되면 안 된다.
//.gitignore local.properties .gradle/ /build
2. local.properties에 api key 저장
// local.properties sdk.dir=Android SDK 경로 api_key="나의 API KEY"
local.properties 파일은 빌드 시스템의 로컬 환경 속성을 구성하기 위해 존재하는 파일이며, SDK의 경로도 기재되어 있습니다.
local.properties에 sdk.dir 바로 밑에 API Key 값을 저장합니다.
이때 값은 꼭 큰 따옴표""로 저장해야 합니다.
3. build.gradle(app)에서 local.properties에 새로 등록한 키값 Load
build.gradle파일에서 Properties를 선언하고 local.properties에 등록된 Key값을 Load 해야 합니다.
plugins{ ... } //추가 //Properties를 선언하고 local.properties에 새로 등록된 api_key값을 load Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) android{ ... defaultConfig{ ... //추가 //load한 api_key값을 BuildConfig 파일에 저장 buildConfigField "String","API_KEY",properties['api_key'] } }
Load 한 api_key값을 BuildConfig 파일에 저장하면, 싱글톤으로 언제 어디서든지 사용이 가능하게 됩니다.
위와 같이 작성한 뒤 빌드를 하게 되면 BuildConfig 파일에 다음과 같이 기존에 생성되어 있지 않던 상수값이 생성됩니다.
public final class BuildConfig { public static final boolean DEBUG = Boolean.parseBoolean("true"); public static final String APPLICATION_ID = "com.example.retrofitExample"; public static final String BUILD_TYPE = "debug"; public static final int VERSION_CODE = 1; public static final String VERSION_NAME = "1.0"; // Field from default config. public static final String API_KEY = "example123"; }
해당 API_KEY값을 다음과 같이 이제 어디서든 사용할 수 있다.
class MainActivity : AppCompatActivity() { ... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) ... } companion object{ private const val API_KEY = BuildConfig.API_KEY } }
반응형4. 협업 시 주의할 점.
local.properties의 내용만 전달하여 동일하게 작성해주면 됩니다. BuildConfig는 프로젝트 빌드 시 생성되기 때문에 gradle에 선언 후 프로젝트 빌드하면 동일하게 사용 가능합니다.
참고
https://velog.io/@hoyaho/API-키-숨기기-|-Hello-Android
https://devvkkid.tistory.com/201728x90반응형'안드로이드' 카테고리의 다른 글
[Android] Fragment LifeCycle (0) 2022.01.12 [Android] Activity Life Cycle (0) 2022.01.11 [Android] 안드로이드 4대 컴포넌트 (0) 2022.01.03 [Android] 안드로이드 View Binding(뷰바인딩) (2) 2021.12.22 [Android][Kotlin] BCrypt 암호화 알고리즘 (0) 2021.07.16