티스토리 뷰
ANR 및 비정상 종료 보고서를 통해 버그들을 수정하던 중 이런 경고가 뜨길래 프로가드에 대해 알아보았다.
난독화 되어있는 프로젝트가 아니라서 난독해제 파일을 따로 업로드할 필요는 없어 보인다.
ProGuard
- 코드 난독화를 위한 소프트웨어
- 사용하지 않는, 불필요한 메소드는 제거하여 최대한 단일덱스로 동작할 수 있도록 도움을 줌.
- 제거 후 남은 코드를 난독화하여 APK파일의 리버스 엔지니어링(역공학)을 어렵게 할 수 있다.
- 보안에 민감한 앱의 경우 유용함.
단일덱스 파일(DEX)
- Dalvik Executable의 약자로 실행 가능한 바이트코드 파일
- 메소드의 최대 개수가 65,536개( 라이브러리 메소드 + 사용자 작성 메소드 )로 제한 (= 64K 참조제한)
- 메소드의 개수가 많아 사양을 초과할 경우 멀티덱스를 사용해야 함.
멀티덱스(MultiDex)
- 하나의 DEX에서 모든 메소드를 수용하지 못할 경우 여러개의 DEX파일로 동작하는 기능
- 기기에 DEX 파일을 설치하는 작업이 복잡하므로 여러개의 DEX파일을 사용하게 되면 ANR 오류 발생가능성이 생김.
- 빌드 속도가 느려질 수 있음.
멀티덱스를 최대한 피하기 위해서는 프로가드를 사용하는 것이 좋겠다.
----------------------
ProGuard 설정 방법
1. 앱의 build.gradle 파일 접근
2. minifyEnabled 옵션을 false -> true로 변경
( ※ 이 옵션은 빌드 속도를 느리게 하는 원인이 된다. 디버그 빌드를 할 때는 해제, 테스트의 최종 빌드 또는 릴리즈 빌드일 때 사용하는 것이 좋겠다. )
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
...
}
3. 빌드
------------------------
이미지에서처럼 Proguard를 사용하여 난독화를 하면 비정상종료 보고서에서도 스택 추적이 힘들어진다고 한다.
난독 해제 파일을 업로드 하면 비정상종료 보고서가 정상적으로 보이지 않을까 싶다.
매핑 파일 위치 <module-name>/build/outputs/mapping/release/mapping.txt (프로가드 설정 후 빌드했을 때 생성된다.)
Android vitals -> 난독 해제 파일에서 버전에 맞게 업로드
'안드로이드' 카테고리의 다른 글
[Android] 플레이스토어에서 설치한 앱이 Signed APK로 업데이트가 안되는 이유 (0) | 2022.06.29 |
---|---|
Unknown Device 연결하기 (0) | 2020.07.28 |
Kotlin Type Size (0) | 2018.11.27 |
스크롤뷰 안에 있는 webView에서 스크롤이 가능하게 하려면! (0) | 2018.09.15 |
.so 파일을 연결할 때는, (0) | 2018.09.10 |
- Total
- Today
- Yesterday
- ReactNative 한글
- uicollecionview
- 12.5
- jpeg
- TextInput 한글
- F
- Gif
- zip
- DEX
- multiple commands produce
- 프로가드
- env: python
- WKwebview
- idea
- idea command
- local
- png
- cocoapods
- HTML
- Monterey
- mac command
- multidex
- proguard
- Podfile
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |