нотариально заверить приложение Java для распространения в магазине приложений Mac

У меня есть приложение со встроенным jvm. Я пытался загрузить его в Apple для нотариального заверения, но получал the binary is not signed ошибку

severity    "error"
code    null
path    "Myapp.dmg/Myapp.app/Contents/Resources/javafx-media-11-mac.jar/libfxplugins.dylib"
message "The binary is not signed."
docUrl  null
architecture    "x86_64"

Я уже подписал Myapp.app, а также подписал Myapp.dmg --deep & --options runtime. Я также пробовал подписывать все файлы в папке моего приложения с помощью find Myapp.app -exec codesign -f -s $MYDEVELOPERID --deep --options runtime {} \;, но все равно не получалось.

Обратите внимание, что путь к файлу, который я получил из-за ошибки, находится внутри файла jar. Я уже подписал файл jar. Нужно ли мне также распаковывать файл jar, подписывать каждый файл и переупаковывать его? Это было бы слишком банально!


person laocius    schedule 23.11.2018    source источник


Ответы (1)


также подписал Myapp.dmg с --deep & --options runtime

Похоже, --deep еще не закодирован для перемещения внутри файлов JAR.

Я уже подписал файл jar. Нужно ли мне также распаковывать файл jar, подписывать каждый файл и переупаковывать его?

да. Связанные .dylib, .jnilib (и, вероятно, .so) должны быть индивидуально подписаны. Если они предоставлены третьей стороной из JAR, вам нужно будет извлечь, подписать и затем повторно связать файл JAR.

В вашем случае JavaFX больше не связан со средой выполнения Java 11, поэтому вам нужно будет распаковать, подписать и повторно заархивировать именно JavaFX JAR, который вы собираете.

Этот процесс подробно описан (в общих чертах) здесь: https://stackoverflow.com/a/53528020/3196753. Здесь также есть ссылка на код, специфичный для ANT, здесь, но для каждой сборки потребуется очень специфический код, поэтому он предоставляется только в качестве ориентира для работающей нотариально заверенной сборки.

Например, в приведенном выше примере ANT двоичные файлы PowerPC нужно было вырезать вручную. Многие проекты по-прежнему предоставляют двоичные файлы PowerPC, но нотариальное заверение не удастся, если они являются частью дистрибутива.

Можно было бы подумать, что право подписывать эти .dylib файлы должно принадлежать провайдеру JAR, но я ничего не нашел о разрешении смешанных подписывающих лиц в проектах в любом из документация Apple.

person tresf    schedule 19.12.2018