代码之家  ›  专栏  ›  技术社区  ›  Nick

只有在其他Xcode iPhone项目成功签名后,代码签名才能成功

  •  4
  • Nick  · 技术社区  · 16 年前

    我有个奇怪的问题。codesign拒绝签署我拥有的这个大项目,项目A,但是签署了另一个项目B。但是,当我签署了项目B,它也可以突然签署项目A。我百分之百确信我没有改变任何其他事情。我采取的步骤是:

    尝试生成,签名A-签名失败
    尝试生成,签名B-成功
    尝试构建,签名A-成功

    抄本:

    CodeSign build/Debug-iphoneos/CPPlayer.app
    cd /Users/nick/CPPlayer
    setenv CODESIGN_ALLOCATE /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /usr/bin/codesign -f -s "iPhone Developer: Nick Overdijk (PM7C8QKTYS)" --resource-rules=/Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app/ResourceRules.plist --entitlements /Users/nick/CPPlayer/build/CPPlayer.build/Debug-iphoneos/CPPlayer.build/CPPlayer.xcent /Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app
    
    /Users/nick/CPPlayer/build/Debug-iphoneos/CPPlayer.app: object file format invalid or unsuitable
    Command /usr/bin/codesign failed with exit code 1

    图片: See here (imageshack gallery)

    我能错过什么吗?你知道怎么会这样吗?我现在一切正常,这似乎是解决我问题的良方,但我想知道发生了什么。

    有时它也像这样工作:
    生成/签名A-成功
    构建/签名A-失败
    构建/签名B-成功(B似乎总是成功的)
    生成/签名A-成功
    构建/签名A-失败

    所以,在A的每次成功构建之后,我必须构建和签署B,才能再次签署项目A。我可以连续多次重建B项目,它总是成功的。

    我不确定它是否重要,但当我尝试在模拟器(iPhoneOS3.1.2的调试模式)中运行它时,它无法在彼此之间安装。所以:

    生成/运行-失败
    建造/运行-工程
    生成/运行-失败
    建造/运行-工程

    这只适用于项目A,我可以构建和运行项目B,只要我愿意,我就不会收到安装失败的消息。

    事先谢谢,
    尼克

    5 回复  |  直到 13 年前
        1
  •  10
  •   Michael    16 年前

    问题可能是info.plist文件太多。

    我也有同样的问题(交替的代码符号成功和失败)。

    我在我的项目中添加了一个源代码目录,目录上有“添加现有文件”。原来有一个 幻灯片 文件在目录中,所以现在我的项目中有2个。我删除了新的,并从项目中删除了它,我的问题就解决了。

        2
  •  2
  •   Edmar Miyake    15 年前

    我也在努力处理“command/usr/bin/codesign failed with exit code 1”错误消息。

    我就是这样解决的

    右击 幻灯片 看看它的目标。确保左侧的框未选中。这是默认状态。

    对info.plist来说,定位文件并不合适。

        3
  •  2
  •   mattjgalloway    13 年前

    正在搜索特定的错误消息

    object file format invalid or unsuitable
    

    我有这些链接:

    http://www.galloway.me.uk/2009/04/json-framework-codesign-object-file-format-invalid-or-unsuitable/

    这表明您的resourcerules.plist设置不正确。这个解决方案似乎帮助了很多人解决了这个问题。

        4
  •  1
  •   John    15 年前

    这个问题发生在我身上,尝试了证书、配置文件、清理和重新启动的每一个组合,让该死的系统无法告诉你问题是什么。让我继续猜测。我的解决方案是上面提到的文章。

    “可执行文件名”必须与“产品名”匹配

    真的救了我在这里找到这个。谢谢。

        5
  •  0
  •   Robert    16 年前

    确保目标中没有多个info.plist文件!