proguard-android-optimize.txt
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), '[proguard-rules.pro](<http://proguard-rules.pro/>)'
- “proguard-android-optimize.txt” 는 최적화 수준이 “proguard-android.txt” 에 비해서 더 공격적으로 최적화를 진행한다.
- 따라서 난독화 도구에 의해 런타임에서 제네릭 정보를 제거하거나 변경할 수 있다.
- 따라서, 타입 정보가 반드시 필요한 매서드의 경우에는 오류가 발생한다.
- ex) 나는 com.google.gson.reflect 의 TypeToken 과 같은 메서드를 사용했었다.
해결
1. 위에서 사용한 “proguard-android-optimize.txt” 대신 “proguard-android.txt” 을 사용
proguardFiles getDefaultProguardFile('proguard-android.txt'), '[proguard-rules.pro](<http://proguard-rules.pro/>)'
2. ProGuard/R8 규칙 추가
ProGuard 또는 R8 설정 파일에 Gson과 관련된 클래스를 난독화에서 제외하는 규칙을 추가
-keep class com.google.gson.** { *; }
-keepattributes Signature
-keepattributes *Annotation*
-keepattributes EnclosingMethod
3. 특정 클래스 보존: DataCountryCode 클래스와 그 내부의 필드가 난독화 과정에서 변경되지 않도록 설정 파일에 해당 클래스를 난독화에서 제외하는 규칙을 추가
-keep class com.yourapp.DataCountryCode { *; }
4. 제네릭 타입 정보 보존
keepattributes Signature 규칙을 추가
'Mobile > Android' 카테고리의 다른 글
| [Android] gRPC keepAlive 적용기 (2) | 2024.05.25 |
|---|---|
| [Jetpack] Compose 간단 개념 정리 (0) | 2024.05.25 |
| [Jetpack] Navigation 간단 개념 정리 (1) | 2024.05.25 |
| proto file 한글 주석이 깨지는 현상 (0) | 2023.05.19 |
| [해결][Android] Error: tools:replace specified at line:22 for attribute android:appComponentFactory (0) | 2022.11.22 |