Как изменить способ подписывания Java-приложения после обновления до OSX 10.9.5
Только что обновлен с OSX 10.9.4 до 10.9.5, похоже, мне нужно изменить способ подписывания Java-приложения после обновления, потому что теперь я получаю этот вывод после подписания с
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
Я собираюсь:
/Applications/SongKong.app: the main executable or Info.plist must be a regular file (no symlinks, etc.)
In subcomponent: /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_20.jdk
и проверка с
/usr/bin/codesign --verify --deep --verbose /Applications/SongKong.app
дает мне
/Applications/SongKong.app: code object is not signed at all
In architecture: x86_64
Что я должен изменить, чтобы это исправить?
1 ответ
Решение
Проблема в том, что начиная с 19.9.5 и далее кодовая подпись не позволяет подписывать папки, содержащие символические ссылки, я думаю, ранее она игнорировала проблему.
В моем конкретном случае я сделал копию libjli.dylib и заменил символическую ссылку этой копией. Это сработало, и я не столкнулся с какими-либо проблемами из-за этого изменения.
rm /Applications/MyApp.app/Contents/PlugIns/jdk1.8.0_25.jdk/Contents/MacOS/libjli.dylib
cp /Applications/MyApp.app/Contents/PlugIns/jdk1.8.0_25.jdk/Contents/Home/jre/lib/jli/libjli.dylib /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_25.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: My Name" --force --deep --verbose /Applications/MyApp.app
/usr/bin/codesign --verify --deep --verbose /Applications/MyApp.app