본문 바로가기
Android

[Android] BuildConfig 변수 생성/사용하기

by bryan.oh 2020. 3. 2.
반응형

BuildConfig 변수.

 

 

변수 선언

1. build.gradle 의 defaultConfig { 안에 } 사용합니다.

    defaultConfig {
        applicationId "your project"
        minSdkVersion 26
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        buildConfigField "String", "SOME_KEY", '"gDE4g5DFghsf5523HDSFdfg"'
    }

buildConfigField 는 위와 같이 사용할수도있고

buildConfigField("String", "SOME_KEY", '"thisIsSomeKeyString"') 
이렇게 사용할 수 도 있습니다.

 

그리고 debug 와 release 에 따라 다르게 사용하고 싶다면

2. buildTypes 안에 선언하면 됩니다.

buildTypes {

        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-debug.pro'
            buildConfigField "String", "SOME_KEY", '"debug용 키 스트링"'
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            buildConfigField "String", "SOME_KEY", '"release용 키 스트링"'
        }
    }

 

buildConfigField 의 타입이 String 일 때 세번째 파라메터에는 쌍따옴표까지 붙혀줘야합니다.

"\"someString\""
또는
'"someString"'

그리고 문자열 중 줄바꿈 문자가 있을 때

입력하고자 하는 텍스트가 "안녕하세요.\nhello bryan 입니다." 이라면

'"안녕하세요.\\nhello bryan 입니다."'

이렇게 입력하면 됩니다.  \n --> \\n

 

그래서 사용은?

java 에서 BuildConfig.SOME_KEY 와 같이 바로 사용하면 됩니다.

String key = BuildConfig.SOME_KEY;

 

그 외 Type

 

buildConfigField("boolean", "IS_TEST", "true") // boolean
buildConfigField("int", "MAX_AGE", "50") // int

 

참고

코드에 숨기려고 하는 중요한 문자열을 여기에 정의하신다고 해도 숨겨지지 않습니다.

buildConfigField 는 앱 Build 시에 코드에 문자열을 치환해버립니다.

그래서 apk 를 decompile 했을 때 문자열이 소스상에 그대로 노출됩니다.

위의 코드를 예로 들면

코딩은

String decStr = new AesCrypto(BuildConfig.SOME_KEY).decrypt(encStr);

이렇게 했지만 빌드하고 나면

String decStr = new AesCrypto("gDE4g5DFghsf5523HDSFdfg").decrypt(encStr);

이렇게 SOME_KEY 의 문자열로 치환되는 겁니다.

728x90
반응형

댓글