ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] API Key값 관리
    안드로이드 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
    반응형

    댓글

Designed by ZibroTistory.