2016-10-19 4 views
0

я ранее получаю эту ошибку с моим codesigned (изолированного) приложения с поместить его JRE (после this tutorial):Импортные dylib файлы, вызывающие сбой после упаковки приложения

Library not loaded: /usr/X11/lib/libfreetype.6.dylib 
Referenced from: /Game.app/Contents/PlugIns/jdk1.7.0.jdk/Contents/Home/jre/lib/libfontmanager.dylib 

Что я сделал, чтобы исправить это было импортировать их dylibs в тот же каталог, libfontmanager:

libfreetype.6.dylib 
libpng16.16.dylib 
libbz2.1.0.dylib 
libSystem.B.dylib 
libz.1.dylib 

затем выполняется эти команды на libfontmanager/libfreetype.6.dylib

install_name_tool -change /usr/X11/lib/libfreetype.6.dylib @rpath/libfreetype.6.dylib libfontmanager.dylib 
install_name_tool -change /usr/local/lib/libfreetype.6.dylib @rpath/libfreetype.6.dylib libfreetype.6.dylib 
install_name_tool -change /usr/lib/libz.1.dylib @rpath/libz.1.dylib libfreetype.6.dylib 
install_name_tool -change /usr/lib/libbz2.1.0.dylib @rpath/libbz2.1.0.dylib libfreetype.6.dylib 
install_name_tool -change /usr/local/lib/libpng16.16.dylib @rpath/libpng16.16.dylib libfreetype.6.dylib 
install_name_tool -change /usr/lib/libSystem.B.dylib @rpath/libSystem.B.dylib libfreetype.6.dylib 

Я тогда CodeSign каждый dylib/банку + приложение

codesign -v --deep --verbose=4 -f -s "3rd Party Mac Developer Application: Company" --verbose --entitlements Game.entitlements Game.app 
find Game.app/Contents/ -type f \(-name "*.jar" -or -name "*.dylib" \) -exec codesign --verbose=4 --deep -f -s "3rd Party Mac Developer Application: Company" --entitlements Game.entitlements {} \; 

приложение работает безупречно, даже после того, как codesigned!

Единственная проблема заключается в том, что после упаковки и установки

productbuild --component Game.app /Applications -s "3rd Party Mac Developer Installer: Company" Game.pkg 
sudo installer -store -pkg Game.pkg -target/

Приложение дает мне эту ошибку при открытии его

lsd[346]: LaunchServices: Could not store lsd-identifiers file at /private/var/db/lsd/com.apple.lsdschemes.plist 
kernel[0]: CODE SIGNING: cs_invalid_page(0x118113000): p=658[JavaAppLauncher] final status 0x3000200, denying page sending SIGKILL 
kernel[0]: CODE SIGNING: process 658[JavaAppLauncher]: rejecting invalid page at address 0x118113000 from offset 0x15000 in file "/Applications/Game.app/Contents/PlugIns/jdk1.7.0.jdk/Contents/Home/jre/lib/libz.1.dylib" (cs_mtime:1476852998.0 == mtime:1476852998.0) (signed:1 validated:1 tainted:1 wpmapped:0 slid:0) 
com.apple.xpc.launchd[1]: (com.company.gameOSX.80672[658]) Binary is improperly signed. 

Что вызывает это?


EDIT: Я нашел что-то, что могло бы ответить на мой вопрос. Я выполнил эти команды в извлеченном приложении, и все работает отлично.

sudo codesign -f -s - "/Applications/Game.app/Contents/PlugIns/jdk1.7.0.jdk/Contents/Home/jre/lib/libbz2.1.0.dylib" 
sudo codesign -f -s - "/Applications/Game.app/Contents/PlugIns/jdk1.7.0.jdk/Contents/Home/jre/lib/libSystem.B.dylib" 
sudo codesign -f -s - "/Applications/Game.app/Contents/PlugIns/jdk1.7.0.jdk/Contents/Home/jre/lib/libz.1.dylib" 

Что заставляет эти dylib не правильно кодироваться после упаковки и как это исправить?

ответ

0

Я понял. Файлы dylib, которые вызывают сбои, не работали, когда по какой-то причине координировали его с моим идентификатором подписи. Все работало нормально до упаковки и извлечения, что было странно.

Я закончил удаление трех файлов dylib, которые вызывали сбой, и мое приложение работало даже после извлечения!

Смежные вопросы