[안드로이드 공부]/안드로이드 공부

Missing type, Progard, Generic 문제

코코모모 2024. 4. 22. 14:11

Progard

java.lang.RuntimeException: Missing type parameter. at cohttp://m.google.gson.reflect.TypeToken.getSuperclassTypeParameter(Unknown Source:26) at cohttp://m.google.gson.reflect.TypeToken.<init>(SourceFile:1) at U2.e$a.<init>(SourceFile:1) at U2.e.a(SourceFile:8)

 

1. 위와 같은 문제 발생시 위치를 알기 어렵다.

--> Release, Debug 모두 확인 시 Release 에서만 발생 확인

 

2. Release 에서만 발생

--> 의심; minify, progard

--> 소스를 제대로 읽지 못해 발생 할 수 있으므로

 

2. gradle에

isMinifyEnabled = false
isDebuggable = true

로 설정 후 Release로 빌드 하면 에러 발생 안 함 확인 됨.

 

3. Progard

-keep class com.google.gson.** { *; }
-keep class com.comostudio.data.** { *; }
-keep class androidx.room.** { *; }
-keep class com.comostudio.workers.** { *; }

순서대로

1. gson 추가 후 TypeToken문제 해결 되고,

2. data에 해당 type 쓴 문제 해결 되고,

3. room에서 해당 type 사용 하는 곳 문제 되고,

4. worker에서 database작업 하는 부분 해결 됨.

 

Generic을 사용 하는 경우 

위와 같이 Progard 에 대해 각별히 신경 써야 알아 먹는다.

 

이와 같이 설정 후 빌드 하면 문제 해결 완료 됨.