Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

541
Vistas
Provocado por java.lang.RuntimeException: parámetro de tipo faltante

Estoy recuperando un json y cuando lo convierto a List usando gson , la aplicación falla. El proguard está encendido y el problema está ahí.

 fun getQuestions(): List<Question>? { val json = getQuestionsJsonData() return GsonBuilder().create().fromJson( json, object : TypeToken<List<Question>?>() {}.type ) }

Como he ofuscado mi código, no puedo ver el registro de logcat crash así que lo envío a firebase crashlitycs . El mensaje de error es - Caused by java.lang.RuntimeException: Missing type parameter.

Tal vez el tipo de Question se ofusque o suceda algo similar. Mi archivo proguard:

 -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName <fields>; } -keepclassmembers class **.R$* { public static <fields>; } #Serialized -keepnames class * implements java.io.Serializable -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient <fields>; !private <fields>; !private <methods>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } # Uncomment this to preserve the line number information for # debugging stack traces. -keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. -renamesourcefileattribute SourceFile

¿Tal vez tengo que agregar algo en el archivo proguard?

PD: el problema solo está en Gradle 7.1.0

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Bueno, después de cambiar mi código TypeToken , parece que funciona.

Código que no funciona:

 return GsonBuilder().create().fromJson( json, object : TypeToken<List<Question>?>() {}.type )

Solución de trabajo:

 return GsonBuilder().create().fromJson( json, TypeToken.getParameterized(List::class.java, Question::class.java).type )
over 4 years ago · Santiago Trujillo Denunciar

0

En mi caso, solo estaba agregando lo siguiente a la configuración de proguard:

 # Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher. -keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken -keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken

Aquí tienes el conjunto completo de opciones que se necesitan para Gson -> https://github.com/google/gson/blob/master/examples/android-proguard-example/proguard.cfg

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda