问题标签 [kotlin-multiplatform-mobile]

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 回答
532 浏览

kotlin - KMM - 如何将改造添加到 :shared 模块 (commonMain)

我想将 Retrofit 添加到 :shared 模块(commonMain)中。

但在commonMain我看不到改造类。在androidMain我可以看到它。那是一种魔法。我没有将 Retrofit 添加到androidMain.

请帮我。提前致谢。

0 投票
0 回答
113 浏览

kotlin - 前端内部错误:无法分析 SQLDelight 表的声明

我试图./gradlew build在我的 kotlin 多平台项目上运行,但是构建失败并出现此错误。似乎无法生成 SQLDelight Event 数据库。

完整的日志文件可以在 https://gist.github.com/ExtremelySunnyYK/5d237b6e2ef387837cd3dbc40bddf50d查看

在我集成 kmp(kotlin 多平台)项目的 ios 部分之前,kmp 的 android 部分构建良好,并且生成了事件数据库。

但是在我将 ios 部分与id("com.chromaticnoise.multiplatform-swiftpackage") version "2.0.3"https://johnoreilly.dev/posts/kotlinmultiplatform-swift-package/ 集成后 ,构建现在失败并出现错误org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException.invalidWireType(InvalidProtocolBufferException.java:99)

这是我的依赖版本

  • 摇篮版本:7.1
  • Kotlin Gradle 插件:1.5.0
  • Android 构建 Gradle:4.2
  • SQL喜悦:1.5.0
  • Android Studio 4.2 Build #AI-202.7660.26.42.7322048,构建于 2021 年 4 月 29 日,macOS 10.15.7

我曾尝试降级我的 android studio 版本,将 gradle 版本降级到 6.8,但我收到了同样的错误。

0 投票
1 回答
44 浏览

gradle - KMM:切换操作系统进行构建时,由于被另一个 Gradle 实例锁定而导致构建失败

我创建了一个 KMM 项目(ios 框架发行版是 CocoaPods),并在不更改代码的情况下构建了应用程序。

当我在构建 Android 应用程序之后构建 iOS 应用程序时(即使我在 iOS 之后运行 Android),它会失败并出现以下错误。

如果我杀死另一个 Gradle 进程并删除锁定文件,则构建将成功。但我不能每次都这样做。

我不知道有什么问题以及与其他人的不同之处。

顺便说一句,我创建了支持改进的 Gradle 任务embedAndSignAppleFrameworkForXcode的项目。


我的环境如下...

  • macOS 大苏尔 11.4
  • 安卓工作室 4.2.2
  • 科特林 1.5.21
  • Kotlin 多平台移动版 0.2.6 (202-1.5.10-release-894-IJ)-8
  • 摇篮 6.7.1
  • AGP 4.2.2
  • Java 11.0.8 2020-07-14 LTS
  • Xcode: 12.5.1 (12E507)
0 投票
1 回答
67 浏览

charts - Kotlin Multiplatform Mobile 的图表库

在之前的 Xamarin 本机应用程序中,我使用了 Microcharts,它是 .net 的图表库。使用 Microcharts,我们在共享部分有图表相关的逻辑(我们使用了 MVVM),并且只在每个平台上使用了图表组件。我想知道 Kotlin Multiplatform Mobile 是否有任何等价物?我想在共享部分中有图表逻辑。

谢谢。

0 投票
0 回答
41 浏览

android - 我的 kotlin 多平台项目的配置没有设置

我创建了一个 KMM 项目并在几天前开始编码。但是当我今天重新打开项目时,我无法设置配置来运行它。我也无法调试该问题。有谁知道如何设置配置?

在此处输入图像描述

0 投票
1 回答
196 浏览

android-jetpack-compose - 在 KMM 项目中使用 Compose 主题

在此处输入图像描述我正在关注撰写文档,但是由于我正在使用由 IDE 生成的 KMM 项目,因此我没有文档中描述的生成的 ui.theme 包。我应该在哪里寻找或编写自己的主题?我应该制作自己的主题包还是将其放置在 KMM 目录中的其他位置?

0 投票
0 回答
502 浏览

android - KMM 与 iOS Arm64 二进制框架 (.xcframework) 和 cinterop

我正在按照此处的指南尝试在新的 KMM 项目中使用没有 CocoaPods 的 iOS 框架:

https://kotlinlang.org/docs/kmm-add-dependencies.html#without-cocoapods

我有一个现有的、可工作的 .xcframework,我在 .xcframework 下添加到项目中shared/src。我在同一个共享目录中添加了一个MyKit.def文件src/nativeInterop/cinterop/并更新了该文件:build.gradle.kts

MyKit.def 看起来像

构建.gradle.kts

添加import MyKit.*到我的 MainActivity 后,我得到了unknown reference错误。

是否支持 iOS 二进制框架?他们.在文件名中有一个分隔符,所以这可能是个问题。我的-F路径有问题??我不清楚路径是否应该一直到带有Headers二进制文件本身的目录或只是到框架根目录。TIA

0 投票
2 回答
237 浏览

android - 如何在 localMaven() 上成功发布 KMM 库以供 android 项目使用?

我正在尝试将我制作的 KMM 库与我的 Android 项目集成。到目前为止,我已经按照此处的步骤在本地成功发布了 KMM 库

但不幸的是,当尝试将其作为依赖项添加到我的 Android 项目中时,该项目无法构建:

我已经添加mavenLocal()到我的存储库

但仍然一无所获,有什么帮助吗?

注意:当尝试在另一个 KMM 项目或模块中使用库时,它会成功构建。

0 投票
1 回答
314 浏览

android - BuildConfig 在 KMM 项目中定义多次

我在 Kotlin Multiplatform Mobile (KMM) 项目上工作,并试图为 Android 应用程序生成签名的发布应用程序包并遇到此错误

引起:com.android.tools.r8.internal.b:类型packageName.BuildConfig被定义多次

一个BuildConfig在 Androidapp模块中,另一个在shared模块中,具有相同的包名称。

这是来自我的应用程序模块 Gradle

对于 Building Debug Apk 或 App Bundle,我没有遇到过这个问题。

0 投票
1 回答
67 浏览

kotlin-multiplatform - Kotlin 多平台并发可变性 iOS vs Android

我知道 Kotlin/Native 关于线程之间对象的可变性有非常具体的规则。

然而令我惊讶的是,我发现从 commonMain(部署到 androidTestDebug)运行单元测试时,我能够更改不同线程上的可变状态。例如,这在更改中的值时可以正常工作MyData

但是,如果我在针对 iOS 时运行它,它会崩溃,给我kotlin.native.concurrent.InvalidMutabilityException. 这是我期望在两个平台上发生的事情。我是 KMM 的新手,但为什么在 JVM 上运行 commonMain 代码时不强制执行并发可变性规则

还有一种方法可以在 JVM 上强制执行可变性规则,以便测试在 Android 上失败,就像在 iOS 上一样?我认为这将有助于确保平台的一致性。