##場景描述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等其餘平臺估計也有同樣的問題,能夠參考一下開發