用于签署iPhone应用程序的供应配置文件的名称?

时间:2010-02-24 15:43:20

标签: iphone xcode build-automation provisioning codesign

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

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

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

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

取消授权suggested使用命令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中找不到任何有用的选项。

3 个答案:

答案 0 :(得分:6)

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

它名为YourApplication.app/embedded.mobileprovision

这不能解答您的问题,因为原始文件名已丢失,但它似乎可以解决您的更大问题。

答案 1 :(得分: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提交了错误。

答案 2 :(得分:0)

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

这是使用默认值(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”的那个)