본문 바로가기
작업

안드로이드 릴리즈 모드에서 java.lang.ClassCastException: og.m cannot be cast to fc.f 발생 난독화 문제

by 저녁추천좀 2025. 2. 17.

디버그 모드에서는 문제 없지만, 릴리즈 모드에서

java.lang.ClassCastException: og.m cannot be cast to fc.f

 

com.github.mikephil.charting.data.Entry의 인스턴스를 코틀린 단에서 접근할 경우 에러 발생

 

proguard-rules.pro에

-keep class com.github.mikephil.charting.data.Entry { *; }

 

를 적용할 경우

java.lang.ClassCastException: og.m cannot be cast to com.github.mikephil.charting.data.Entry


에러 발생.
같은 클래스더라도 컴파일 시 다르게 분류됨.

 

-keep class com.github.mikephil.charting.data.** { *; }
-keep class com.example.Entry를 사용하는 클래스 { *; }

로 해결

 

=>
릴리즈 모드에서 코드의 난독화를 수행후 빌드를 진행.
문자의 난독화이기 때문에 같은 클래스명이 더라도 java단과 kotlin 단의 난독화된 심볼이 달라지게됨.


예: A.B가 java에서는 qa.m 으로 kotlin에서는 tw.a 로 난독화


양쪽 다 난독화를 해제해야 컴파일러 단에서 동일한 클래스를 호출하게 된다.