Notice
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- jlpt
- coroutine
- suspend
- 학습지
- 일본어문법
- 일본어기초
- posting
- pullrequest
- 진짜일본어
- 책추천
- 코틀린
- errorhandling
- 책리뷰
- androidstudio
- PR
- GIT
- github
- 진짜학습지후기
- KotlinInAction
- webflux
- n3문법
- Kotlin
- CustomTab
- 인공지능
- 진짜학습지
- 안드로이드
- blog
- rxjava
- ai
- Android
Archives
코딩하는 개굴이
안드로이드 앱 난독화 본문
반응형
안드로이드 앱 난독화
난독화의 목적은 앱 클래스, 메서드 및 필드의 이름을 단축해 앱 크기를 줄이는 것으로, 코드를 삭제하지는 않으면서 앱의 크기를 크게 절약할 수 있다.
난독화 장점
- 코드 축소 : 앱에서 사용하지 않는 클래스, 필드, 메서드, 라이브러리의 종속성을 감지하여 안전하게 삭제
- 리소스 축소 : 앱의 라이브러리 종속성에서 사용하지 않는 리소스를 포함하여 패키징된 앱에서 사용하지 않는 리소스 삭제
- 난독화 : 클래스와 멤버 이름을 줄여 DEX 파일 크기를 줄임, 네이밍을 바꿈으로써 가독성을 줄여 소스코드를 보호
- 최적화 : 코드 검사 후 다시 작성하여 DEX 파일 크기를 더 줄임
난독화 방법
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
- minifyEnabled true, shrinkResources true 설정하면 간단히 R8 난독화를 사용할 수 있음(gradle 플러그인 3.4 이상에서)
- proguard는 소스코드 레벨로 난독화를 진행, 그 외의 유료인 dexguard 의 경우 난독화가 유니코드 레벨의 치환으로 진행되어 더욱 강력
- 그 외 바이너리 난독화는 APK에서 클래스 위치 자체도 이동시켜서 원래 위치에서는 없애버리고, 클래스 로더를 이용해서 런타임시 로딩하는 방식을 사용하는게 일반적
난독화 예외
외부 라이브러리를 참조한 경우 등 난독화를 하지 않고 유지해야 하는 경우가 있다. 이럴 때, proguard-project.txt 등의 proguard file에서 -keep class 패키지이름{ *; }
의 코드를 적어 해당 패키지 혹은 클래스를 난독화 예외 처리한다.
외부라이브러리 에러
외부 라이브러리를 참조한 프로젝트는 warning이 발생할 수 있는데 이때, -dontwarn com.google.ads.**
등 warning 이 뜬 목록 패키지 뒤에 **를 붙여 해당 코드 전체에 대해 에러를 내지 않도록 처리할 수 있다.
그 외 추가 구성
참고 링크
반응형
'안드로이드' 카테고리의 다른 글
[안드로이드] 의존성 주입 (DI) 란? (0) | 2021.03.13 |
---|---|
[안드로이드] Textview의 drawable 속성 (0) | 2021.03.06 |
Static 에 대하여 (0) | 2021.02.21 |
Singleton 패턴에 대하여 (0) | 2021.02.21 |
LayoutInflater란 (0) | 2021.02.21 |
Comments