2 votes

Essayer de déployer un bundle .app sur OSX

J'ai suivi le tutoriel suivant : http://qt-project.org/doc/qt-4.8/deployment-mac.html#the-bundle

Lorsque j'ai lancé otool sur mon application, cela ressemble à ceci :

qjson.framework/Versions/0/qjson (compatibility version 0.7.0, current version 0.7.1)
libboost_date_time.dylib (compatibility version 0.0.0, current version 0.0.0)
libQt.Shared.1.dylib (compatibility version 1.0.0, current version 1.0.0)
libQt.Framework.1.dylib (compatibility version 1.0.0, current version 1.0.0)
@executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.1)
@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.1)
@executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.8.0, current version 4.8.1)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 625.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)

Avant que je ne fasse cela, il fonctionnait bien et pointait vers ceci :

    /Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.1)
/Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.1)
/Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.8.0, current version 4.8.1)

Maintenant, quand j'ouvre mon application, elle se plante directement. Lorsque j'essaie de l'ouvrir dans le terminal, j'obtiens le problème suivant :

objc[44337]: Class QNSImageView is implemented in both 
/Users/me/MyApp/MyApp.app/Contents/MacOS/./../Frameworks/QtGui.framework/Versions/4/QtGui and /Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Versions/4/QtGui. One of the two will be used. Which one is undefined.

Terminé par un "défaut de segment"

Comment puis-je faire en sorte qu'il n'y ait pas de conflit ? J'ai essayé d'exécuter Qts deploy script mais ça n'a pas marché non plus. Qu'est-ce que je fais de mal ?

Edit :

J'ai essayé d'utiliser leur script à nouveau et cette fois-ci j'ai fait ce qui suit :

macdeployqt MyApp.app -dmg -no-plugins

Cela a créé un .dmg avec mon application qui fonctionne. Le problème maintenant est que rien ne se passe et quand je l'ai lancé dans le terminal, j'ai obtenu cette erreur :

QEventLoop: Cannot be used without QApplication
QEventLoop: Cannot be used without QApplication

Qu'est-il arrivé à mon eventloop ? Rien n'a changé dans mon application depuis que je l'ai exécutée parfaitement depuis le finder et quand je l'ai déployée et exécutée depuis la version deplyod. Cela n'a aucun sens.

Mise à jour : J'ai maintenant essayé de supprimer l'ancienne application et de la reconstruire à partir de zéro en utilisant QtCreator. J'ai alors fait ce qui suit :

bash-3.2$ /Users/me/Downloads/macdeployqt-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK__Release/macdeployqt/macdeployqt MyApp.app
copied "/Library/Frameworks/qjson.framework/Versions/0/qjson" to "MyApp.app/Contents/Frameworks/qjson.framework/Versions/0/qjson" 
copied "/usr/lib/libboost_date_time.dylib" to "MyApp.app/Contents/Frameworks//libboost_date_time.dylib" 
copied "/usr/lib/libQt.Shared.1.dylib" to "MyApp.app/Contents/Frameworks//libQt.Shared.1.dylib" 
copied "/usr/lib/libQt.Framework.My.1.dylib" to "MyApp.app/Contents/Frameworks//libQt.Framework.My.1.dylib" 
copied "/Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Versions/4/QtGui" to "MyApp.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui" 
copied "/Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Resources/qt_menu.nib/classes.nib" to "MyApp.app/Contents/Frameworks/QtGui.framework/Resources/qt_menu.nib/classes.nib" 
copied "/Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Resources/qt_menu.nib/info.nib" to "MyApp.app/Contents/Frameworks/QtGui.framework/Resources/qt_menu.nib/info.nib" 
copied "/Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Resources/qt_menu.nib/keyedobjects.nib" to "MyApp.app/Contents/Frameworks/QtGui.framework/Resources/qt_menu.nib/keyedobjects.nib" 
copied "/Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtCore.framework/Versions/4/QtCore" to "MyApp.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore" 
copied "/Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtNetwork.framework/Versions/4/QtNetwork" to "MyApp.app/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork" 
copied "/Users/me/QtSDK1.2.1/Desktop/Qt/4.8.1/gcc/lib/QtXml.framework/Versions/4/QtXml" to "MyApp.app/Contents/Frameworks/QtXml.framework/Versions/4/QtXml" 

Deploying plugins from "/usr/plugins"
Created configuration file: "MyApp.app/Contents/Resources/qt.conf" 
This file sets the plugin search path to "MyApp.app/Contents/plugins" 

Lorsque je le démarre, il se plante toujours, comme avant. Mes deux librairies "libQt.Shared.1.dylib" et "libQt.Framework.1.dylib" ne s'appellent pas ainsi mais ont toutes deux des liens symboliques avec ces noms. Cela pourrait-il avoir un rapport avec le crash ? Ou est-ce qu'il casse le lien et les copie dans celui-ci ? Ces deux librairies sont des librairies que j'ai faites moi-même et elles utilisent toutes deux QtCore et QtNetwork. Avec otool, l'application a l'air d'aller vers les bons éléments :

@executable_path/../Frameworks/qjson.framework/Versions/0/qjson (compatibility version 0.7.0, current version 0.7.1)
@executable_path/../Frameworks/libboost_date_time.dylib (compatibility version 0.0.0, current version 0.0.0)
@executable_path/../Frameworks/libQt.Shared.1.dylib (compatibility version 1.0.0, current version 1.0.0)
@executable_path/../Frameworks/libQt.Framework.My.1.dylib (compatibility version 1.0.0, current version 1.0.0)
@executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.1)
@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.1)
@executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.8.0, current version 4.8.1)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 625.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)

S'il vous plaît, aidez-moi...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X