4

我编写了一个脚本,用于xcodebuild生成 iPhone 应用程序的 AdHoc 构建。

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

有没有办法提取用于签署应用程序的配置文件名称或文件

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

Unforgiven建议使用该命令security来获取用于签署应用程序的证书的名称。获得此信息后,有什么方法可以找到 Provisioning Profile 的名称?


这是我尝试过的:

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

/usr/bin/codesign -f -s "iPhone 发行版:我的名字" ...

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

我研究了使用 codesign 和命令

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

4

3 回答 3

6

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

它被命名为YourApplication.app/embedded.mobileprovision

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

于 2010-03-04T15:49:56.063 回答
2

您可以从终端使用“安全”命令;不幸的是,至少在我的带有 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: Your name”关联的 SHA1 摘要匹配的钥匙串中搜索证书。但是,这要求您使用钥匙串 API 编写自己的应用程序。

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

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

于 2010-03-04T09:57:21.740 回答
0

在 _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”的条目)

于 2010-03-04T15:36:43.123 回答