Файл прав доступа был изменен во время сборки, которая не поддерживается

#ios #xcode

#iOS #xcode

Вопрос:

Я получаю следующую ошибку во время сборки выпуска:

ошибка: файл прав доступа «projectname.entitlements» был изменен во время сборки, которая не поддерживается. Вы можете отключить эту ошибку, установив для параметра ‘CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION’ значение ‘YES’, однако это может привести к тому, что подпись кода встроенного продукта или профиль подготовки будут содержать неправильные права доступа.

Я не могу найти CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION в документации Google или Apple, есть идеи, где я должен это использовать?

Ответ №1:

Я исправил это с помощью Product > Clean Build Folder .

Комментарии:

1. Это сработало для меня, когда я столкнулся с ошибкой после добавления нового права в мое приложение

2. это должен быть принятый ответ. установка CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION в значение yes может привести к ошибкам в будущем

3. Это должен быть правильный ответ, как указано в @LouisCouture

Ответ №2:

Столкнулся с той же проблемой. Вы можете установить CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION в качестве пользовательского параметра в настройках сборки.

  • В Xcode щелкните целевой объект вашего проекта и выберите Настройки сборки.
  • Нажмите » » под настройками сборки, а затем «Добавить пользовательский параметр»
  • Установите CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION значение YES для отладки и выпуска (или любых других схем, которые вам нравятся)

Скриншот того, куда идти в Xcode

Комментарии:

1. Хотя это может привести к исчезновению ошибки, вероятно, это НЕ то, чего вы действительно хотите. Apple предупреждает вас, что этот параметр небезопасен: … это может привести к тому, что подпись кода встроенного продукта или профиль подготовки будут содержать неправильные права доступа.

Ответ №3:

Прежде чем вы начнете изменять параметры сборки, вы также можете попробовать удалить производные данные в вашем каталоге установки или сборки.

Если кэш проекта находится в стандартном расположении ниже, вы можете выполнить очистку Xcode, и он удалит эти данные.

 /Users/your_user_name/Library/Developer/Xcode/DerivedData/Path_To_Project/
  

Если вы определили свои собственные пути установки или сборки, перейдите в этот конкретный каталог и удалите этот кеш. Xcode должен предоставить вам путь, если произойдет эта ошибка.

Комментарии:

1. Это помогло мне. Я немного нервничал по поводу установки флага, разрешающего изменение прав доступа, потому что мое приложение этого не требовало, и это кажется немного «тяжелым» подходом. В любом случае, странная ошибка.

Ответ №4:

Если Clean Build Folder это не поможет, убедитесь, что у вас не одно и то же рабочее пространство / проект, открытый в нескольких Windows или Window Tabs !

(Xcode позволяет открывать несколько вкладок через File -> New -> Window Tab )

Комментарии:

1. Очистка ничего не дала, но закрытие всех моих вкладок исправило это. Спасибо!

Ответ №5:

На самом деле я столкнулся с точно такой же ошибкой во время компиляции, когда я сделал следующее в клиенте GitHub:

  **Discarded changes in my Git Repo for an entitlement file.**
  

введите описание изображения здесь

Это обязательно, как предлагалось выше, «Очистить папку сборки» или добавить пользовательский ключ CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION к YES.

Я знаю, что на это был дан ответ выше, но я хотел задокументировать шаги воспроизведения, которые привели к вышеупомянутой ошибке.

Ответ №6:

Как и другие публикации, это решается путем очистки папки сборки или установки CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION на YES .

Однако после очистки папки сборки одна сборка будет выполнена успешно, но все последующие будут завершаться с той же ошибкой прав доступа, пока вы снова не очистите папку сборки. Очевидно, что это не оптимально, поскольку добавляет ~ 2-3 минуты на сборку даже для изменения одной строки.

Второе решение, включающее CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION , полностью устраняет ошибку прав доступа, но установка на физические устройства завершается сбоем при каждой другой сборке, пока папка сборки не будет очищена. На самом деле тот же результат.

Кто-нибудь на самом деле знает, почему это происходит в первую очередь? Я проверил свой файл прав доступа до и после сборки.. Ничего не меняется. Это просто ошибка xcode, которая стоит нам всех часов нашей жизни?