-
외부라이브러리 proguard 설정개발 2023. 7. 12. 13:37
안드로이드 난독화시 외부라이브러리를 포함할경우 해당라이브러리에대한 프로가드룰 예외처리를 해야한다.
유명한 라이브러리들은 해당깃이나 위키등에서 확인하면되지만 그렇지 않는 경우에 아래와 같이 클래스와 메서드를 포함해서 예외처리 하면된다.
Proguard-rules.pro
# Retain service method parameters when optimizing. -keepclassmembers,allowshrinking,allowobfuscation interface * { @retrofit2.http.* <methods>; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keep class * implements java.io.Serializable { *; }코틀린의 경우 Util파일등(클래스가 아닌 kt파일로 생성하는경우)과 같이 클래스가 아닌경우나 클래스(클래스는 @keep 어노테이션으로 난독화예외처리를 할수있다)를 분리하여 여러개의 클래스 파일들이 있는경우 직접지정하여 처리가능하다.
-keep class com.sam4s.** { *; } -keep ?????.ConstantKt.** { *; } -keep class ??????.printer.** { *; }assumnosideeffects 사용시 주의사항
-keep class kotlin.** { *; } -keep class kotlinx.coroutines.** { *; } -keep class org.jetbrains.skia.** { *; } -keep class org.jetbrains.skiko.** { *; } -assumenosideeffects public class androidx.compose.runtime.ComposerKt { void sourceInformation(androidx.compose.runtime.Composer,java.lang.String); void sourceInformationMarkerStart(androidx.compose.runtime.Composer,int,java.lang.String); void sourceInformationMarkerEnd(androidx.compose.runtime.Composer); }https://darphin.tistory.com/67
Android 빌드시 Proguard에서 Log 출력 제거시 발생하는 문제점. assumenosideeffects
개발중이던 앱에서 릴리즈로 뽑아내기만 하면.. 백그라운드에서 CPU를 미친듯이 점유하는 문제가 발생하였습니다.디버그 모드일땐 전혀 문제가 없던데.. 꼭 릴리즈로 빌드하고 나면 그러더군요.
darphin.tistory.com
기타 참고자료
'개발' 카테고리의 다른 글
com.google.firebase.provider.FirebaseInitProvider: android.content.pm.PackageManager$NameNotFoundException 오류 (0) 2023.08.09 안드로이드 스튜디오 sha1 인증키 구하기 (0) 2023.08.03 Compose에서 Android UI계층 포함하기 (0) 2023.07.06 Android 의존성 주입 Hilt - 3 (0) 2023.07.04 Room DB에서 Flow를 사용하여 DB 변경 관찰하기 (0) 2023.07.03