반응형
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
반응형
'Android' 카테고리의 다른 글
[Android] Get only file name from path (파일명만 가져오기) (0) | 2020.03.03 |
---|---|
[Android] File copy 방법 몇개 (0) | 2020.03.03 |
[Android] 텍스트, 이미지, 동영상 일반 공유, 카카오톡 공유 (2) | 2020.02.24 |
[Android] Custom Dialog 만들기 (3) | 2020.02.15 |
[Android] TextView 에 UnderLine 표시하기. 밑줄 (0) | 2020.02.12 |
댓글