You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KMM项目Xcode构建失败:embedAndSignAppleFrameworkForXcode报错操作不允许

问题描述

在Xcode中构建iOS应用时遭遇Gradle任务执行失败,报错信息如下:

Resolve mutations for :GCAppShared:embedAndSignAppleFrameworkForXcode (Thread[#808,Execution worker,5,main]) started.
:GCAppShared:embedAndSignAppleFrameworkForXcode (Thread[#808,Execution worker,5,main]) started.

> Task :GCAppShared:embedAndSignAppleFrameworkForXcode FAILED
error: /Users/tony/Library/Developer/Xcode/DerivedData/GCiosApp-caesltabwlltiwgdsytbghwsxekm/Build/Products/Debug-iphoneos/GCiosApp.app/Frameworks: Operation not permitted

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':GCAppShared:embedAndSignAppleFrameworkForXcode'.
> Cannot access output property 'destDir' of task ':GCAppShared:embedAndSignAppleFrameworkForXcode'. Accessing unreadable inputs or outputs is not supported. Declare the task as untracked by using Task.doNotTrackState().
   > java.nio.file.FileSystemException: /Users/tony/Library/Developer/Xcode/DerivedData/GCiosApp-caesltabwlltiwgdsytbghwsxekm/Build/Products/Debug-iphoneos/GCiosApp.app/Frameworks: Operation not permitted

已知背景:

  • 项目昨日可正常构建,升级MacOS Sonoma后今日突发此问题
  • 已尝试清理构建文件夹、拉取干净Git代码副本、删除报错提及的DerivedData文件夹,均无效
  • 判定Gradle状态跟踪提示为症状而非根源,无法在项目中找到embedAndSignAppleFrameworkForXcode相关定义,不想对整个GCAppShared模块应用doNotTrackState()
  • 曾在今年7月提交YouTrack工单(KT-60643),因项目闭源无法跟进;添加--stacktrace也未获取有效细节
  • 上次解决方法:使用multiplatform-swiftpackage(但需手动更新Xcode依赖,希望能自动化)或重建项目(仅维持数月,不想重复操作)
可行解决方案

1. 精准配置目标Gradle任务

embedAndSignAppleFrameworkForXcode是Kotlin Multiplatform自动生成的任务,可通过Gradle任务匹配器单独对其禁用状态跟踪,无需影响整个模块。在GCAppShared模块的build.gradle.kts(或.gradle)中添加以下代码:

tasks.matching { task ->
    task.name.contains("embedAndSignAppleFrameworkForXcode")
}.configureEach {
    doNotTrackState("Workaround for macOS Sonoma filesystem permission issue")
}

2. 自动化Swift Package依赖更新

如果倾向于使用Swift Package Manager集成,可通过Gradle任务实现依赖更新自动化:

  • 在共享模块的build.gradle.kts中配置multiplatformSwiftPackage时,开启自动生成Package.swift
  • 添加自定义Gradle任务,触发包生成后自动通知Xcode刷新依赖:
tasks.register("updateSwiftPackage") {
    dependsOn(tasks.multiplatformSwiftPackage)
    doLast {
        exec {
            commandLine("osascript", "-e", """
                tell application "Xcode"
                    activate
                    tell project "GCiosApp"
                        refresh SPM packages
                    end tell
                end tell
            """.trimIndent())
        }
    }
}

后续只需运行./gradlew updateSwiftPackage,即可自动完成Swift包更新与Xcode同步。

3. 修复MacOS Sonoma文件权限问题

报错核心为“Operation not permitted”,可尝试以下权限修复操作:

  • 打开系统设置 → 隐私与安全性 → 文件与文件夹,确保Xcode和终端(或你使用的IDE)拥有~/Library/Developer/Xcode/DerivedData文件夹的访问权限
  • 重置DerivedData文件夹权限:
sudo chown -R $USER:staff ~/Library/Developer/Xcode/DerivedData
chmod -R 755 ~/Library/Developer/Xcode/DerivedData
  • 临时关闭系统完整性保护(SIP)测试(测试后立即开启):重启Mac进入恢复模式,终端执行csrutil disable,重启后尝试构建;若问题解决,优先通过上述权限配置替代长期关闭SIP。

4. 调整Gradle或Kotlin插件版本

该问题可能源于Gradle 8.x与MacOS Sonoma的兼容性:

  • 将Gradle版本降级至7.6.x(修改项目根目录gradle/wrapper/gradle-wrapper.properties中的distributionUrl)
  • 升级Kotlin Multiplatform插件至最新稳定版(更新根build.gradle.kts中kotlin("multiplatform")的版本号)

内容的提问来源于stack exchange,提问作者realh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 14:43:34