Digamos que tengo esta clase
data class Person(val name: String?)Cuando proguardo y ejecuto la aplicación, obtengo la siguiente excepción
kotlin.reflect.jvm.internal.KotlinReflectionInternalError: No accessors or field is found for property val com.whatever.packagee.Person.name: kotlin.String?También descubrí que el problema surge de este código base de reflexión . Cualquier ayuda sería apreciada
Asegúrese de no utilizar opciones de mantenimiento demasiado amplias, ya que esto evitará que ProGuard optimice y reduzca correctamente el código.
Es importante conservar los campos de las clases que desea serializar. Según la excepción que ve, esperaría que una opción -keep similar a la siguiente hiciera el truco;
-keep class com.whatever.packagee.Person { <fields>; }Puede experimentar con estas opciones de mantenimiento a través de ProGuard Playground, que es muy útil para ver qué partes del código se ven afectadas por sus reglas de mantenimiento. De esta manera, puede inspeccionar si se abordaron todos los casos de serialización. Creé un Playground para este caso en particular: Playground link
Esto resolvió el problema para mí.
Agregar lo siguiente a las reglas de proguard
-mantener la clase kotlin.reflect.jvm.internal.**
-mantener la clase kotlin.Metadata { *; }