Благодаря новой документации Apple, выпущенной во время WWDC 2019, я наконец смог решить эту проблему, которая была невозможна раньше, даже после использования билета DTS. По сути, , если у вас есть сложный пакет, и вам нужно создать его автоматически с помощью сценариев, вы НЕ МОЖЕТЕ использовать автоматический рабочий процесс через архив, а затем загрузить пакет приложений через органайзер в Xcode .
Итак, для тех, кто испытывает эту проблему сейчас и в будущем, вот что решило мою проблему:
1) Перейдите на панель навигации проекта и щелкните свой проект
.
2) Перейдите к каждой из ваших целей, нажав на параметры сборки, и внесите следующие изменения (введите слово «подпись» в поле поиска, так как это сужает отображаемые параметры сборки):
- Перейдите на Идентификатор подписи кода и на Выпуск изменение сборки Mac Developer (значение по умолчанию) в Application ID приложения на вашей связке ключей.
- Перейдите к Базовые права доступа для подписи кода и для Release изменение сборки Да (значение по умолчанию) в Нет . Если вы этого не сделаете, ваш пакет приложений будет отклонен сервером нотариального заверения, поскольку вы разрешаете внедрение кода в ваше приложение, которое необходимо для отладки, но представляет угрозу безопасности.
- Перейдите на Стиль подписи кода и на Выпуск Изменение сборки Автоматически на Ручной . Если вы этого не сделаете, правильная подпись не удастся.
- Перейдите к Другие флаги подписи кода и к Release build add - отметка времени . Это пометит Xcode, что вы хотите добавить безопасную метку времени в свое приложение. Если вы этого не сделаете, ваш пакет приложений будет отклонен сервером нотаризации.
3) Чтобы создать приложение для распространения, выполните следующие действия:
- Создайте новую Схему, которая включает все цели, используя настройки сборки Release
- Нажмите Build или Command + B в качестве сочетания клавиш, и вы получите правильную подпись всего своего пакета, если вы будете следовать правилу наизнанку (то есть код в каталогах более глубокого уровня должен быть подписан первый!)
4) Чтобы заверить нотариально заверенный пакет приложений, который вы только что создали и подписали, и с правильной безопасной отметкой времени, у вас есть несколько вариантов:
- Создайте образ диска .dmg и следуйте инструкциям в этом ответе . Однако пропустите инструкции по подписанию кода, поскольку то, что я объясняю здесь, охватывает все проблемы и предостережения, объясненные там. Кроме того, вы можете заархивировать и загрузить zip-файл, как я объясню ниже:
- Сжатие пакета приложения в zip-файл, используя это в Терминале:
/usr/bin/ditto -ck --keepParent "*APP_PATH*" "*ZIP_PATH*"
5) Загрузите образ диска или zip-файл, используя это в Терминале: xcrun altool --notarize-app --primary-bundle-id "your-primary-bundle-id-here" --username "*your-username*" --password "*your-app-specific-password-here*" --file *your-path-here*
. Вам необходимо зайти в свою appleid.apple.com учетную запись, чтобы сгенерировать пароль приложения для приложения altool
. Это мера безопасности, поэтому вы не должны отправлять свой пароль Apple ID в открытом виде. Вы можете сделать это на панели «Безопасность» своей учетной записи управления Apple ID. Ничего не предпринимайте, пока не получите подтверждение об успешной загрузке .
6) Чтобы запросить статус истории нотариального заверения, запустите его в Терминале: xcrun altool --notarization-history 0 -u "*your-account*" -p "*your-app-specific-password-here*"
. Вы должны увидеть список загрузок, соответствующие даты и RequestUUID. Последняя загрузка обычно является первой в списке.
7) Чтобы запросить статус нотариуса, включите доступ к файлу журнала нотариуса, запустите его в Терминале: xcrun altool --notarization-info RequestUUID -u "*your-account*"
8) Если вы получаете статус, что ваш пакет приложений был утвержден, то вы можете закрепить это утверждение, запустив его в Терминале: xcrun stapler staple *path-to-your-app-bundle*
.