마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

local.properties에 api key 값 숨기기

0 추천

local properties 내부에

kakao_api_key="..."

이런 식으로 적어둔 뒤

build.gradle(app) 내에서

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def kakao_api_key= properties['kakao_api_key']

 

android {

defaultConfig {
    manifestPlaceholders = [kakao_api_key: kakao_api_key]
    buildConfigField "String", "kakao_api_key", kakao_api_key
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

...

}

이렇게 구현한 후,

manifest.xml에서

<data android:host="oauth"
    android:scheme="kakao${kakao_api_key}" />

이렇게 사용했습니다.

api 키 값을 숨기려면 이렇게 구현한다고 해서 해보았는데,

 

키 값이 잘못되면 아예 구동이 안되듯이 작동하네요..

혹시나 키값이 잘못된건가? 싶어서 이렇게 안하고 kakao developer의 내 어플리케이션 내에 있는 native app 키값을 그대로 복사 붙여였기 하여 실행해보았는데 오류 없이 정상적으로 작동하는 것을 볼 수 있었습니다.

key 값을 숨기기 위해서 이렇게 한 것인데, 제가 잘못 구현한 부분이라도 있는 것일까요ㅠㅠ

도움 주시면 감사하겠습니다. 

 

hand (1,150 포인트) 님이 2022년 10월 19일 질문

1개의 답변

0 추천
 
채택된 답변
개발자 문서에 나온 것 처럼 buildConfigField에 들어갈 변수명을 아래처럼
\"감싸고$사용해서  변수를 참조하세요.

      buildConfigField("String",
                       "kakao_api_key",
                       "\"${kakao_api_key}\"")
  }

그리고 AndroidMenifest.xml에 실제 어떤 값이 들어감ㅅ는지는 nerge된 AndroidMenifest.xml를 찾아서 확인해 보세요
spark (226,380 포인트) 님이 2022년 10월 20일 답변
hand님이 2022년 10월 20일 채택됨
spark님 감사합니다!
local.properties에서 "" 안에 키 값을 넣어놨었는데,
이렇게 해야지만, BuildConfig 안에 String 값으로 저장이 되더라구요
"" 안쓰고 local.properties에 작성을 한뒤, spark님이 도움주신 방법으로 해보니 BuildConfig에서도 정상적으로 String 값으로 저장되고, manifest에서도 잘 들어갔는지, 작동 잘 되는 것을 확인할 수 있었습니다. 감사합니다!
...