From d3766ec6101d28bb6f944dee534e89ca653bcf51 Mon Sep 17 00:00:00 2001 From: Sadturtleman Date: Fri, 23 Oct 2026 18:50:57 +0900 Subject: [PATCH] =?UTF-8?q?feat(app):=20release=20=EB=B9=8C=EB=93=9C?= =?UTF-8?q?=EC=97=90=20R8=20=EB=82=9C=EB=8F=85=ED=99=94=C2=B7=EB=A6=AC?= =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=B6=95=EC=86=8C=EB=A5=BC=20=EC=BC=A0?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - release 에 isMinifyEnabled·isShrinkResources 를 켠다. APK 66MB → 44MB. - 카카오 SDK keep 규칙 추가. ClientError 가 에러 원인 enum 필드를 이름으로 리플렉션 조회해 난독화 시 앱 시작 직후 NoSuchFieldException(TokenNotFound)으로 죽었다. 공식 가이드 규칙을 따른다. - 카카오맵 SDK 는 네이티브 엔진이 JNI 로 클래스를 찾으므로 패키지 전체를 남긴다. - 매핑 파일은 Crashlytics 플러그인이 올리고, AAB 에도 포함된다. 에뮬레이터에서 minified release 를 실행해 온보딩·로그인 화면, 카카오·구글 로그인 진입까지 크래시 없음을 확인했다. 로그인 이후 화면은 계정이 없어 확인하지 못했다. Closes #636 Co-Authored-By: Claude Opus 5.5 (1M context) --- app/build.gradle.kts | 3 ++- app/proguard-rules.pro | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index fef63ea6..6c7bed1f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -125,7 +125,8 @@ android { signingConfig = signingConfigs.findByName("release") // 릴리즈는 운영 서버로 고정한다 buildConfigField("String", "BASE_URL", "\"https://prod.ruleup.co.kr/api\"") - isMinifyEnabled = false + isMinifyEnabled = true + isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index e69de29b..607073f6 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -0,0 +1,12 @@ + +# 카카오 SDK — ClientError 가 에러 원인 enum 필드를 이름으로 리플렉션 조회한다(난독화 시 NoSuchFieldException) +# https://developers.kakao.com/docs/latest/ko/android/getting-started#project-pro-guard +-keep class com.kakao.sdk.**.model.* { ; } +-keep class * extends com.google.gson.TypeAdapter +-dontwarn org.bouncycastle.jsse.** +-dontwarn org.conscrypt.* +-dontwarn org.openjsse.** + +# 카카오맵 SDK(네이티브 엔진이 JNI 로 클래스를 찾는다) +-keep class com.kakao.vectormap.** { *; } +-keep interface com.kakao.vectormap.**