Как загрузить dmg файл для нотариального заверения в xcode

Я пытаюсь загрузить наше существующее приложение в Apple для нотариального заверения.

Согласно документу https://help.apple.com/xcode/mac/current/ я должен открыть приложение организатора архива xcode.

У нас есть файл dmg, сгенерированный с нашего сервера сборки jenkins. Как мне открыть файл dmg в xcode для загрузки?

Кроме того, есть ли инструмент командной строки, который я могу использовать для нотариального заверения?

2 ответа

Вы можете сделать это из командной строки.

Сначала вам нужно будет извлечь.app из вашего.dmg и подать в отставку, удалив com.apple.security.get-task-allow право в процессе (оно добавляется сборкой автоматически для поддержки отладки и обычно удаляется архивированием - однако служба нотариуса не примет пакет с таким правом, поэтому вы должны удалить его).

Используемый вами файл.entitlements может быть пустым.

Обратите внимание также на использование --options runtime, который указывает, что ваше приложение было создано с усиленной средой выполнения, а также является обязательным.

codesign -f -s "Developer ID Application: Name (ID)" --entitlements my-entitlments.entitlements --options runtime MyApp.app

Теперь вам нужно упаковать ваш.app обратно в.dmg и оставить это:

(Я использую --options runtime флаг здесь тоже, хотя не уверен, если это необходимо)

codesign -s "Developer ID Application: Name (ID)" MyApp.dmg --options runtime

Тогда используйте altool представить ваш.dmg:

(Имя пользователя и пароль должны быть кем-то из команды macOS на портале для разработчиков)

xcrun altool --notarize-app -f MyApp.dmg --primary-bundle-id my-app.myapp -u username -p password

Если загрузка прошла успешно, вы получите токен:

RequestUUID = 28fad4c5-68b3-4dbf-a0d4-fbde8e6a078f

Затем вы можете проверить статус с altoolиспользуя этот токен:

xcrun altool --notarization-info 28fad4c5-68b3-4dbf-a0d4-fbde8e6a078f -u username -p password

В конце концов, это будет либо успешно, либо не удастся. Просто продолжай проверять. Проверьте поле "Статус" ответа, которое должно быть "успех". В ответ также будет включен файл журнала, который можно использовать для устранения ошибок.

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

xcrun stapler staple MyApp.dmg

А затем проверить с spctl:

spctl -a -v MyApp.app

MyApp.app: принято

источник = Нотариально заверенный идентификатор разработчика

Вы также можете применить флаг карантина к вашему.app и попробовать запустить его, вы увидите новое диалоговое окно Gatekeeper:

xattr -w com.apple.quarantine MyApp.app

В Xcode 13 и более поздних версиях нотариальное заверение через командную строку в основном сводилось к этим двум:

      xcrun notarytool store-credentials "<key>" --apple-id "<your apple id>" --team-id <your teamid> --password "<app specific password>"

и

      xcrun notarytool submit <your file>.dmg --keychain-profile "<key>" --wait

На момент написания этого ответа документация Apple сбивает с толку, поскольку они упомянули об использовании секретного пароля 2FA вместо пароля для конкретного приложения. Вы можете выполнить следующие действия, чтобы создать пароль для конкретного приложения .

Немного более длинная версия здесь: https://blog.rampatra.com/how-to-notarize-a-dmg-or-zip-file-with-the-help-of-xcode-s-notary-tool

Другие вопросы по тегам