Процесс нотариуса для приложения 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 недели), но ответы скорее по существу.

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