【发布时间】:2014-11-01 02:28:44
【问题描述】:
我正在为我的 ios 开发创建一个命令行工作流,但我被困在最后一个阶段:代码设计。
我为 armv7 和 armv7s 构建了一个应用程序,链接它并创建应用程序包:
$ codesign -d -v path/to/myapp.app
Executable=/path/to/myapp.app/myapp
Identifier=com.mycompany.myapp
Format=bundle with Mach-O universal (armv7 armv7s)
CodeDirectory v=20200 size=2292 flags=0x0(none) hashes=105+5 location=embedded
Signature size=4332
Signed Time=Sep 7, 2014, 2:47:55 AM
Info.plist entries=26
TeamIdentifier=XXXXXX
Sealed Resources version=2 rules=5 files=3
Internal requirements count=1 size=192
我从以下位置获得了一个代码签名哈希 XXXXX:
$ security find-identity -pcodesigning -v
1) XXXXX "iPhone Developer: My Name (YYYY)"
1 valid identities found
但是,在我使用以下代码进行代码设计之后:
codesign --force -vvvv --sign XXXXX --resource-rules=path/to/myapp.app/ResourceRules.plist --entitlements path/to/myapp.xcent path/to/myapp.app
path/to/myapp.app: replacing existing signature
path/to/myapp.app: signed bundle with Mach-O universal (armv7 armv7s) [com.mycompany.myapp]
似乎还是不开心:
$ codesign --verify -vvvv path/to/myapp.app
path/to/myapp.app: invalid Info.plist (plist or signature have been modified)
In architecture: armv7s
作为参考,我使用 xcode 构建了一个(类似的)应用程序(我实际上使用日志中的 codesign 行来签署这个应用程序),它工作得很好:
$ codesign --verify -vvvv path/to/otherapp.app
path/to/otherapp.app: valid on disk
path/to/otherapp.app: satisfies its Designated Requirement
我确信我有正确的代码签名哈希,因为我已经通过 xcode 签名和部署了应用程序。我只是想在命令行上重现相同的步骤并且惨遭失败。显然,如果我更改了 info.plist 或其他内容,我希望看到这个错误,但我不希望在我执行代码设计步骤后立即看到它。一些黑魔法在这里起作用。有人可以提供一些启发或帮助吗?
编辑:
我删除了 armv7s 并刚刚构建了 armv7,现在它似乎在代码设计验证阶段很满意,但是我仍然无法部署应用程序,日志中出现以下错误:
installd[26777] : 0x10050c000 verify_signer_identity: MISValidateSignatureAndCopyInfo 失败 /var/tmp/install_staging.Mvi7tR/myapp.app/myapp: 0xe8008019
我不知道发生了什么:\
另一个编辑:
我的代码验证又失败了,呵呵。所以,如果我验证 myapp.app,那么它会说一切正常。但是,如果我尝试直接验证 myapp.app/myapp 二进制文件,那么它会说验证失败(除了架构 armv7 出现上述错误)
【问题讨论】:
标签: ios command-line codesign