【BB10开发】通过编译QML为二进制代码来加速启动兼保护源代码

本文介绍如何将QML文件编译成二进制代码以加速应用启动,并保护源代码。步骤包括修改项目配置文件(.pro)、资源文件(qrc)、bar-descriptor.xml及调整QML和C++中的资源引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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/这类的不用改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值