안드로이드

[Android] API Key값 관리

Zibro 2022. 1. 4. 23:38
728x90
반응형

안드로이드에서 특정 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/201
728x90
반응형