标签: kotlin-multiplatform-mobile

KMM:编译失败:意外的 IrType 类型:KIND_NOT_SET

我正在尝试在共享库中运行测试。

设置(两台机器的版本应该相同 - 截至今天都是最新的):

Kotlin 1.6.21 (tried 1.6.20 and 1.6.10)

OpenJDK 11.0.15 (via Homebrew)

IntelliJ
Build #IC-221.5591.52, built on May 10, 2022
Runtime version: 11.0.14.1+1-b2043.45 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

XCode 13.3.1 with command-line tools

macOS BigSur 12.3.1
Run Code Online (Sandbox Code Playgroud)

M1专业版

:cleanIosSimulatorArm64Test :iosSimulatorArm64Test --tests "com.example.shared.ConverterTest" --stacktrace
Run Code Online (Sandbox Code Playgroud)

Intel Core i9(同样的错误,只需将“arm”更改为“x64”)

:cleanIosX64Test :iosX64Test --tests "com.example.shared.ConverterTest"
Run Code Online (Sandbox Code Playgroud)
> Task :linkDebugTestIosSimulatorArm64 FAILED
e: Compilation failed: Unexpected IrType kind: KIND_NOT_SET
 * Source files: 
 * Compiler version info: Konan: 1.6.21 / Kotlin: 1.6.21 …
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-multiplatform kotlin-multiplatform-mobile

16
推荐指数
2
解决办法
663
查看次数

如何在 Android Studio 中为 Kotlin Multiplatform 配置 iOS 应用程序?

我想为 Android Studio 4.1.2 中的 Kotlin 多平台移动应用程序的 iOS 应用程序添加运行/调试配置。但是,iOS 的配置似乎存在问题。

在下面的屏幕截图中,您可以看到问题。在对话框“运行/调试配置”Android Studio 中抱怨

Error: Please specify Xcode project location in xcodeproj property of gradle.properties
Run Code Online (Sandbox Code Playgroud)

使用“修复”按钮不能解决问题。Android Studio 只是添加了一个额外的参数xcodeprojgradle.properties并抱怨重复参数。

我还尝试了不同的路径(相对路径和绝对路径)xcodeproj。没运气。

如果我没记错的话,它曾经是开箱即用的。自动为 AndroidiOS配置了一个新的 Kotlin Multiplatform Mobile 项目。我不确定发生了什么变化。可能有什么东西更新了。

这是 KMM 插件的错误吗?或者我可以在我的系统上做些什么来解决这个问题?

在此处输入图片说明

kotlin android-studio kotlin-multiplatform kotlin-multiplatform-mobile

13
推荐指数
1
解决办法
1639
查看次数

使用 cocoaPods 设置 KMM 项目在首次编译时失败

我创建了一个新的 KMM 项目并选择 Cocoapods 作为 iOS 框架发行版,构建完成后立即抛出以下错误:

执行“pod install”失败,代码为 1。错误消息:

请检查文件“/Users/barryalan/AndroidStudioProjects/PersonalProjects/deleteThis/iosApp/Podfile”标头中是否包含以下行:source 'https://cdn.cocoapods.org'

请检查共享所依赖的每个目标是否包含以下依赖项:

鉴于这仍处于 alpha 阶段,我不能抱怨,但我确实需要一些关于如何解决此问题的指导。

cocoapods kotlin-multiplatform kotlin-multiplatform-mobile

13
推荐指数
3
解决办法
1万
查看次数

如何配置 KMM 项目以支持不同的构建类型

当我切换构建变体时,出现编译错误,但问题仅适用于非默认构建变体(debug & release)。因此,如果我定义customBuild { }然后选择那个,它就会失败并显示以下错误日志:

    The consumer was configured to find a runtime of a component, 
    preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' 
    with value 'customBuild', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm'.
    However we cannot choose between the following variants of project :shared-module:
- iosArm64RuntimeOnly
          - iosX64RuntimeOnly
        All of them match the consumer attributes:
          - Variant 'iosArm64RuntimeOnly' capability ExampleApp:shared-module:1.0:
              - Unmatched attributes:
                  - Doesn't say anything about com.android.build.api.attributes.BuildTypeAttr (required 'customBuild')
                  - Doesn't say anything about …
Run Code Online (Sandbox Code Playgroud)

android gradle-kotlin-dsl kotlin-multiplatform kotlin-multiplatform-mobile

9
推荐指数
0
解决办法
1509
查看次数

kmm ios模拟器服务版本与预期服务版本不匹配错误

使用 kotlin-multiplatform-mobile 插件中的向导创建 kmm 应用程序后,我尝试运行 ios 模拟器并收到以下错误。

kotlin multiplatform mobile java.lang.IllegalStateException: Unsupported Xcode version 12.4, minimal supported version is 12.5.
Run Code Online (Sandbox Code Playgroud)

为了解决这个错误,我尝试更新 Xcode,给出了下面的新错误。

CoreSimulator.framework was changed while the process was running.  This is not a supported configuration and can occur if Xcode.app was updated while the process was running.  Service version (776.4) does not match expected service version (732.18.6).
Run Code Online (Sandbox Code Playgroud)

