kotlin 由于Xcode运行脚本阶段没有指定的输出,IOS Emulator中的KMM项目中的构建失败

wbrvyc0a  于 2023-10-23  发布在  Kotlin
关注(0)|答案(2)|浏览(125)

我正在做一个Kotlin多平台移动的项目,在尝试构建iOS端时,我遇到了与脚本构建阶段相关的构建失败。我收到的警告是:

warning: Run script build phase 'Run Script' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'iosApp' from project 'iosApp')

这之后是一个构建失败消息:

The following build commands failed:
PhaseScriptExecution Run\ Script /Users/moataz/AndroidStudioProjects/MyApplication/build/ios/iosApp.build/Debug-iphonesimulator/iosApp.build/Script-7555FFB5242A651A00829871.sh (in target 'iosApp' from project 'iosApp') (1 failure)

我不确定如何在环境中解决此警告和随后的错误。在Android Studio中构建KMM项目的iOS部分时,是否有人遇到过类似的问题?任何关于如何解决这一问题或进一步诊断问题的建议将不胜感激。

bnl4lu3b

bnl4lu3b1#

在父模块的build.gradle.kts文件中更新Kotlin版本,如下所示:

plugins {
    //trick: for the same plugin versions in all sub-modules
    id("com.android.application").version("8.1.0").apply(false)
    id("com.android.library").version("8.1.0").apply(false)
    kotlin("android").version("1.9.10").apply(false)
    kotlin("multiplatform").version("1.9.10").apply(false)
   }

随着此更改,请同时更新androidApp的build.gralde.kts文件中的Kotlin编译器扩展版本,如下所示:

composeOptions {
        kotlinCompilerExtensionVersion = "1.5.3"
    }

有关兼容版本,请参阅此link。此更改将修复Xcode15上的构建问题。
我创建了这个PR来修复KMM Production Sample repo中的构建问题。

mwg9r5ms

mwg9r5ms2#

将其添加到“共享模块”中的build.gradle.kts文件中:

if (System.getenv("XCODE_VERSION_MAJOR") == "1500") { 
    linkerOpts += "-ld64"
}

就像这样:

listOf(
    iosX64(),
    iosArm64(),
    iosSimulatorArm64()
).forEach {
    it.binaries.framework {
        baseName = "shared"
        if (System.getenv("XCODE_VERSION_MAJOR") == "1500") {
            linkerOpts += "-ld64"
        }
    }
}

在forEach循环中。这是一个临时修复,它应该在Kotlin1.9.10中得到修复,但我不认为这是一个选择,所以在此期间,这个修复使iOS版本可构建!
来源:https://youtrack.jetbrains.com/issue/KT-60230#focus=Comments-27-7921542.0-0
编辑:Kotlin,不是Gradle 1.9.10!

相关问题