1- # Add project specific ProGuard rules here.
2- # You can control the set of applied configuration files using the
3- # proguardFiles setting in build.gradle.
4- #
5- # For more details, see
6- # http://developer.android.com/guide/developing/tools/proguard.html
1+ -keepattributes SourceFile,LineNumberTable
2+ -renamesourcefileattribute SourceFile
73
8- # If your project uses WebView with JS, uncomment the following
9- # and specify the fully qualified class name to the JavaScript interface
10- # class:
11- #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12- # public *;
13- #}
4+ # [Kakao SDK 버그 방어]
5+ # AccessTokenInterceptor에서 ClientErrorCause 상수를 리플렉션(getField)으로 찾기 때문에 난독화에서 제외함
6+ -keep enum com.kakao.sdk.common.model.ClientErrorCause {
7+ *;
8+ }
149
15- # Uncomment this to preserve the line number information for
16- # debugging stack traces.
17- #-keepattributes SourceFile,LineNumberTable
10+ # [Kotlinx Serialization]
11+ # 모든 @Serializable 클래스의 직렬화 로직 및 serializer 메서드 유지
12+ -keepattributes Annotation, InnerClasses, Signature, Exceptions
13+ -keepclassmembers class * {
14+ @kotlinx.serialization.Serializable *;
15+ }
16+ -keepclassmembers class * {
17+ kotlinx.serialization.KSerializer serializer(...);
18+ }
1819
19- # If you keep the line number information, uncomment this to
20- # hide the original source file name.
21- #-renamesourcefileattribute SourceFile
20+ # [Domain/Data Layer Enums]
21+ # API 응답 매핑 및 리플렉션 방어를 위해 Enum 상수 이름 유지
22+ -keepclassmembers enum com.threegap.bitnagil.domain.**.model.** {
23+ <fields>;
24+ }
25+ -keepclassmembers enum com.threegap.bitnagil.data.**.model.** {
26+ <fields>;
27+ }
28+
29+ # [Compose Navigation Type-Safe Arguments]
30+ # 네비게이션 인자 클래스 및 Route 객체 보존
31+ -keep class com.threegap.bitnagil.presentation.**.model.navarg.** { *; }
32+ -keep class com.threegap.bitnagil.Route** { *; }
33+ # HomeRoute는 navigation.home 패키지로 Route** 패턴 밖이므로 별도 보호
34+ # Compose Navigation이 내부적으로 serializer descriptor name을 route ID로 사용하므로
35+ # deep link 추가 시 repackaging으로 빌드마다 route string이 달라지는 문제 방어
36+ -keep class com.threegap.bitnagil.navigation.home.HomeRoute** { *; }
37+
38+ # [Kotlin Result - Retrofit 반환 타입]
39+ # suspend fun foo(): Result<T> 형태의 Retrofit 인터페이스에서
40+ # R8이 kotlin.Result의 제네릭 타입 인자를 지워 call adapter 탐색 실패 방어
41+ -keep class kotlin.Result { *; }
42+
43+ # [Network Libraries]
44+ # Retrofit 및 OkHttp 어노테이션 유지
45+ -keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
0 commit comments