Процесс нотариуса для приложения Macos не работает
Я разработал приложение для MacOS. Я включаю процесс нотариального заверения как часть его распространения. Я выполнил все шаги и запустил:
xcrun altool --notarize-app --primary-bundle-id "${APP_BUNDLE_ID}" --username "${APPLE_DEV_ID}" --password "${DEV_APP_SPECIFIC_PASSWORD}" --file "${DMG_PATH}"
Затем я проверяю ход нотариального заверения, используя:
xcrun altool --notarization-info "${notarize_uuid}" -u "${APPLE_DEV_ID}" -p "${DEV_APP_SPECIFIC_PASSWORD}
Выход этого:
RequestUUID: =<Request>
Date: 2019-05-26 09:40:34 +0000
Status: success
LogFileURL: <Log file>
Status Code: 0
Status Message: Package Approved =~ success ]]
Затем я запускаю команду сшивания:
xcrun stapler staple -v <dmg file>
Это также заканчивается успехом:
The staple and validate action worked!
Однако, когда я извлекаю файл.app и запускаю:
spctl --assess --verbose ./macos/MyApp.app
./macos/MyApp.app/: accepted
Согласно документам, которые я прочитал, должно быть написано что-то вроде: "источник = Нотариально заверенный идентификатор разработчика", верно?
Я запускаю это на MacOS Mojave 10.14.5
Что мне не хватает??
Может ли кто-нибудь помочь мне?
заранее спасибо
1 ответ
Если кто-то столкнется с той же проблемой, я опубликую решение этой проблемы:
Прежде всего вы должны сшить файл.app, а не dmg. Это означает, что вы должны извлечь двоичный файл и сшить его
Также, чтобы проверить, была ли заявка нотариально заверена, в
`System Preferences - Security and Privacy`
вариант Allow apps downloaded from:
должен иметь Apple Store and identifier developers
опция проверена
Надеюсь это поможет
Иapp
и dmg
могут быть нотариально заверены и скреплены скобами по отдельности, одна за другой. Попробуйте сделать это, и ошибка должна исчезнуть.
Короткий ответ
Это могло быть из-за RPATH
ссылка на путь за пределами пакета приложений. Удаление этого RPATH решит проблему.
Проверка файлов журнала
Дополнительную информацию об отклонении (после попытки запустить заблокированное приложение) можно найти в Console.app
. Обратите внимание, что вам следует открыть Console.app, прежде чем пытаться открыть заблокированное приложение, иначе не все сообщения могут быть зарегистрированы. Вы должны искать процессXprotectService
в журналах вашего устройства (т.е. выберите ваше устройство на левой боковой панели Console.app). Если проблема действительно связана с RPATH, вы должны найти такую запись:
XprotectService: [com.apple.xprotect: xprotect] Ошибка файла / пути / к / вашему / исполняемому файлу / или / библиотеке на rPathCmd /rpath/, вызывающая / проблему (rpath разрешен в: (путь не найден), bundleURL: /path/to/your/bundle.app)
Проверка этих файлов журнала может дать вам ключ к решению и других проблем.
Обратите внимание, что я получил следующую информацию от инженера Apple:
Gatekeeper не информирует пользователей через пользовательский интерфейс о специфике ошибки, хотя разработчики могут просмотреть ее в журналах. Процесс нотариального заверения предназначен исключительно для обнаружения вредоносного программного обеспечения и не повторяет принудительное применение гейткипера. Вам все еще нужно заверить программное обеспечение и протестировать его с помощью Gatekeeper.
В будущем мы стремимся предоставить разработчикам более совершенные инструменты для устранения некоторых из этих распространенных ошибок.
Связаться с Apple
Если вы не можете решить свою проблему с помощью вышеуказанной информации, вы можете связаться с самой Apple с помощью помощника по обратной связи. Они не очень быстро отвечают (~1-2 недели), но ответы скорее по существу.