【问题标题】:Edit app.entitlements file during build phase在构建阶段编辑 app.entitlements 文件
【发布时间】:2017-04-05 12:55:31
【问题描述】:

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

我想为我的所有目标拥有相同的权利文件,并拥有一个带有 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 个目标,所以我真的很想为所有这些目标获取一个权利文件)

【问题讨论】:

  • 您找到解决方案了吗?
  • @Kremk 不。我必须为每个目标获得不同的 app.entitlements :-(

标签: ios xcode deep-linking entitlements plistbuddy


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 2020-12-15
    • 2013-11-15
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    相关资源
    最近更新 更多