天天看點

【BB10開發】通過編譯QML為二進制代碼來加速啟動兼保護源代碼

QML是可以通過編譯為二進制代碼來加速啟動的,同時編譯QML兼具保護源代碼的效果。 以下的執行個體是經過與老外讨論總結出來的,測試通過:

1. 項目根目錄建立檔案qrc-assets.qrc 内容為: <!DOCTYPE RCC> <RCC version="1.0"> <qresource> <file>assets/main.qml</file> <file>assets/common/mycomponent.qml</file>

... </qresource> </RCC>

關鍵點:包含 所有qml檔案。不支援通配符

2. 修改.pro檔案,最後加入: RESOURCES += qrc-assets.qrc DEPENDPATH += assets

3.修改bar-descriptor.xml,以過濾 *.qml 把"<asset path="assets">assets</asset>"改成如下 

<asset path="assets" dest="assets">     <exclude name="**/*.qml"/> </asset>

4. 最後需要修改qml、cpp檔案 QML: import   "Common"  //這樣的路徑不用動 import   "../Common" qml裡面引用qml檔案可以不用動,可以這樣: source   :   "about.qml"

如果圖像 是這樣就不行: imageSource   :  "images/icon_vibro.png" 是絕對路徑就不用改: imageSource   :   "asset:///images/icon_vibro.png" imageSource: "file:///accounts/1000/...../images/icon_vibro.png" 注意asset沒有s

CPP: QmlDocument   *qml =   QmlDocument ::create(   "asset:///main.qml" ).parent(   this ); 改成: QmlDocument   *qml =   QmlDocument ::create(   "qrc:/assets/main.qml" ).parent(   this ); (注意asset加個s)

如果圖像 是這樣就不行: btnSensorSwitch  ->  setImageSource (  QUrl (  "images/icon_stop.png"  )); 是絕對路徑就不用改: btnSensorSwitch   ->  setImageSource (  QUrl (   "asset:///images/icon_stop.png"   ));

shared/documents/這類的不用改

繼續閱讀