Не совсем понятна задача. Есть Котлин MPP. Который позволяет шарить код или реализовывать логику в общем модуле. Если ты работая в JVM полагаешся на нативный код, скорее всего что-то не так в логике программы.
Логика очень простая. Есть куча нативных либ разного уровня убитости, но с ними необходимо работать. На Java с этим были большие проблемы, посколкьу под каждую такую либу нужно делать JNI обертку - это большая и муторная задача. На Kotlin, это казалось бы должно решаться просто классно - пишем тонкую обертку на KN с использованием Cinterop и прото подключаем как внешний модуль к JVM коду.