티스토리 뷰

안드로이드

ProGuard가 뭐지

하악생 2018. 8. 29. 10:29


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 -> 난독 해제 파일에서 버전에 맞게 업로드




출처(https://developer.android.com/studio/build/shrink-code)

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함