如何使用 Kotlin 同时定位 JVM/Native 和 Android

Posted

技术标签:

【中文标题】如何使用 Kotlin 同时定位 JVM/Native 和 Android【英文标题】:How to target both JVM/Native and Android with Kotlin 【发布时间】:2019-07-03 16:43:15 【问题描述】:

我一直在尝试编写由服务器(Kotlin 本机/JVM)和客户端(android)共享的代码

我同时拥有 Android Studio 和 IntelliJ IDEA。 我希望能够编写可以从我的 Android 项目中使用并且也可以独立使用的 Kotlin 代码(JVM 或 Native,尚不确定)。 IntelliJ 在项目设置上有很多不错的多平台选项,但我无法从 Android Studio 构建它们。

Kotlin 共享项目有这个插件

plugins id 'kotlin-multiplatform' version '1.3.11'

并且构建良好 - 即我可以从 IntelliJ 运行它,一切都很好。

但是如何将其导入 Android Studio。我做了以下更改

settings.gradle

include ':app', ':shared' project(':shared').projectDir = new File('../../kotlin/shared')

它显然是在尝试从正确的文件构建,但是 gradle sync 立即失败并显示以下消息:

插件 [id: 'kotlin-multiplatform', version: '1.3.11'] 未找到 在以下任何来源中:

Gradle 核心插件(不是核心插件,请参阅https://docs.gradle.org/4.4/userguide/standard_plugins.html 可用的核心插件) 插件存储库(无法解析插件工件 'kotlin-multiplatform:kotlin-multiplatform.gradle.plugin:1.3.11') 在以下存储库中搜索: Gradle Central 插件库

我认为这将是存储库问题,但两个项目(共享库和 Android 项目)只有 mavenCentral。

所以我很困惑。如何为 Android 和 JVM/Native 构建相同的代码?

【问题讨论】:

【参考方案1】:

您在 Gradle 构建中使用了错误的插件 ID。试试

plugins 
    id 'org.jetbrains.kotlin.multiplatform' version '1.3.21'

改为。

ios和Android应用教程看相关https://kotlinlang.org/docs/tutorials/native/mpp-ios-android.html

您可以查看 MPP 库教程https://kotlinlang.org/docs/tutorials/multiplatform-library.html

请在此处https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#publishing-a-multiplatform-library 找到 Kotlin MPP 插件的文档

【讨论】:

就这么简单。谢谢你!

以上是关于如何使用 Kotlin 同时定位 JVM/Native 和 Android的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Graphql-kotlin 查询同时返回数据字段和错误字段

如何在 Kotlin 中同时运行阻塞 Java 代码?

使用 Shadow 重定位的包中的 Kotlin 属性不起作用

kotlin混淆后mapping定位

带有注释的 kotlin 数据类,为啥 @DateTimeFormat 注释可以在没有定位的情况下工作

Kotlin:子构造函数如何使用其父构造函数的辅助构造函数?