私はJavaアプリケーションを配布しています。これは開発者が署名したものですが、公証されていません。ドキュメントは私が使用しないXcodeを使用したアプリの作成に偏っているので、これからどこから始めればよいかわからないため、しかし、私は自分のアプリを公証し、次に進む最も簡単な方法が欲しいだけです。
ドキュメントを読んで、私はすでにいくつかの懸念があります:
私は現在Java 8を使用していますが、Java 8アプリを公証することができますか、またはJavaに移動する必要がありますか? = 11.私がサポートする他のいくつかのプラットフォームで問題が発生するため、私はむしろJava 11に移動しません。
私の開発Macマシンは古いMacBook Proであり、OSX El Capitan 10.11.6を超えてアップデートできないので、このマシンで公証することはできますか?私は最近のマシンを持っていますが、それは開発用にセットアップされていません。最初にこれをセットアップするのは問題があったので、開発者ID証明書をそこに転送することについていくつかの懸念があります。
AppBundler fork https://github.com/TheInfiniteKind/appbundler/ を使用してアプリをパッケージ化します
これは、署名などを行うantスクリプトビルドファイルによって呼び出され、最終的にdmgCanvasを使用してdmgを作成します
以下のantスクリプトを投稿します。誰かが基本的な手順から始められることを願っています
#!/bin/bash
#set -x
cd /Users/paul/code/jthink/songkong/src/main/scripts
hiutil -C -fapplehelpbook/SongKongHelp/SongKongHelp.helpindex applehelpbook/SongKongHelp/
cd /Users/paul/code/jthink/songkong
rm -fr /Applications/SongKong.app
mvn clean
mvn -DskipTests=true install
rm -fr target/songkong-6.6
unzip target/songkong-6.6-distribution.Zip -d target
ant
while read line; do
echo "$line"
if [[ "$line" = "<string>1.0</string>" ]]; then
cat mergefile.txt # or echo or printf your extra lines
fi
done < /Applications/SongKong.app/Contents/Info.plist > Info.new
while read line; do
echo "$line"
if [[ "$line" = "<false/></dict>" ]]; then
cat mergefile2.txt
fi
done < Info.new > Info.new2
rm /Applications/SongKong.app/Contents/Info.plist
rm Info.new
mv Info.new2 /Applications/SongKong.app/Contents/Info.plist
Sudo cp -r target/songkong-6.6/applehelpbook/SongKongHelp /Applications/SongKong.app/Contents/Resources
rm /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_192.jdk/Contents/MacOS/libjli.dylib
cp /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_192.jdk/Contents/Home/jre/lib/jli/libjli.dylib /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_192.jdk/Contents/MacOS
export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"
/usr/bin/codesign --sign "Developer ID Application: P Taylor" --force --deep --verbose /Applications/SongKong.app
/usr/bin/codesign --verify --deep --verbose /Applications/SongKong.app
cd /Users/paul/code/jthink/SongKong
/usr/local/bin/dmgcanvas /Users/paul/code/jthink/SongKong/dmgCanvas_songkong.dmgCanvas /Users/paul/songkong-osx.dmg -v SongKong
** 2020年2月3日の更新Appleは公証要件を厳しくし、プロセスは現在私のために機能していません。私は AdoptOpenJdk ですが、まだ機能していません。
これらは私の現在のステップです
ビルドスクリプトの終わりをそれに応じて(appSpecificPasswordの代わりに)作成したスクリプトに変更しました
export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"
/usr/bin/codesign --sign "Developer ID Application: P Taylor" --force --deep --verbose /Applications/SongKong.app
/usr/bin/codesign --verify --deep --verbose /Applications/SongKong.app
cd /Users/paul/code/jthink/SongKong
/usr/local/bin/dmgcanvas /Users/paul/code/jthink/SongKong/dmgCanvas_songkong.dmgCanvas /Users/paul/songkong-osx.dmg -v SongKong -identity "Developer ID Application: P Taylor" -notarizationAppleID [email protected] -notarizationPassword appSpecificPassword -notarizationPrimaryBundleID songkong
アプリに署名したが、検証に失敗した
pauls-Mac-mini:songkong paul$ export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"
pauls-Mac-mini:songkong paul$ /usr/bin/codesign --sign "Developer ID Application: P Taylor" --force --deep --verbose /Applications/SongKong.app
/Applications/SongKong.app: signed app bundle with Mach-O thin (x86_64) [com.jthink.songkong]
pauls-Mac-mini:songkong paul$ /usr/bin/codesign --verify --deep --verbose /Applications/SongKong.app
/Applications/SongKong.app: a sealed resource is missing or invalid
file added: /Applications/SongKong.app/Contents/PlugIns/macosjre/Contents/_CodeSignature/CodeResources
pauls-Mac-mini:songkong paul$ ls -l /Applications/SongKong.app/Contents/PlugIns/macosjre/Contents/_CodeSignature/CodeResources
-rw-r--r-- 1 paul admin 14689 13 Apr 15:02 /Applications/SongKong.app/Contents/PlugIns/macosjre/Contents/_CodeSignature/CodeResources
したがって、封印が失敗するため、公証は明らかに失敗します。
その後、songkong.entitlements
ファイルを作成し、他の回答で指定されているオプションの一部を使用するため、
/usr/bin/codesign --timestamp --options runtime --entitlements /Users/paul/code/jthink/songkong/songkong.entitlements --sign "Developer ID Application: P Taylor" --force --deep --verbose /Applications/SongKong.app
しかし、検証行は、同じように例外的に失敗します。