자세한 내용
안드로이드 공식 홈페이지
https://developer.android.com/studio/build/shrink-code?hl=ko
목적
- 코드 난독화 -> 디컴파일 등 코드 노출 or 앱 해킹에 대한 방어책 중 하나
이외 리소스 용량 절감 등
적용 예 ( release에만 적용 )
App수준 Gradle ( build.gradle : Module )
> android {
...
buildTypes{
...
release {
minifyEnabled true //code 축소
shrinkResources true //resource 축소
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro', 'gson.pro', 'glide.pro','aws.pro','retrofit2.pro' // ㅇ// 추가 규칙 : 예외 적용 -> retrofit2, glide등 라이브러리에 대한 예외처리 필수
}
}
}
주의사항
두 모드 ( release와 debug) 에 대한 옵션을 상이하게 적용한 경우,
동작 확인 필수
예) debug 모드에서 정상적으로 동작,
스토어에 release 모드로 배포된 앱 런타임중에 예외 발생 가능성 굉장히 높음.
추가사항
2020-11-17
1. Firebase Crashlytics 읽을 수 있는 오류 보고서
- Firebase Crashlytics를 사용할 경우, 읽을 수 있는 오류 보고서가 업로드 되려면 꼭 아래 옵션 적용
관련 링크 :
https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=android
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers.
-keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
- debug 버전엔 위 옵션을 적용안해도 판단된다면 아래 구문 삽입.
이 또한 위 링크에 자세히 설명되어있다.
buildTypes {
debug {
....
firebaseCrashlytics {
mappingFileUploadEnabled false
}
}
}
확인 필요 사항
실제로 Proguard를 적용한 앱을 디컴파일 했을 때,
보안키와 같은 중요한 정보 난독화 여부
'Android > Google Play Console 정책 및 배포 관련' 카테고리의 다른 글
Google Play Console 수익 서비스 수수료 인하 관련 (0) | 2021.06.09 |
---|---|
5월 5일부터는 앱에 광범위한 저장공간 액세스 권한이 필요한 이유를 알려야 합니다. (0) | 2021.04.15 |
[ 2차 업데이트 ]귀하의 앱에서 Google AdMob 광고 게재가 중지되었습니다. (0) | 2020.12.03 |
구글 플레이 콘솔에 업로드한 apk or Android App Bundle ( aab) 파일 제거 (4) | 2020.11.17 |
Vulnerability Leaked AWS Credentials 안드로이드 Android 배포 대응 (0) | 2020.11.16 |