Código Kotlin comstackdo a Jar para ser utilizado para el Proyecto Java?

Escribí una biblioteca de Java en Kotlin, y me gustaría comstackrla en un file jar que sea útil para las aplicaciones de Java y Kotlin.

La idea es que el contenedor debería ser capaz de trabajar en proyectos Java y Kotlin. Hacer un simple ./gradlew clean assemble genera un jar, y cuando inspecciono el jar puedo ver varias importaciones que no están incluidas en el jar que las aplicaciones normales de Java tampoco tendrán acceso:

 import jet.runtime.typeinfo.JetValueParameter; import kotlin.jvm.internal.Intrinsics; import kotlin.jvm.internal.KotlinClass; import kotlin.jvm.internal.KotlinClass.Kind; import kotlin.jvm.internal.KotlinSyntheticClass; import kotlin.jvm.internal.KotlinSyntheticClass.Kind; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; 

¿Cómo podría include las dependencies anteriores en el contenedor? En este momento el flask solo mide 30kb. Preferiría no tener que include todo el time de ejecución de Kotlin tampoco, pero solo comstackr los componentes usados.

Los files binarys de Kotlin usan algunas classs del time de ejecución, pero el set exacto de esas classs no está especificado y puede cambiar incluso entre versiones menores, por lo que no debe confiar en la list que ha proporcionado. Su mejor opción es include el time de ejecución completo de Kotlin con la opción -include-runtime y luego ejecutar ProGuard (como se indica en los comentarios) para excluir las classs no utilizadas.

Puede usar este file de configuration ProGuard mínimo:

 -injars input.jar -outjars output.jar -libraryjars <java.home>/lib/rt.jar -keep class org.jetbrains.annotations.** { public protected *; } -keep class kotlin.jvm.internal.** { public protected *; } -keepattributes Signature,InnerClasses,EnclosingMethod -dontoptimize -dontobfuscate 

Si usa el reflection ( kotlin-reflect.jar ), también debe mantener todo bajo kotlin.reflect.**

  • kotlin android - Xposed IllegalArgumentException 'android.content.res.CoollifeUITpedArray'
  • La validation de la aplicación bloquea los valores de EditText
  • ¿Cuál es la forma recomendada de deserializar un documento de Firestre que contiene una matriz?
  • ¿Por qué no se llama a OnConfigurationChanged?
  • slf4j simple, ¿es posible filtrar posts dentro del mismo nivel?
  • ¿Cómo crear proxy dynamic / transparente en Kotlin?
  • Kotlin comstack para javascript indestructible
  • Obtener un error relacionado con el certificate al download Kotlin en Android Studio
  • ¿Cómo puedo convertir una KFunction sin param de instancia en una KFunction con ella?
  • Señal / evento AboutToQuit en Android
  • ¿Para qué sirve el campo de apoyo de Kotlin?