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

Xcode Cloud集成R.swift 7.4.0构建失败及权限问题求助

解决Xcode Cloud中R.swift 7.4.0的构建权限问题

问题回顾

升级R.swift到7.4.0并使用Swift PM插件后,Xcode Cloud构建先遇RswiftGenerateInternalResources禁用问题,通过ci_post_clone脚本跳过插件指纹验证解决后,又出现无权限保存R.generated.swift到Resources文件夹的错误。

可行解决方案

1. 调整R.swift生成路径至可写目录

Xcode Cloud对项目顶层目录的写入权限有限制,建议将生成文件路径改到项目内的源代码目录或构建临时目录:

  • 打开Xcode,选中项目中的R.swift Package,进入Build Settings
  • 找到R.swift插件的输出路径设置(对应RswiftGenerateInternalResources的Output File Path)
  • 修改为项目内有权限的路径,例如:
    $(SRCROOT)/YourAppTarget/Generated/R.generated.swift
    
    或构建临时目录:
    $(BUILD_DIR)/Intermediates.noindex/Generated/R.generated.swift
    

2. 完善ci_post_clone脚本的权限配置

如果坚持使用原Resources目录,在ci_post_clone.sh中添加目录创建与权限修改命令,同时修正原命令的拼写错误:

# 确保顶层Resources目录存在并设置可写权限
mkdir -p "$SRCROOT/Resources"
chmod -R 755 "$SRCROOT/Resources"
# 跳过插件指纹验证(修正拼写错误)
defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidation -bool YES

3. 在构建阶段添加权限预处理

在Xcode项目的构建方案中添加Run Script阶段,确保R.swift执行前目标目录已准备好:

  1. 打开项目的Build Phases
  2. 点击+选择New Run Script Phase,将其移到R.swift插件阶段之前
  3. 输入脚本内容:
# 生成目标目录路径,根据实际情况修改
GENERATED_DIR="${SRCROOT}/Resources"
mkdir -p "$GENERATED_DIR"
chmod 755 "$GENERATED_DIR"

4. 在Package.swift中明确配置输出路径

直接在Package.swift里指定R.swift插件的输出参数,避免Xcode自动选择受限目录:

targets: [
    .target(
        name: "YourApp",
        plugins: [
            .plugin(
                name: "RswiftGenerateInternalResources", 
                package: "R.swift", 
                options: [
                    .argument("--output", "$(SRCROOT)/YourApp/Generated/R.generated.swift")
                ]
            )
        ]
    )
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:23:32