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.**

  • Android con Kotlin - Cómo usar HttpUrlConnection
  • Arquitectura del propio SDK - API de método asíncrono en Kotlin
  • ¿Cómo implementar la function genérica de Interface en Kotlin?
  • Seleccionar propiedad de cada object en una list
  • Kotlin: eliminar nulos de una list (u otra transformación funcional)
  • El locking del service vinculado con "Context.startForegroundService () no llamó al error Service.startForeground ()"
  • Kotlin: llaves de varias expresiones (o declaraciones)
  • ¿Regex o comodín en la statement de Kotlin cuando?