cx_Freeze打包生成独立App

之前在打包成App或dmg时一直提示错误如下:

1
2
3
4
5
On Mac OS X, you might be loading two sets of Qt binaries into the same process.
Check that all plugins are compiled against the right Qt binaries. Export
DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
This application failed to start because it could not find or load the Qt
platform plugin "cocoa".

上stackoverflow查看了一下,发现了这个问题,根据答主的回答,这是因为打包成app后在压缩包里和系统资源库里有两个Qt资源,app不知道从哪个可以打开,答主建议在build时采用如下命令:

1
python3 setup.py bdist_mac --qt-menu-nib=/usr/local/Cellar/qt5/5.4.2/plugins/platforms/

后面参数确定了要调用的是App目录的qt资源,打包App成功,但是出现了一个新的问题,用该方法打包出来的App分辨率好低: 直接运行的效果:

打包成独立App的效果:

还是在stackoverflow上找到了答案根据答主的解释,打包成App时没用确定是否按照高分辨率进行输出,即在info.plist文件里缺少了NSHighResolutionCapable[1]参数,所以默认渣分辨率输出了。解决方法是将your.app/Contents/Info.plist的内容复制出来,放到setup.py同一级目录下,新建一个Info-highres.plist(名字随意)的配置文件,粘贴your.app/Contents/Info.plist的内容,再加上一句(也可以在Xcode中编辑,实测更加方便直观)

1
2
<key>NSHighResolutionCapable</key>
<true/>

然后build时用以下命令:

1
python3 setup.py bdist_mac --custom-info-plist Info-highres.plist

结合之前的命令,我使用以下命令来build:

1
python3 setup.py bdist_mac --custom-info-plist Info-highres.plist --qt-menu-nib=/usr/local/Cellar/qt5/5.4.2/plugins/platforms/