3

JavaアプリケーションをMacOSXAppStoreに送信しようとしています。私のコードはすべて正しく署名されています(jars、dylibなど)。残念ながら、バイナリを送信すると、常に「無効なバイナリ」エラーが発生し、次のメッセージが表示されます。

開発者の皆様へ「tamaggoibiデスクトップ」の最近の配信で1つ以上の問題が見つかりました。配信を処理するには、次の問題を修正する必要があります。アプリサンドボックスが有効になっていない-次の実行可能ファイルには、entitlementsプロパティリストにブール値trueの「com.apple.security.app-sandbox」資格が含まれている必要があります。アプリのサンドボックス化の詳細については、アプリのサンドボックスページを参照してください。•tamaggoibi.app/Contents/MacOS/JavaAppLauncherこれらの問題が修正されたら、[バージョンの詳細]ページに移動し、[バイナリをアップロードする準備ができました]をクリックします。アプリのステータスが「アップロードを待機中」になるまで、送信プロセスを続行します。その後、修正されたバイナリを配信できます。よろしく、AppStoreチーム

私はこれを丸一日グーグルで検索しましたが、何も見つかりませんでした。誰かが.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

4

1 に答える 1

2

2012年の夏の終わりからMASにJavaアプリがあります。ストアで最初のJavaアプリだったと思います(詳細はinfinitekind.comをご覧ください)。

一つの問題はあなたがどのように署名しているかということだと思います。アプリストアで承認されるには、JDKをバンドルする必要があります。これは、appbundlerantタスクを使用して実行できます。公式のものは停滞していて更新を受け入れていないように見えるので、いくつかの改善を加えてこのフォークを作成しました:

https://bitbucket.org/infinitekind/appbundler

また、OpenJDKのフォークを作成し、いくつかのマイナーな修正を加えました。これは、私たちにとって大きな問題(メニュー項目のキーボードショートカットの問題)でした。これらは現在メインラインのOpenJDKに組み込まれている可能性がありますが、私はそうは思いません。

https://bitbucket.org/infinitekind/openjdk7u-jdk

とにかく、あなたの場合、上記の2つの項目は必要ないかもしれませんが、それが私たちのやり方であり、うまくいきました。本当の問題は、何にどの順番で署名するかということだと思います。これが私たちの仕事であり、現在5つの更新の提出が受け入れられています。

  # 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-04-08T22:32:02.253 に答える