Android/Jetpack Compose

[Jetpack Compose] local.properties에 값 숨기는 방

chattymin 2023. 9. 6. 12:20
728x90
반응형

왜 숨겨야할까?

개발을 하다보면 외부 기능을 사용하고자 api연결을 위한 key를 발급받을 때가 있다.

무료인 기능도 있지만 부분유료, 유료인 상품들이 있다. 만약 내 Key가 유출되어 다른사람이 사용한다면 그 돈도 전부 내가 내야한다.

요즘 외국에서 매크로로 이런거 뽑아낸다더라...

api key값이면 그나마 낫다고 쳐도 aws같은거는 진짜 조심해야한다.

 

그럼 아무데도 안올리면 되지않냐? 싶을 수도 있다.

물론 혼자서 개발할때는 괜찮다. 하지만 팀단위로 개발을 하게 되면 git을 사용할 것이다. private로 작성하면 상관이 없긴 하다.

그렇지만 public으로 공개를 하고자 할때는 값이 나타나면 안되기 때문에 숨겨야 한다.

 

어떻게 해야할까?

가장 먼저 설정해야 하는 것은 git의 gitignore 설정이다.

// .gitignore
# Local configuration file (sdk path, etc)
local.properties
 
# Gradle files
.gradle/
build/

 

Local.properties가 깃에 올라가는 것을 막는다.

그리고 "build/ "를 추가하여 buildConfig가 깃에 올라가는 것을 막는다. 왜 이것도 막는지는 추후에 설명하겠다.

 

위 설정을 했다면

local.properties에 내가 넣고자 하는 key를 넣는다.

local.properties 위치

내부에 들어간다면 sdk.dir이 있을 것이다. 나는 여기 아래에 추가한다.

실제 내가 개발을 할때 썼던 방식이다.

여기서 중요한것은 반드시 큰따옴표""를 사용해야 한다!! 

naver의 키를 연결했기에 위와 같은 방식으로 사용했다.

 

 

이렇게 내가 원하는 값을 넣고나면, 그 값을 앞으로 써달라고 알려줘야 한다.

앱 단위 build.gradle(build.gradle(Module :app))에 아래와 같은 코드를 작성해준다. 

plugins {
    // 생략
}

// local.properties 사용을 위함
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

android {
	// 생략
    
    defaultConfig {
        // 생략

        // naver api key id 지정
        buildConfigField "String", "NAVER_KEY_ID", properties['naver.key.id']

        // naver api key 지정
        buildConfigField "String", "NAVER_KEY", properties['naver.key']
    }
    
	// 생략
}

buildConfigField를 사용해서 원하는 값을 저장해준다.

이 값을 빌드 후 생성된 BuildConfig에 저장되면 언제 어디서든지 사용이 가능하게 된다. 

 

 

BuildConfig로 이동해보자.

이동했을때 난 왜 저렇게 안뜨지???? 싶을 수도 있다.

그건.... 빌드를 안햇으니까요...

짜잔~ 빌드를 하면 생긴답니다.

난 이걸로 30분 날렸다^^

 

내부에 정상적으로 값이 생겼을 거다.

앞으로 쓰고 싶을때 마다

이런 식으로 쓰면 된다.

 

 

근데 git에 안올리면 어떻게 협업해요?

이거 정도는 별도로 이동시켜서 통일시키자.

보안을 위해서 이정도 수고는 해줄 수 있다고 생각한다.

 

 

 

아까운 돈 날아가지 않게 잘 생각하면서 작성해보자.

728x90
반응형