1

我刚刚通过 KMM Plugin 创建了一个新的 KMM 项目,但我无法在项目的 Xcode iosApp 部分中运行甚至调试。当我尝试从 Android Studio 运行 iosApp 时,构建过程失败(Command PhaseScriptExecution failed with nonzero exit code)

最后的建筑线路是:

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

  • 出了什么问题:任务 ':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次失败)

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

4

2 回答 2

0

在对 2-3 个月大的 KMM 示例项目进行一些代码审查并将它们与新项目进行比较后,我发现了在尝试在 Ios 模拟器上运行 iosApp 时构建失败的解决方案,只需将此更改应用于 root 上的 build.gradle.kts项目:

从 KMM 插件中,您将获得(关于依赖项):

classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10")

将其更改为:

classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31")

就是这样,问题解决了。我希望 Jetbrains 上的人可以在未来的 KMM 插件更新中解决这个问题。

于 2021-12-19T14:53:24.210 回答
0

我发现解决方案是取消注释“build.gradle.kts(:shared)”中的“iosSimulatorArm64()”。

kotlin {
android()
iosX64()
iosArm64()
iosSimulatorArm64() //sure all ios dependencies support this target

cocoapods {
    summary = "Some description for the Shared Module"
    homepage = "Link to the Shared Module homepage"
    ios.deploymentTarget = "14.1"
    podfile = project.file("../iosLink/Podfile")
    framework {
        baseName = "shared"
    }
}

sourceSets {
    val commonMain by getting
    val commonTest by getting {
        dependencies {
            implementation(kotlin("test-common"))
            implementation(kotlin("test-annotations-common"))
        }
    }
    val androidMain by getting
    val androidTest by getting {
        dependencies {
            implementation(kotlin("test-junit"))
            implementation("junit:junit:4.13.2")
        }
    }
    val iosX64Main by getting
    val iosArm64Main by getting
    val iosSimulatorArm64Main by getting
    val iosMain by creating {
        dependsOn(commonMain)
        iosX64Main.dependsOn(this)
        iosArm64Main.dependsOn(this)
        iosSimulatorArm64Main.dependsOn(this)
    }
    val iosX64Test by getting
    val iosArm64Test by getting
    //val iosSimulatorArm64Test by getting
    val iosTest by creating {
        dependsOn(commonTest)
        iosX64Test.dependsOn(this)
        iosArm64Test.dependsOn(this)
        //iosSimulatorArm64Test.dependsOn(this)
    }
}

}

于 2021-12-30T03:13:12.357 回答