##场景描述android
Qt Widgets Application
中使用QWebSocket
模块时,开发中引用正常(Desktop构建模式),可是使用windeployqt
工具部署时,对应的依赖库是没有添加进去的,致使部署失败QtQuick/V-Play Application
中使用Qt.WebSocket
模块时,开发中引用正常(Desktop构建模式),使用windeployqt
工具部署后,对应的依赖库也没有添加进去,致使部署失败QtQuick/V-Play Application
中使用Qt.WebSocket
模块时,开发中引用异常(Android构建模式),使用部署生成.apk
后,找不到对应的模块,致使部署失败##解决方案(场景1 & 场景2) 场景1和2的部署失败,能够经过windeployqt
工具部署后(Desktop构建模式),把QWebSocket
对应的依赖库能够手动拷贝一份来解决(有工具还须要手搓老是不爽的)web
##解决方案(场景3) 场景3中其实有2个问题:websocket
import Qt.WebSocket 1.0
找不到对应的模块(Android构建模式)Qt.WebSocket
模块的依赖库没有添加进来而每次部署生成.apk
(Android构建模式),都会从新构建和自动添加依赖库,无法经过手搓来有效控制Qt.WebSocket
依赖库的添加:(socket
在
Qt.WebSocket
的文档是这么说的:
Note: Prior to Qt 5.5, the import statement was import Qt.WebSockets 1.0 (notice the dot between Qt and WebSockets). The old statement is still supported for backwards compatibility, but it cannot be mixed with the new statement within the same project工具
为了兼容旧版本语法是什么鬼?而后我去找了下对应的依赖库路径,发现有2个WebSocket
相关的路径ui
%QtDir%/android_armv7/qml/Qt/Websocket/
,这个目录下只有一个qmldir
文件,内容以下:module Qt.WebSockets plugin declarative_qmlwebsockets ../../QtWebSockets/ classname QtWebSocketsDeclarativeModule typeinfo plugins.qmltypes
%QtDir%/android_armv7/qml/QtWebSockets/
,这个目录下有qmldir & plugins.qmltypes & libdeclarative_qmlwebsockets.so
这3个文件,这里的qmldir
文件,内容以下:module QtWebSockets plugin declarative_qmlwebsockets classname QtWebSocketsDeclarativeModule typeinfo plugins.qmltypes
稍微总结下咱们能够这样理解:Qt.WebSocket
(为了兼容Qt5.5.1以前的语法)最终指向QtWebSocket
,那么咱们直接使用新语法试试?code
//import Qt.WebSocket 1.0 //这是旧语法,注释掉 import QtWebSocket 1.0 //新语法 //...code...
而后构建-部署-运行,一切正常.ip
##Tips:Mac/Linux等其余平台估计也有同样的问题,能够参考一下开发