我正在尝试为我的应用程序编写一个构建脚本,它应该使用Sparkle来通知用户可用的更新。Sparkle 本身作为 XCFramework 分发,我使用 Swift Package Manager 添加到我的项目中。
跑步时
xcodebuild archive
(连同几个参数,如特定的方案,没有什么特别的)构建失败,因为预构建脚本无法执行。原因是在以下运行脚本阶段期间,在 BuildProductsPath/Releases/AppName.app 文件夹中找不到任何 Sparkle 组件:
LOCATION="${BUILT_PRODUCTS_DIR}"
codesign --verbose --timestamp --force --deep -o runtime --sign "${CODE_SIGN_IDENTITY}" "$LOCATION/${WRAPPER_NAME}/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/AutoUpdate.app"
codesign --verbose --timestamp --force -o runtime --sign "${CODE_SIGN_IDENTITY}" "$LOCATION/${WRAPPER_NAME}/Contents/Frameworks/Sparkle.framework/Versions/A"
在调查目录时,*.app 目录本身确实没有包含框架;该框架与 *.app 目录本身位于同一目录中。
但是,在运行脚本阶段在此确切位置对框架进行签名不会导致在导出的存档中生成签名的二进制文件,这是使我的应用程序公证所必需的。
我已经坚持了好几天了。我的运行脚本阶段有什么问题?