如何在命令行中调用builtin-productPackagingUtility

时间:2012-02-14 16:04:31

标签: ios xcode macos entitlements

在构建设置(Xcode 4.2.1)中指定权利和代码签名标识时,从Xcode构建时有以下输出:

ProcessProductPackaging "myAppName.entitlements" "/path/to/myAppName.xcent"
cd /path/to/myAppName/SourceCode
builtin-productPackagingUtility "/path/to/myAppName/SourceCode/myAppName.entitlements" -entitlements -format xml -o "/path/to/myAppName.xcent"


CodeSign "/path/to/Garfields Comic Boom 1.0.app"
cd /path/to/myAppName/SourceCode
setenv CODESIGN_ALLOCATE /Developer/usr/bin/codesign_allocate
/usr/bin/codesign --force --sign "myCertificate" --entitlements "/path/to/myAppName.xcent" "/path/to/myAppName.app"

我想在构建结束时签署我的app文件夹,而不是在Xcode构建期间。

我的问题是我不知道如何在命令行中生成xcent文件。

问题:如何在命令行中生成xcent文件?我从根发现了一个名为productPackagingUtility的内容......

3 个答案:

答案 0 :(得分:2)

  

我想在构建结束时签署我的app文件夹,而不是在Xcode构建期间。

如果您禁用设备构建的代码签名,则IIRC最新版本的Xcode会抱怨。

最简单的方法是让Xcode对其进行签名,然后再重新签名。步骤大约是

  1. 使用codesign -d --entitlements=MyApp.xcent MyApp.app
  2. 转储原始权利
  3. 如果您要更改配置文件,请将新配置文件复制到MyApp.app/embedded.mobileprovision并相应地修改权利(IIRC文件格式具有4字节魔术和4字节长度;请记住更新长度! )。
  4. 使用您所需的证书重新签名。

答案 1 :(得分:0)

使用codesign实用程序不需要xcent文件。您只需创建一个plist文件并将其用于权利。确保它是XML plist,而不是二进制文件。

答案 2 :(得分:0)

.entitlements和$ {APPNAME} .xcent的格式相同,因此可以直接复制。