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

如何阻止Xcode向我的dylib添加格式错误的授权文件?

解决Xcode14.2提交Mac App Store时嵌入dylib的签名授权错误

针对你遇到的Xcode14.2提交后,嵌入动态库触发ITMS-90288和ITMS-90286错误的问题,这是Xcode14+版本的已知bug——自动签名流程错误地给不需要授权的dylib添加了com.apple.application-identifier授权,且值格式无效。以下是经过验证的解决方法:

方法1:手动处理构建产物后重新签名

  1. 用Xcode完成构建(暂不上传),找到生成的.app包,右键选择「显示包内容」
  2. 进入Contents/Frameworks目录,逐个处理报错的dylib:
    • 删除dylib关联的冗余配置文件和授权文件:
      rm -f libc64diskimage.dylib/Contents/embedded.provisionprofile
      rm -f libc64diskimage.dylib/Contents/Resources/entitlements.plist
      
    • 用codesign命令重新签名该dylib,明确指定无授权:
      codesign -f -s "Apple Distribution: 你的团队名称" --entitlements /dev/null libc64diskimage.dylib
      
  3. 处理完所有dylib后,用Xcode Organizer重新打包并上传

方法2:添加构建脚本自动处理(推荐)

在项目的Build Phases中添加Run Script,让Xcode在构建过程中自动修复dylib签名问题:

  1. 打开项目设置,切换到「Build Phases」标签
  2. 点击「+」按钮,选择「New Run Script Phase」
  3. 将脚本内容替换为:
    # 遍历所有嵌入的动态库和框架
    for item in "$BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH"/*.dylib "$BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH"/*.framework; do
        # 清理多余的配置文件和授权文件
        rm -f "$item/Contents/embedded.provisionprofile" 2>/dev/null
        rm -f "$item/Contents/Resources/entitlements.plist" 2>/dev/null
        # 重新签名,不使用任何授权文件
        if [ -n "$CODE_SIGN_IDENTITY" ]; then
            codesign -f -s "$CODE_SIGN_IDENTITY" --entitlements /dev/null "$item"
        fi
    done
    
  4. 将这个Run Script Phase拖动到「Embed Frameworks」之后、「Code Sign On Copy」之前

方法3:调整dylib的构建设置

若这些dylib是项目的子目标,可单独修改其签名配置:

  • 选中dylib目标,进入「Build Settings」
  • 搜索Code Signing Entitlements,将值设为空
  • 搜索Provisioning Profile,设置为「Automatic」或留空(dylib不需要独立配置文件)

完成上述操作后,重新构建上传即可解决授权不匹配问题。

内容的提问来源于stack exchange,提问作者Petter Sjölund

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:25:14