gradle Android Studio中的KMM生成返回命令PhaseScriptExecution失败,并返回非零退出代码

a8jjtwal  于 2023-03-03  发布在  Android
关注(0)|答案(4)|浏览(176)

我刚刚通过KMM插件创建了一个新的KMM项目,但无法在项目的Xcode iosApp部分中运行甚至调试。当我尝试从Android Studio运行iosApp时,构建过程失败(Command PhaseScriptExecution失败,退出代码为非零)
建筑的最后几行是:
失败:生成失败,出现异常。

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

编译已完成,但有错误

  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获取完整的见解。
  • https://help.gradle.org获取更多帮助

8s中构建失败1个可操作任务:1已执行命令阶段ScriptExecution失败,退出代码为非零

    • 构建失败**

以下生成命令失败:阶段脚本执行运行\脚本/用户/tamegajr/Android Studio 项目/测试KMM5/build/ios/www.example.com(1次失败)iosApp.build/Release-iphonesimulator/iosApp.build/Script-7555FFB5242A651A00829871.sh (1 failure)
有谁能帮忙解决这个问题吗?

ca1c2owp

ca1c2owp1#

我遇到了同样的问题,但这个解决方案帮了我:
通过KMM插件,您将获得(依赖项):
更改此内容:
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10")
对此:
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31")

zzoitvuj

zzoitvuj2#

对我来说,问题是,即使我在AndroidStudio和build.gradle文件中的所有地方都设置为使用java 11,它仍然尝试使用java 1.8代替。
然后我查看了项目的gradlew文件,发现它使用了JAVA_HOME路径变量。
因为我还有其他项目,并且这些项目使用java 1.8,所以我在.zshrc文件中将JAVA_HOME变量设置为1.8。
我把这个改成了11(我之前下载的),重新启动了AndroidStudio --使用Invalidate缓存并重新启动,只是为了确定一下--它立刻就工作了。
我能够在AndroidStudio的iOS模拟器中运行代码。

在Mac上,在我写的.zhsrc文件中

之前:
export JAVA_HOME=/Users/username/Library/Java/JavaVirtualMachines/corretto-1.8.0_292/Contents/Home
之后:
export JAVA_HOME=/Users/username/Library/Java/JavaVirtualMachines/corretto-11.0.18/Contents/Home
如果您在项目中使用其他Java版本,则必须在JAVA_HOME变量中设置其版本号。还要检查Library/Java/...文件夹的路径。如果与上面的路径不同,则进行相应的更改。

of1yzvn4

of1yzvn43#

我发现的解决方案是取消注解“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)
    }
}

}

fgw7neuy

fgw7neuy4#

在对2 - 3个月前的KMM示例项目进行了一些代码审查并将其与新项目进行比较后,我找到了一个解决方案,可以解决在IOS模拟器上运行iosApp时出现的此构建故障,只需将此更改应用于根项目上的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插件的未来更新中解决这个问题。
2020年8月30日:
Jetbrains似乎已经更正了一些问题,现在您可以使用版本1.7.10(目前最后一个稳定版本)构建和运行KMM项目。
顺便说一句,如果你有任何麻烦是值得检查这个堆栈溢出后有关JDK版本使用的Android Studio:How to set or change the default Java (JDK) version on macOS?
Multiplatform error when building iosApp: Command PhaseScriptExecution failed with a nonzero exit code

相关问题