【问题标题】:How to Embed JavaAppLauncher to sandbox for App Store如何将 JavaAppLauncher 嵌入到 App Store 沙箱中
【发布时间】:2013-01-05 19:44:50
【问题描述】:

我正在尝试将 Java 应用程序发送到 MacOS X App Store。我所有的代码都已正确签名(jar、dylib 等)。不幸的是,在发送二进制文件时,我总是收到“无效二进制文件”错误,并显示以下消息:

尊敬的开发者, 我们发现您最近交付的“tamaggo ibi desktop”存在一个或多个问题。要处理您的交付,必须更正以下问题: 未启用应用沙箱 - 以下可执行文件必须在权利属性列表中包含布尔值为 true 的“com.apple.security.app-sandbox”权利。有关对您的应用程序进行沙盒处理的更多信息,请参阅应用程序沙盒页面。 • tamaggo ibi.app/Contents/MacOS/JavaAppLauncher 更正这些问题后,请转到“版本详细信息”页面并单击“准备上传二进制文件”。继续完成提交过程,直到应用状态为“等待上传”。然后,您可以提供更正后的二进制文件。 问候, App Store 团队

我用谷歌搜索了一整天,但没有找到任何东西。有人知道如何在 .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

【问题讨论】:

    标签: app-store appstore-approval mac-app-store appstore-sandbox


    【解决方案1】:

    自 2012 年夏末以来,我们在 MAS 上推出了一个 java 应用程序。我认为我们是商店中的第一个 java 应用程序(更多信息请访问infinitekind.com)。

    我认为一个问题是您的签名方式。要在应用商店中被接受,您需要捆绑 JDK。这可以使用 appbundle 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"
    

    希望这还不算太晚!

    【讨论】:

    • 谢谢!我现在就测试一下!我真的希望这能解决我的问题,因为我一无所知!
    • 谢谢。我已经在使用您的叉子,但版本较旧。我拿了最新的,它解决了我的问题。我也用了和你一样的签名顺序!现在等待审核!
    猜你喜欢
    • 2013-11-20
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多