Как встроить JavaAppLauncher в песочницу для App Store
Я пытаюсь отправить приложение Java в MacOS X App Store. Весь мой код правильно подписан (jars, dylib и т. д.). К сожалению, при отправке двоичного файла я всегда получаю ошибку "недопустимый двоичный файл" со следующим сообщением:
Уважаемый разработчик, Мы обнаружили один или несколько вопросов, с Вашего недавнего доставки "tamaggo Иби рабочего стола". Для обработки доставки необходимо устранить следующие неполадки: Песочница приложения не включена - следующие исполняемые файлы должны включать - ком.яблоко.безопасность.приложение-песочница" права с логическим значением true в списке свойств прав. Дополнительную информацию о песочнице приложения см. На странице песочница приложения. * тамагго Иби.приложение / содержимое / MacOS / JavaAppLauncher Как только эти проблемы будут исправлены, перейдите на страницу сведений о версии и нажмите кнопку "Готово к загрузке двоичного файла."Продолжайте процесс отправки до тех пор, пока состояние приложения не станет "ожидание загрузки.- Затем вы можете доставить исправленный двоичный код. С уважением, магазин app Store команда
Я гуглил это в течение целого дня, но ничего не нашел. Есть ли у кого-нибудь ключ, как песочница JavaAppLauncher в .файл с правами ?Чтобы дать больше информации, вот как я подписываю код:
/usr/bin/codesign --resource-rules desktop-app/target/dist/myApp/Contents/ResourceRules.plist --verbose --force --sign "3rd Party Mac Developer Application: XXX" desktop-app/target/dist/myApp
find desktop-app/target/dist/myApp.app/Contents/ -type f ( -name "*.jnilib" -or -name "*.jar" -or -name "*.dylib" ) -exec codesign --resource-rules desktop-app/target/dist/myApp.app/Contents/ResourceRules.plist --verbose -f -s "3rd Party Mac Developer Application: XXX" --entitlements desktop-app/target/dist/myApp.app/Contents/myApp.entitlements {} ;
codesign --resource-rules desktop-app/target/dist/myApp.app/Contents/ResourceRules.plist --verbose --force --sign "3rd Party Mac Developer Application: XXX" desktop-app/target/dist/myApp.app/Contents/Resources/binaries/ffmpeg
codesign --resource-rules desktop-app/target/dist/myApp.app/Contents/ResourceRules.plist --verbose --force --sign "3rd Party Mac Developer Application: XXX" desktop-app/target/dist/myApp.app/Contents/MacOS/JavaAppLauncher
1 ответ:
У нас есть java-приложение на MAS с конца лета 2012 года. Я думаю, что мы были первым java-приложением в магазине (подробнее на infinitekind.com).
Я думаю, что одна из проблем заключается в том, как вы подписываете. Чтобы быть принятым в app store, вам потребуется пакет JDK. Это можно сделать с помощью задачи appbundler ant. Мы создали вилку этого с несколькими улучшениями, так как официальная, кажется, застоялась и не принимает обновления:Https://bitbucket.org/infinitekind/appbundler
Мы также создали вилку OpenJDK с несколькими незначительными исправлениями, которые были dealbreakers (проблемы с сочетанием клавиш меню) для нас. Возможно, теперь они были включены в основной OpenJDK, но я так не думаю.
Https://bitbucket.org/infinitekind/openjdk7u-jdk
В любом случае, вышеперечисленные два пункта могут быть не нужны в вашем случае, но именно так мы это сделали, и это сработало. Я думаю, что настоящая проблема заключается в том, что вы подписываете и в каком порядке. Вот что мы делаем, и теперь он был принят для пяти представлений обновления:# sign all the jar and dylib files (signing jars is apparently not required by apple, but should be!) find "Path/To/App/AppName.app/Contents" -type f \( -name "*.jar" -or -name "*.dylib" \) -exec codesign -f -s '3rd Party Mac Developer Application: YourCompanyName' --entitlements 'path/to/AppName.entitlements' {} \; # Sign the JDK plugin codesign --verbose -f -s '3rd Party Mac Developer Application: YourCompanyName' --entitlements 'path/to/AppName.entitlements' "Path/To/App/AppName.app/Contents/Plugins/jdk" # sign the whole bundle codesign --verbose -f -s '3rd Party Mac Developer Application: YourCompanyName' --entitlements 'path/to/AppName.entitlements' "Path/To/App/AppName.app"
Надеюсь, это еще не слишком поздно, чтобы быть полезным!