ios - 在构建阶段编辑 app.entitlements 文件

标签 ios xcode deep-linking entitlements plistbuddy

我的 Xcode 项目中有多个目标,每个目标都有一个关联的域,但又不同。

Screenshot a the entitlements file

我希望为所有目标拥有相同的权利文件,并使用 PListBuddy 编写脚本来更改域的值。

我已经有一个可以在构建阶段启动并正确编辑文件的脚本:

case $TARGET_NAME in
  "EN6") fireBaseUrl="FOO.app.goo.gl";;
  "ES5") fireBaseUrl="BAR.app.goo.gl";;
  "SVT-C4") fireBaseUrl="FOOFOO.app.goo.gl";;
  "PC5") fireBaseUrl="BARBAR.app.goo.gl";;
  *) fireBaseUrl="FOOBAR.app.goo.gl";;
esac

# Universal links used by Firebase
associatedDomainKey="com.apple.developer.associated-domains"
/usr/libexec/PlistBuddy -c "delete ${associatedDomainKey}" app.entitlements
/usr/libexec/PlistBuddy -c "add :${associatedDomainKey} array" -c "add :${associatedDomainKey}:0 string applinks:${fireBaseUrl}" app.entitlements

问题是我收到“可执行文件已使用无效权利进行签名”。在设备上安装应用程序时出错。

我猜这是因为编辑后,权利文件不再与配置文件中包含的权利相对应。

你知道是否有办法做我想做的事吗?使用 faSTLane、shell 脚本或任何东西...(我有 40 个目标,所以我真的希望只为所有目标获取一个权利文件)

最佳答案

Xcode 在签署您的应用程序之前使用您的权利创建一个 .xcent。您可以添加运行脚本阶段作为最后一步,以使用 PlistBuddy 对其进行修改,如下所示:

echo "Updating ${TARGET_TEMP_DIR}/${FULL_PRODUCT_NAME}.xcent"
/usr/libexec/PlistBuddy -c "add com.apple.developer.icloud-container-environment string Production" "${TARGET_TEMP_DIR}/${FULL_PRODUCT_NAME}.xcent" || exit 1

关于ios - 在构建阶段编辑 app.entitlements 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43231878/

相关文章:

ios - 如何使用 CFTimeInterval 为动画指定开始时间?

ios - 有什么方法可以为 Paintcode 变量设置动画吗?

ios - 如何从 iOS 中的 Facebook SDK 4.0 获取用户名

ios - UITableView cellForRowAtIndexPath 从未调用过

iphone - 如何正确显示新 View 以及如何返回到之前的 View

ios - 您的帐户已经有一个有效的 ios 分发证书(在虚拟机上)

ios - Xcode 6 不会创建新项目或 Playground 。它只是在这个过程中停滞不前

ios - React Navigation 从深度链接中获取参数不起作用

android - 谷歌应用邀请短信深层链接不打开应用

android - 替代 Branch.io 来管理深层链接