Как загрузить 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