Я go вперед и отвечу на свой собственный вопрос, потому что я в конечном итоге выяснил, как подписать свое приложение и получить его успешно нотариально от службы нотаризации Apple (мой продукт http://cardr.x10.bz) .
Используйте опцию app-image в jpackage для создания неподписанного пакета приложения.
Используйте автоматический скрипт bash для кодирования всех dylib и исполняемые файлы внутри пакета приложения, используя codesign -vvv --options runtime --deep --force --sign "Developer ID Application: ********" <filename>
.
Это многошаговая процедура, поэтому я просто разделю ее на A / B / C.
3A) Найдите все файлы jar в MyApp.app/Contents/mods/, содержащие встроенные файлы .dylib, и извлеките эти файлы в указанную папку c (или запишите небольшая программа, чтобы сделать это для вас). Для меня мое приложение опиралось на JavaFX, поэтому многие библиотеки JavaFX содержали файлы .dylib в файлах jar. Однако, если вы просто используете библиотеки Java по умолчанию, вы сможете перейти к шагу 4, поскольку библиотеки Java по умолчанию не содержат файлы .dylib. Причина, по которой мы должны выполнить этот шаг, заключается в том, что служба нотаризации Apple проверяет эти встроенные файлы .dylib на предмет кодирования.
3B) Используйте автоматический скрипт bash для кодирования всех только что извлеченных файлов dylib, используя codesign -vvv --options runtime --deep --force --sign "Developer ID Application: ********" <filename>
.
3 C) Добавьте каждый из подписанных файлов .dylib обратно в соответствующие файлы jar, чтобы заменить исходные неподписанные встроенные файлы .dylib. Вот команда, которая может пригодиться: jar uf <path to jar file> <path to dylib file>
. Имейте в виду, что второй указанный путь, путь к файлу dylib, также должен быть относительным местоположением dylib в архиве. Посмотрите здесь для получения более подробной информации - https://docs.oracle.com/javase/tutorial/deployment/jar/update.html.
Теперь, когда вы подписали каждый из исполняемых файлов и файлов dylib в .app, пришло время подписать сам .app. Запустите codesign -vvv --force --sign "Developer ID Application: ********" MyApp.app
.
Теперь, когда вы подписали .app, вам нужно запустить jpackage в комплекте приложений, чтобы создать из него DMG или PKG. Не стесняйтесь использовать функции подписи jpackage ma c, которые будут подписывать внешние DMG / PKG. Обратите внимание, что свойство --mac-signing-key-user-name "My Developer Account Name (*******)"
НЕ должно включать часть сертификата «ID разработчика приложения / установщика».
Наконец, вы создали подписанную PKG / DMG, готовую к нотариальному заверению. Используйте xcrun altool --notarize-app --username <apple-id> --password <app-specific-password> <MyApp.dmg or MyApp.pkg>
. Подождите, пока нотариальное завершение завершится, и убедитесь, что оно утверждено.
Если нотариальное завершение завершилось успешно (вы должны), вы можете прикрепить билет вашего приложения к установщику PKG, используя xcrun stapler staple MyApp.pkg
.
Надеюсь, это поможет!