Saltar al contenido

¿Qué son los archivos .kotlin_builtins y puedo omitirlos de mis uberjars?

Si encuentras algún problema con tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

Estos archivos contienen datos para declaraciones de clases Kotlin estándar (“integradas”) que no se compilan para .class archivos, sino que se asignan a los tipos existentes en la plataforma (en este caso, JVM). Por ejemplo, kotlin/kotlin.kotlin_builtins contiene la información para las clases no físicas en el paquete kotlin: Int, String, Enum, Annotation, Collectionetc

Hay dos escenarios principales cuando se utilizan estos archivos:

  1. El compilador los busca desde kotlin-stdlib en el classpath para determinar qué declaraciones integradas están disponibles.

  2. La biblioteca de reflexión (kotlin-reflect) carga estos archivos como recursos para proporcionar capacidades de reflexión para declaraciones integradas. Por ejemplo, String::class.members devuelve todos los miembros de la clase kotlin.String exactamente de la misma manera que el compilador de Kotlin ve esos miembros (a pesar de que no hay kotlin/String.class archivo y se borra a java.lang.String en código de bytes).

El primer punto claramente no es aplicable en su caso. Y si no usa la reflexión en las clases integradas, creo que es seguro excluir .kotlin_builtins archivos completamente del contenedor resultante.

Puede optimizar/omitir estos de sus JAR/APK:

packagingOptions 
  exclude "/META-INF/*.kotlin_module"
  exclude "**/kotlin/**"

Aun mejor:

packagingOptions 
  exclude "/META-INF/*.kotlin_module"
  exclude "**/kotlin/**"
  exclude "**/*.txt"
  exclude "**/*.xml"
  exclude "**/*.properties"

Fuente: https://github.com/jaredsburrows/android-gif-example/blob/master/build.gradle.kts#L127

Calificaciones y reseñas

Eres capaz de apoyar nuestra ocupación ejecutando un comentario y valorándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *