我写了一个脚本,使用 xcodebuild 生成 iPhone 应用程序的 AdHoc 版本。

我想编辑此脚本以输出名称 配置文件 用于签署构建。
这将允许我将配置文件包含在自动生成的 zip 中。这样,我可以自动将存档发送给 AdHoc 测试人员,并确保他们拥有正确的配置文件来安装应用程序。

有什么办法可以 提取用于对应用程序进行签名的配置文件名称或文件:

  • 来自构建和签名的应用程序
  • 来自 Xcode 项目(我不想手动解析 project.pbxproj 文件,因为此解决方案可能会在下一次 Xcode 更新中中断)
  • 任何其他可编写脚本的方式

不可饶恕 建议 使用命令 security 获取用于签署应用程序的证书的名称。获得此信息后,是否有任何方法可以找到配置文件的名称?


这是我尝试过的:

遗憾的是,构建期间 xcodebuild 的输出不包含此信息。在 CodeSign 步骤中,有一行:

/usr/bin/codesign -f -s "iPhone Distribution: My name" ...

但我无法将其与证书相匹配。

我研究了使用协同设计,并且命令

/usr/bin/codesign -d -vvv --entitlements - -r - /Users/lv/Desktop/TicTacBoo.app/TicTacBoo
看起来很有希望,但它没有给我提供我需要的信息。
我在 xcodebuild 中也没有找到任何有用的选项。

有帮助吗?

解决方案

配置文件已经 应用程序。您的 zip 文件中不需要另一个副本(除非您的测试人员不了解如何在应用程序内使用该副本。)

它的名字叫 YourApplication.app/embedded.mobileprovision

这并不能回答您的问题,因为原始文件名丢失了,但它似乎确实解决了您更大的问题。

其他提示

您可以从终端使用“security”命令;不幸的是,至少在我的带有 Snow Leopard 的 MBP 上,它似乎会导致您需要发出的命令之一出现分段错误。欲了解更多信息,请从终端发出

man security

无论如何,假设您的开发/生产证书存储在登录钥匙串中,您可以尝试以下操作:

security unlock-keychain login.keychain;
security find-certificate -a -c "iPhone Distribution: Your name"  -p > cert.pem;

第二个命令会导致分段错误(由 -c 参数引起),但它应该正是您所需要的。或者,您可以使用

security find-identity -p codesigning -v;

获取可用于对应用程序进行代码签名的所有有效证书的列表。对于每个证书,输出还包含 SHA1 消息摘要,以便您可以轻松地在钥匙串中搜索与“iPhone Distribution:你的名字”。然而,这要求您使用钥匙串 API 编写自己的应用程序。

请告诉我这是否适用于您的 Mac,或者您是否遇到相同的分段错误问题。

编辑/更新:我已经在其他机器上验证了该错误并向 Apple 提交了错误。

如何在(构建的应用程序的)_CodeSignature/CodeResources plist 文件中查找“mobileprovision”类型的文件?

这是使用 defaults(1) 读取 plist 文件的方法。您必须将 CodeResources 文件复制到带有“.plist”后缀的文件才能保持默认值......

cp /build/Distribution-iphoneos/MyApp.app/_CodeSignature/CodeResources /tmp/defaults.plist
defaults read /tmp/defaults files |grep .mobileprovision |grep -v embedded.mobileprovision

(在我的测试用例中,有 2 个 .mobileprovision 条目;忽略名为“embedded.mobileprovision”的)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top