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

175
Visualizações
La metada de la clase de datos se elimina con proguard / R8

Tengo un paquete con algunas clases de datos y estoy tratando de acceder al constructor en tiempo de ejecución usando Kotlin reflection clazz.primaryConstructor . Todo funciona como se esperaba, pero cuando habilito R8, los metadatos de las clases de datos se eliminan, por ejemplo, cuando verifico si el KClass isData devuelve falso y el constructor principal también es nulo, lo que ocurre solo cuando se habilita R8. Intenté todo, incluso agregar la anotación @keep a todas las clases de datos y agregar una regla para mantener todo en el paquete de modelos, también agregué estas reglas

 -keep class kotlin.reflect.** -keep class kotlin.Metadata { *; }

pero aún no tuve suerte, ¿alguna idea de qué está pasando o cómo solucionarlo?

Informe de muestra

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Lo que resultó ser el problema es que R8 incluido con AGP 7.0 (versión con Android Studio - Arctic Fox ) no maneja correctamente los metadatos de Kotlin para Kotlin 1.6.0.

Si usa Kotlin 1.6.0 ( classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0" ) con AGP 7.0, se requiere la versión 3.0.77 de R8 para reducir las bibliotecas de Kotlin y usar kotlin-reflect . Actualizar a AGP 7.0.4 no es suficiente, ya que esa versión se incluye con R8 3.0.76.

Para usar R8 3.0.77, agregue lo siguiente a su settings.gradle o settings.gradle.kts :

 pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:3.0.77") classpath('com.google.guava:guava:30.1.1-jre') } } }

Otra opción para AGP 7.0 es usar Kotlin 1.5.31.

También considere alinear su versión de kotlin-reflect con la versión del compilador de Kotlin.

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