【问题标题】:Codesigning ios app from the command line从命令行协同设计 ios 应用程序
【发布时间】: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


    【解决方案1】:

    长话短说,如果我对 myapp.app/myapp 而不是 myapp.app 进行代码设计,那么我可以将应用程序部署到我的手机上而不会出现任何问题。我似乎还不能同时进行代码签名,因为 myapp.app/myapp 或 myapp.app 之一无法进行代码签名 --verify,但现在已经足够好了,因为我可以部署应用程序。

    希望这对正在撞墙的人有所帮助。

    我会尝试找出是否可以以某种方式在一行上进行代码设计,但这是一个次要的后代问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-18
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2019-10-05
      • 1970-01-01
      • 2013-09-25
      相关资源
      最近更新 更多