Сбой отправки в Mac App Store, потому что встроенная среда Java 11 содержит существующий CFBundleIdentifier - PullRequest
0 голосов
/ 13 января 2019

Я отправляю приложение в Mac App Store. Приложение основано на Java, поэтому инфраструктура Java.runtime встроена в комплект приложения.

Это нормально работало с Java 8 и более ранними версиями, но Java 11 вызывает некоторые проблемы. Apple требует, чтобы вы подписали все фреймворки, используя свой собственный файл сертификатов и прав. Поэтому я подписываю все двоичные файлы и файлы .dylib, а также сам фреймворк, используя инструмент кодирования с опцией --force, чтобы заменить существующую подпись. Опять же, это было хорошо с более старыми версиями Java.

Проблема в том, что с Java 11 CFBundleIdentifier включен в исполняемые файлы. Этот CFBundleIdentifier не заменяется кодовым знаком и поэтому остается "net.java.openjdk.cmd". Затем Apple отклоняет приложение, поскольку этот CFBundleIdentifier уже присутствует в Mac App Store.

Приведенное сообщение об ошибке показывает проблему:

CFBundleIdentifier Collision - The Info.plist CFBundleIdentifier value 'net.java.openjdk.cmd' of 'java' is already in use by another application.

Итак, мой вопрос заключается в том, можно ли заменить CFBundleIdentifier существующего исполняемого файла при использовании кодового знака или ad-hoc. Обходной путь должен был бы иметь мою собственную сборку OpenJDK, которая устанавливает другой CFBundleIdentifier, но это было бы очень непрактично и привело бы к длительной сборке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...