Редактировать файл app.entitlements на этапе сборки

У меня есть несколько целей в моем проекте 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 целей, поэтому я действительно хотел бы получить только один файл разрешений для всех них)

1 ответ

Xcode создает.xcent с вашими правами до подписания вашего приложения. Вы можете добавить этап Run Script как последний шаг, чтобы изменить его с помощью 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
Другие вопросы по тегам