首页 文章

从命令行对 ios app 进行编码

提问于
浏览
2

我正在为我的 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 [11]:0x10050c000 verify_signer_identity:/var/tmp/install_staging.Mvi7tR/myapp.app/myapp 的 MISValidateSignatureAndCopyInfo 失败:0xe8008019

我不知道是怎么回事 :\

另一个编辑:

我让 codeign 验证再次失败,呵呵。所以,如果我验证 myapp.app,那么它表示一切正常。但是,如果我尝试直接验证 myapp.app/myapp 二进制文件,那么它表示验证失败(除了架构 armv7 之外的上述错误)

1 回答

  • 0

    长话短说,如果我编码 myapp.app/myapp 而不是 myapp.app,那么我可以将应用程序部署到我的手机而没有任何问题。我似乎无法对两者进行协同编码,因为 myapp.app/myapp 或 myapp.app 中的一个失败了编码--verify,但现在它已经足够好了,因为我可以部署应用程序。

    希望这可以帮助那些正在抨击墙壁的人。

    我会试着弄清楚我是否可以某种方式在一条线上进行编码,但这是一个次要的后代问题。

相关问题