我正在尝试将Java应用程序发送到MacOS X App Store。我的所有代码都正确签名(jars,dylib等)。不幸的是,在发送二进制文件时,我总是收到“无效二进制”错误,并显示以下消息:
亲爱的开发者, 我们发现您最近交付的“tamaggo ibi desktop”存在一个或多个问题。要处理您的交付,必须纠正以下问题: 未启用应用程序沙箱 - 以下可执行文件必须在权利属性列表中包含布尔值为true的“com.apple.security.app-sandbox”权利。有关沙盒应用程序的更多信息,请参阅App Sandbox页面。 •tamaggo ibi.app/Contents/MacOS/JavaAppLauncher 更正这些问题后,请转到“版本详细信息”页面,然后单击“准备上载二进制文件”。继续完成提交过程,直到应用状态为“等待上传”。然后,您可以提供更正的二进制文件 问候, App Store团队
我用Google搜索了一整天但没有发现任何东西。有没有人知道如何在.entitlements文件中沙箱化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
答案 0 :(得分:2)
自2012年夏末以来,我们在MAS上有一个java应用程序。我认为我们是商店里的第一个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"
希望现在为时尚晚,无法提供帮助!