Как встроить JavaAppLauncher в песочницу для App Store

Я пытаюсь отправить Java-приложение в MacOS X App Store. Весь мой код правильно подписан (jars, dylib и т. Д.). К сожалению, при отправке двоичного файла я всегда получаю ошибку «Недействительный двоичный файл» со следующим сообщением:

Уважаемый разработчик! Мы обнаружили одну или несколько проблем с вашей недавней доставкой для «tamaggo ibi desktop». Чтобы обработать вашу доставку, необходимо исправить следующие проблемы: Изолированная среда приложения не включена. Следующие исполняемые файлы должны включать в себя право com.apple.security.app-sandbox с логическим значением true в списке свойств полномочий. См. Страницу «Песочница приложения» для получения дополнительной информации о «песочнице» вашего приложения. • tamaggo ibi.app/Contents/MacOS/JavaAppLauncher После исправления этих проблем перейдите на страницу «Сведения о версии» и нажмите «Готово к загрузке двоичного файла». Продолжайте процесс отправки, пока статус приложения не станет «Ожидание загрузки». Затем вы можете доставить исправленный двоичный файл. С уважением, команда App Store

Я искал это в Google целый день, но ничего не нашел. Кто-нибудь знает, как изолировать JavaAppLauncher в файле .entitlements?

Чтобы предоставить больше информации, я подписываю код следующим образом: /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


person iDev    schedule 22.01.2013    source источник


Ответы (1)


У нас есть java-приложение на MAS с конца лета 2012 года. Я думаю, что мы были первым java-приложением в магазине (подробнее на infinitekind.com).

Я думаю, что одна проблема заключается в том, как вы подписываете. Чтобы быть принятым в магазине приложений, вам необходимо связать JDK. Это можно сделать с помощью задачи appbundler ant. Мы создали его вилку с несколькими улучшениями, поскольку официальная, похоже, не работает и не принимает обновления:

https://bitbucket.org/infinitekind/appbundler

Мы также создали форк OpenJDK с парой мелких исправлений, которые были для нас нарушителями (проблемы с сочетаниями клавиш в пунктах меню). Возможно, теперь они были включены в основную линию 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"

Надеюсь, еще не поздно помочь!

person Sean Reilly    schedule 08.04.2013
comment
Спасибо! Сейчас протестирую! Я очень надеюсь, что это решит мою проблему, потому что я ничего не понимаю! - person iDev; 12.04.2013
comment
Спасибо. Я уже использовал вашу вилку, но более старую версию. Я взял последнюю версию, и она решила мою проблему. Я также использовал тот же порядок подписи, что и вы! Теперь жду обзора! - person iDev; 18.04.2013