ios kotlin kotlin-multiplatform-mobile

8
推荐指数
1
解决办法
476
查看次数

Android Studio 中的 KMM 构建返回命令 PhaseScriptExecution 失败,退出代码非零

我刚刚通过 KMM 插件创建了一个新的 KMM 项目,但我无法在项目的 Xcode iosApp 部分中运行甚至调试。当我尝试从 Android Studio 运行 iosApp 时,构建过程失败(命令 PhaseScriptExecution 失败,退出代码非零)

最终的建筑线条是:

失败:构建失败并出现异常。

  • 出了什么问题:任务“:shared:compileKotlinIosX64”执行失败。

编译完成,但有错误

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。

  • 在https://help.gradle.org获取更多帮助

8 秒内构建失败 1 个可操作任务:执行了 1 个命令 PhaseScriptExecution 失败,退出代码为非零

** 构建失败 **

以下构建命令失败:PhaseScriptExecution Run\ Script /Users/tamegajr/AndroidStudioProjects/TesteKMM5/build/ios/iosApp.build/Release-iphonesimulator/iosApp.build/Script-7555FFB5242A651A00829871.sh(1 次失败)

任何人都可以帮助解决这个问题吗?

mobile cross-platform gradle kotlin kotlin-multiplatform-mobile

8
推荐指数
3
解决办法
3407
查看次数

KMM + Compose:未解决的参考:drawable

我有一个 KMM 应用程序,其中 Android 目标使用 Jetpack Compose。当我尝试使用可绘制资源时出现以下错误:

e: [...]/OnboardingScreen.kt: (33, 46): 未解析的参考:drawable

这是尝试通过 访问可绘制对象的结果painterResource(id = R.drawable.ic_icon)

我已尝试以下方法来解决该问题:

  • 清理并构建项目
  • 使缓存无效并重新启动
  • 修复执行时的所有警告./gradlew assembleDebug
  • 静态 R 类已正确导入

以上都不能解决问题。

这是我的 android 模块的 build.gradle.kts:

plugins {
    id("com.android.application")
    kotlin("android")
}

val composeVersion = findProperty("version.compose") as String
val composeNavigationVersion = findProperty("version.composeNavigation") as String
val koinVersion = findProperty("version.koin") as String

android {

    compileSdk = (findProperty("android.compileSdk") as String).toInt()

    defaultConfig {
        applicationId = "com.app.app.android"
        minSdk = (findProperty("android.minSdk") as String).toInt()
        targetSdk = (findProperty("android.targetSdk") as String).toInt()
        versionCode = 1 …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-gradle-plugin android-jetpack-compose kotlin-multiplatform-mobile

8
推荐指数
2
解决办法
9900
查看次数

如何在后台线程中执行查询?

我目前正在考虑拥有一个由 SQLdelight 支持的 KMM 应用程序,用于所有与域相关的操作。

SQLdelight 似乎提供了非常好的接口,但是似乎所有写入调用(插入/更新/删除)都是使用阻塞调用实现的,所以我担心它会通过大量阻塞主线程来损害应用程序的响应能力。

是否有推荐的方法来执行此类操作而不阻塞主线程?

该应用程序也必须在 iOS 上运行,所以我不能承受太多的冻结。

sqldelight kotlin-multiplatform-mobile

7
推荐指数
1
解决办法
679
查看次数

KMM - 在项目“:shared”中找不到错误任务“embedAndSignAppleFrameworkForXcode”

我创建了一个项目来演示 Kotlin Multiplatform Mobile。我在 Android 和 iOS 两种设备上成功构建并运行了它。之后,我在 iOS 上重新运行了该项目。它有一个错误。

> Configure project :shared
Kotlin Multiplatform Projects are an Alpha feature. See: https://kotlinlang.org/docs/reference/evolution/components-stability.html. To hide this message, add 'kotlin.mpp.stability.nowarn=true' to the Gradle properties.


FAILURE: Build failed with an exception.

* What went wrong:
Task 'embedAndSignAppleFrameworkForXcode' not found in project ':shared'.

* Try:
Run gradlew tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more …
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-multiplatform-mobile

7
推荐指数
1
解决办法
6453
查看次数

具有 iOS Arm64 二进制框架 (.xcframework) 和 cinterop 的 KMM

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

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

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

MyKit.def 看起来像

language = Objective-C
modules = MyKit
package = MyKit
Run Code Online (Sandbox Code Playgroud)

构建.gradle.kts

import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget

plugins {
    kotlin("multiplatform")
    id("com.android.library")
}

kotlin {
    android()

    val iosTarget: (String, KotlinNativeTarget.() -> Unit) -> KotlinNativeTarget =
        if (System.getenv("SDK_NAME")?.startsWith("iphoneos") == true)
            ::iosArm64
        else
            ::iosX64

    iosTarget("ios") {
        binaries {
            framework {
                baseName = "shared"
            }
        }
    }
    sourceSets {
        val commonMain by getting
        val commonTest by getting { …
Run Code Online (Sandbox Code Playgroud)

android ios kotlin-multiplatform xcframework kotlin-multiplatform-mobile

7
推荐指数
1
解决办法
2229
查看次数