如何在没有 xcode 的情况下生成 xml 格式的权利?

Posted

技术标签:

【中文标题】如何在没有 xcode 的情况下生成 xml 格式的权利?【英文标题】:How to generate entitlements in xml format without xcode? 【发布时间】:2014-06-23 11:10:14 【问题描述】:

我必须构建 ios 应用程序,但不使用 xcode。 问题在于应用程序的通行证权利。

我的权利文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)com.domain</string>
    </array>
</dict>
</plist>

xcode 将其格式化为这个(.xcent 文件):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>A1B2C3D4E5.product.name</string>
    <key>com.apple.developer.team-identifier</key>
    <string>E5D4C3B2E1</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>A1B2C3D4E5.com.domain</string>
    </array>
</dict>
</plist>

通过使用命令:

builtin-productPackagingUtility app.entitlements -entitlements -format xml -o $HOME/Library/Developer/Xcode/DerivedData/app//Build/Intermediates/app.build/Debug-iphoneos/app.build/app.xcent

谁能解释一下这个命令到底是做什么的,我该如何手动调用它?或者我怎样才能用手模拟这个命令调用?

谢谢。

【问题讨论】:

【参考方案1】:

如果你可以使用xcodebuildbuiltin-productPackagingUtility 将作为一个步骤被调用。您只需在命令行中提供权利作为构建设置变量。

【讨论】:

问题是我不能使用 xcodebuild。 :) 已建立的解决方案是配置文件中的 grep ApplicationId 和 TeamIdentifier。【参考方案2】:

该库将创建一个 xcent 文件,您可以将其用于代码设计。

https://github.com/sotownsend/iarrogant

注意:我还没有测试过这个库。

您还可以从使用 xcodebuild 创建的 ipa 中获取生成的 xcent 文件,并使用它来签署未来的版本。当您的权利发生变化时,您必须使这些文件保持同步。

【讨论】:

以上是关于如何在没有 xcode 的情况下生成 xml 格式的权利?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有科学计数法或小数的情况下格式化数字

编辑器或在没有 Xcode 的情况下以干净的方式打印 plist 的方法

如何在不写入磁盘的情况下将 XML 从 Delphi 传递到 C#?

如何将密码添加到在没有密码的情况下生成的 OpenSSH 私钥?

如何在没有开发人员证书的情况下在 Xcode 中归档我的项目?

Xcode/iOS:如何在没有开发者帐户的情况下启用应用程序组?