问题标签 [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.
kotlin - KMM - 如何将改造添加到 :shared 模块 (commonMain)
我想将 Retrofit 添加到 :shared 模块(commonMain)中。
但在commonMain
我看不到改造类。在androidMain
我可以看到它。那是一种魔法。我没有将 Retrofit 添加到androidMain
.
请帮我。提前致谢。
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,但我收到了同样的错误。
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)
charts - Kotlin Multiplatform Mobile 的图表库
在之前的 Xamarin 本机应用程序中,我使用了 Microcharts,它是 .net 的图表库。使用 Microcharts,我们在共享部分有图表相关的逻辑(我们使用了 MVVM),并且只在每个平台上使用了图表组件。我想知道 Kotlin Multiplatform Mobile 是否有任何等价物?我想在共享部分中有图表逻辑。
谢谢。
android-jetpack-compose - 在 KMM 项目中使用 Compose 主题
我正在关注此撰写文档,但是由于我正在使用由 IDE 生成的 KMM 项目,因此我没有文档中描述的生成的 ui.theme 包。我应该在哪里寻找或编写自己的主题?我应该制作自己的主题包还是将其放置在 KMM 目录中的其他位置?
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
android - 如何在 localMaven() 上成功发布 KMM 库以供 android 项目使用?
我正在尝试将我制作的 KMM 库与我的 Android 项目集成。到目前为止,我已经按照此处的步骤在本地成功发布了 KMM 库
但不幸的是,当尝试将其作为依赖项添加到我的 Android 项目中时,该项目无法构建:
我已经添加mavenLocal()
到我的存储库
但仍然一无所获,有什么帮助吗?
注意:当尝试在另一个 KMM 项目或模块中使用库时,它会成功构建。
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,我没有遇到过这个问题。
kotlin-multiplatform - Kotlin 多平台并发可变性 iOS vs Android
我知道 Kotlin/Native 关于线程之间对象的可变性有非常具体的规则。
然而令我惊讶的是,我发现从 commonMain(部署到 androidTestDebug)运行单元测试时,我能够更改不同线程上的可变状态。例如,这在更改中的值时可以正常工作MyData
:
但是,如果我在针对 iOS 时运行它,它会崩溃,给我kotlin.native.concurrent.InvalidMutabilityException
. 这是我期望在两个平台上发生的事情。我是 KMM 的新手,但为什么在 JVM 上运行 commonMain 代码时不强制执行并发可变性规则?
还有一种方法可以在 JVM 上强制执行可变性规则,以便测试在 Android 上失败,就像在 iOS 上一样?我认为这将有助于确保平台的一致性。