Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

534
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda