问题标签 [kotlin-multiplatform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1051 浏览

ios - 我可以使用 Kotlin 在 Windows 上为 iOS 开发应用程序吗?

我想在 Windows 上为 iOS 构建一个应用程序。我知道如何使用 Objective-C 在 Windows 上为 iOS 开发应用程序,但我想知道如何使用 Kotlin 在 Windows 上为 iOS 开发应用程序。

0 投票
2 回答
2608 浏览

gradle - 如何使用 Gradle 和 IntelliJ 在 Kotlin 多平台项目中配置 JUnit 5?

JUnit 4(工作)

IntelliJ IDEA 2018.2.3(社区版)中的 Kotlin 多平台模板依赖于 JUnit 4.12build.gradle用于项目的 JVM 部分:

使用这个模板,我可以将测试添加到项目的公共部分,并且测试可以被 IntelliJ 识别:源文件的边缘会显示一个“运行”图标,并且可以通过上下文菜单运行测试。

JUnit 5(在 IntelliJ 中未正确识别测试)

如何使用 JUnit 5 实现类似的设置?

值得注意的是,我使用的是 Gradle 4.10(一些较旧的示例使用自 Gradle 4.6 以来已被弃用junit-platform-gradle-plugin)。关于如何设置的文档已经过时且稀缺:

当我尝试基于 JUnit 5 Gradle 示例build.gradle为项目的 JVM 部分设置时,我可以使用 Gradle 运行测试,但IntelliJ 似乎无法识别我的测试

奇怪的是,当gradle test在 JVM 项目上运行时,有时测试结果会出现在 IntelliJ 的测试结果中,但是当重新运行测试时,会出现“未收到测试事件”的消息。边距中的“运行”图标永远不会出现在源文件中,上下文菜单中的测试选项也不会出现。

其他人似乎也有类似的问题,但尚不清楚这些问题是否相同/相关或已解决,因为:

许多不同的版本、过时的文档和类似的问题使得很难找到有关此问题的更多信息。

0 投票
1 回答
807 浏览

kotlin - 具有共享模块的多平台项目

我正在尝试创建一个具有共享依赖项的多平台项目,但我无法找出我做错了什么。

背景是我想创建一个生成某种配置的库,并将该配置用于应该在 jvm 和 node.js 上运行的运行时库。因此可以共享配置数据类,我想将其放入共享模块中。该代码根本不是特定于平台的。配置生成(我称之为 CLI)应该只是 jvm。所以我有这个模块(带有插件名称):

  • cli (org.jetbrains.kotlin.jvm)
  • 共享(kotlin-platform-common)
  • 运行时共享(kotlin-platform-common)
  • 运行时-js (kotlin-platform-js)
  • runtime-jvm (kotlin-platform-jvm)

我通过 将共享模块设置为依赖compile project(":shared")项,但似乎没有一个共享类位于从运行时开始的模块的类路径中。

这还不可能还是我做错了什么?

0 投票
1 回答
403 浏览

kotlin - Kotlin MPP/Native 构建 - 支持 Java 10

情况

我正在尝试构建https://github.com/JetBrains/kotlin-mpp-example项目,但该任务compileKotlinIos总是失败,因为它试图使用 Java 10 来运行konanc一个java.endorsed.dirs参数。

使用 --info 运行时的任务详细信息:

问题

这应该如何处理?可以以某种方式将其更改为使用 Java 8,或禁用其中一些标志,或者这只是一个我必须等待的错误?

我尝试过的事情

  • 这个问题,我尝试gradle.properties在项目的根目录中创建一个文本org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/

  • 从上面的问题,我无法找到一个gradle.propertiesin ~/.gradle

  • 我尝试将 IntelliJ 设置中的 Gradle JVM 设置为 JDK 8

0 投票
2 回答
1398 浏览

kotlin - 如何让我的 JS 测试出现在 Kotlin Multiplatform 项目中

我正在使用 IntelliJ IDEA Multiplatform 项目,而 jsTest Gradle 任务未检测到任何测试。jvmTest 测试运行没有问题。当我运行带有调试输出的 jsTest 任务时,我可以看到该任务运行并立即完成。

Gradle 版本 4.10.1。Kotlin 版本 1.3.0-eap。

如何纠正 Gradle 配置,或者我可以运行什么命令,以便实际检测到测试,并且(如所写)失败?

构建.gradle:

测试项目_test.js:

0 投票
1 回答
104 浏览

android - 如何将简单的 Kotlin Android ListView 转换为 Kotlin Multi Platform 应用程序?

嗨,我是 Android 和 Kotlin 环境的新手,我来自原生 iOS 背景。

我想创建一个 Kotlin MultiPlatform 应用程序,它可以在 Android 和 iOS 上运行。

为此,我创建了一个简单的列表视图,如下图所示。

列表显示

我的源代码:

## MainActivity.kt

## listview_item.xml

## activity_main.xml

它完美地在 Android Emulator 上运行,然后现在我想转换为 Kotlin Multi Platform 应用程序。

我想在 Android 和 iOS 上运行这个应用程序。

谢谢

0 投票
1 回答
1410 浏览

android - 错误:在 Android Studio 3.1.4 中无法获取 KotlinTargetPreset 的未知属性“iosX64”?

嗨,我是 Android 和 Kotlin 环境的新手,我来自原生 iOS 背景。

我想创建一个 Kotlin MultiPlatform 应用程序,它可以在 Android 和 iOS 上运行。

为此,我正在关注此 https://kotlinlang.org/docs/tutorials/native/mpp-ios-android.html

从上述文档中完成更新 Gradle 脚本过程后,我面临以下问题:

无法为 org.gradle.api.internal.FactoryNamedDomainObjectContainer 类型的 KotlinTargetPreset 容器获取未知属性“iosX64”。

我的 build.gradle 文件路径是/Kotlin_Practice/KTMPDemo/SharedCode/build.gradle

构建.gradle

我可以更新/降级我的 Gradle 吗?我该如何解决上述问题?谢谢你。

我的系统配置:

Mac mini(2014 年末),macOS High Sierra,v10.13.5。

安卓工作室安卓工作室 3.1.4

构建 #AI-173.4907809,构建于 2018 年 7 月 24 日

JRE:1.8.0_152-release-1024-b01 x86_64

JVM:JetBrains sro 的 OpenJDK 64 位服务器 VM

0 投票
1 回答
391 浏览

kotlin - 如何为 kotlin/native 编写注释处理器?

是否可以在 kotlin/native 或 kotlin 多平台模块中编写我们的注释处理器?如果是这样,那怎么办?我为 kotlin 找到了本教程:https ://github.com/osamarao/ViewModelAnnotationsKt 但我不确定如何在 kotlin/native 中实现相同的功能。

0 投票
4 回答
8285 浏览

json - Ktor:在多平台中以 List 为根序列化/反序列化 JSON

我们如何使用 kotlin.serialize 和 Ktor 的 HttpClient 来反序列化/序列化 JSON 并以列表为根?我正在按如下方式创建 HttpClient:

似乎我需要为 List 设置映射器,但是这对于泛型是不可能的。我看到我可以使用 MyClass.serializer().list 为它获取序列化程序,但是将其注册为对 http 请求进行反序列化/序列化并不简单。有人知道一个好的解决方案吗?

0 投票
1 回答
1212 浏览

kotlin - Kotlin 中的多平台 InputStream 替代方案?

我正在寻找输入流的多平台替代方案。我的具体任务是通过 https 从远程服务器获取加密文件并按需解密。

在 Java 领域,我将使用一个实现InputStream代理读取来自 https 库的输入流。如何在针对多个平台的 kotlin 中做同样的事情。

我看到 ktor 返回一个ByteReadChannel,但我不知道哪些函数。

我迷路了,不知道从哪里开始。提前感谢您的帮助。