我有一个应用程序是在我的构建服务器上签名的(没有错误)。显然,有些地方出了问题,当我在Finder中打开它时,我收到一条消息,说明应用程序被损坏了。
问题是,当我这么做
codesign --verify --verbose MyApp.app
我得到了
MyApp.app: Invalid argument
它与应用程序文件夹中的任何其他应用程序一起工作。我希望得到一个更详细的错误的签名是如何打破。
有没有更多的细节可供选择?是什么导致了这种行为?
发布于 2014-01-17 17:53:59
您可以通过使用像这样的详细标志来增加详细信息:
codesign --verify --verbose=4
codesign --verify -vvvv
codesign -v -vvvv这些都是相同的命令,只是输入的方式不同:
-v,--详细集(带有数值)或增加输出的详细级别。如果没有详细的选项,就不会以经典的UNIX风格在成功时产生任何输出。如果没有其他选项请求不同的操作,则第一个-v将被解释为-验证(而不会增加详细内容)。
根据苹果的手册页,苹果认为这是一个“bug”
-v选项的双重含义,既表示详细,也表示验证,使一些人感到困惑。如果您觉得它令人困惑,请使用明确的长表单--详细和--验证。
还有一些可用的免费实用程序,如协同设计检查器,这可能很有用。
发布于 2014-01-21 15:59:37
@l‘l关于如何获得更详细的日志,答案是正确的,所以我接受了。
但是,作为参考,真正的问题是zip命令。在我的构建服务器上,我将构建的应用程序包拉链。然而,我使用了zip命令行工具来这样做,它不能正确地处理别名。因此,当您在包中有框架时,它们通常有指向当前二进制版本和标题的别名。当您使用zip -r压缩这些别名时,这些别名将被解析。当然,代码签名不再有效。
在Mac上压缩文件的正确方法是使用ditto命令:
ditto -c -k --keepParent --sequesterRsrc "my source file" "myArchive.zip"cp copy命令也是如此。cp -r将展开别名文件。正确的复制命令是cp -R
以前,它一直在使用“错误”的命令。我想在OSX10.9.1中,有些东西是用comamnd行工具或签名验证来更改的。
https://stackoverflow.com/questions/21189162
复制相似问题