Qt中PC端应用工程搭建
Updated:
Contents
Qt作为跨平台UI开发框架,用c++实现,API也是类C的,很适合搭建一些集成Native SDK的演示环境,如果只是一些UI的原型展示,用Electron或者nwjs更快
工程建立
qt建立工程的三个关键文件:
- YourApp.pro:管理工程源文件、库依赖、基本工程配置
- YourApp.qrc:管理资源
- YourApp.ui:管理布局
YourApp.pro
在Mac上面生成xcode工程很简单,下面一行命令就行
qmake -spec macx-xcode YourApp.pro |
pro文件跟GYP、CMake是一类工具,最大区别是内置QT的工程配置,重要的几个配置项:
基本信息
TARGET = YourAppName #App名字 |
UI
FORMS += YourLayout.ui #布局文件 |
c++配置
GCC的写法
mac{ |
仿GYP,CMake的写法
HEADERS += your_header.h |
Mac Resources
RESOURCES += YourApp.qrc #资源文件 |
Qt生成文件配置
qt在xcode运行时会根据layout文件生成对应的代码
QT_RUN_GENERATE_FILE_DIR = ./qt-run-generate-files #指定生成代码目录 |
YourApp.qrc
App中用到的资源文件需要在这里面定义,用来UI布局,如下例:
<RCC> |
YourApp.ui
这个文件是xml格式,相当于android的layout
在线升级
在线升级目前开源的成熟跨平台框架是Sparkle,提供generate_keys和sign_update工具,通过xml文件信息更新来进行在线升级。
Sparkle在线升级流程
利用generate_keys生成dsa_pub.pem、dsa_priv.pem—>利用sign_update用dsa_priv.pem对dmg进行签名—>将签名信息、应用版本信息、下载链接更新到线上xml中—>旧客户端通过检测到xml更新进行在线升级
Sparkle如何保障应用合法性
基本思路用私钥加密,公钥解密,验证App的合法性
- 使用私钥dsa_priv.pem,对App进行计算,得出结果dsaSignature — 算法1
- 将公钥dsa_pub.pem,放入app内,可以根据它对App进行计算,结果如果为dsaSignature,则验证通过 – 算法2
算法1和算法2是公开的,有DSA、RSA、DES等等,Sparkle的签名原理是openssl命令实现的DSA算法,验证APP的合法性
Sparkle xml格式
|
dsaSignature就是通过dsa_priv.pem + App生成的数字签名
sparkle客户端通过version和shortVersionString来判断是否要升级