天天看点

【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/这类的不用改