핀수로그
  • [Android] 민감한 정보 숨기기 | local.properties에 api key저장하기
    2022년 08월 15일 23시 26분 24초에 업로드 된 글입니다.
    작성자: 핀수
    728x90
    반응형

    그동안은 앱수준의 build.gradle 에서 보관을 하고 있었다.

    (하드코딩 하지 않으려고 변수로 지정해 사용중이었음)

    buildTypes {
        debug {
            minifyEnabled false
            debuggable true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            buildConfigField "String", "BASE_URL", "\"your_url/\""
            buildConfigField "String", "APP_KEY", "\"your_key\""
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    build.gradle..따로 .gitignore에 포함시키지 않았기 때문에

    깃헙에 내 코드를 올리면 내 소중한 key는 만천하에 공개된다....

    N
      O
        O
         o
         o
          o
         o
         。
        。
       .
       .
        .
        .

     

    숨겨야한다.

    중요한 정보를 local.properties에 숨겨보려고 한다.

     

    🤔 local.properties가 모죠

    프로젝트에 사용되는 속성을 구성하는 데 사용

    열어보면 알겠지만 sdk 디렉토리의 경로가 적혀있는 바로 그 파일!

     

    프로젝트를 생성 하면 기본적으로 .gitignore에 지정되어 있다.

    만약 되어있지 않다면 포함시켜 준다.

     

    local.properties

    아래와 같이 숨기고 싶은 값을 적어준다.

    api_url = "your_url"
    api_key = "your_key"

     

    app 수준의 build.gradle에서 저장한 정보를 불러온다.

    plugins {
        id 'com.android.application'
        id 'kotlin-android'
        id 'androidx.navigation.safeargs'
    }
    apply plugin: 'kotlin-kapt'
    
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
    
    android {
    ...

     

    그리고 아까의 buildConfigField 를 아래와 같이 바꿔주면 된다.

    buildTypes {
        debug {
            minifyEnabled false
            debuggable true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            buildConfigField "String", "BASE_URL", properties['api_url']
            buildConfigField "String", "APP_KEY", properties['api_key']
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

     

    빌드를 하고 나면 BuildConfig에 저장되고 프로젝트 어디서든 지정한 변수로 접근이 가능하다.

    (BuildConfig 또한 .gitignore에 포함되어 있기 때문에 외부에 노출되지 않는다.

    → /build 가 깃 이그노어에 포함되어 있으면 된다.)

     


    References

    아래 글을 참고하여 작성 되었습니다.

    https://velog.io/@hoyaho/HideAPIKey

    https://answers.sap.com/questions/12765796/what-is-use-of-localproperties.html

    728x90
    반응형
    댓글