qt小白入坑app开发一
避雷记
1. qt版本选择
省流:5.14.2 版本,选中Andriod,并且要选中MinGW,至于32/64位或者都选上,要根据你的需求,我这里只选择了64位。
假如你不是大佬,一定不要尝试qt6及以上app的开发!!!
因为使用qt6开发app的人少之又少,在网上很难找到相关的教学资料,当你遇到问题时,根本无法解决!!!
这时候就有人说了,用chatgpt啊!哼,chatgpt生成的解决方案几乎都不支持qt6,毕竟它也是用数据训练出来的。对于一些组件,在qt5就能用,而在qt6就废除了,换成了其他组件。对于添加外部库文件,需要在pro文件里添加。而qt creator版本在10以上的生成qt quick项目时根本没有qmake选项,也就无法生成pro文件!
而且在配置app开发环境时,很多教程都是基于qt5,而qt6以上的教程非常少,而且配置面板也略有不同。
总之,在我经历了两周的折磨后,我成功卸载了qt 6.5的版本,选择了qt 5.14.2 版本,个人认为这个版本是比较好的。(因为笔者比较菜,不喜勿喷)
2. 安卓开发环境的下载
省流:Java 1.8(点击即可下载window版本),Android SDK(点击即可下载window版本),Android NDK r20b (点击即可下载window 64版本),这三个软件的安装目录一定不要有中文!!
其他系统应该也是类似版本,但是笔者没有实践过,无法保证。
搭建Qt For Android开发环境需要安装的软件有:
- JAVA SDK
- Android SDK
- Android NDK
如果你自己下载其他版本的,需要在Qt官网上看一下Qt For Android的描述:Getting Started with Qt for Android | Qt 5.15(例如5.15LTS版本),必须使用与Qt相对应的版本,否则会出现问题。
3. 安卓开发环境的配置
省流:后面的都省不了哦
Java如何添加环境变量就不详细介绍了,属于基本操作
下面开始安装下载Android的环境,右键使用管理员打开SDK Manager.exe
这里面的内容可以根据需要进行勾选下载,注意不要下载太老的版本,否则Qt编译不过去,我测试用的是 Android 9.0.0(API 28),因为后文运行时雷电模拟器的版本为 Android 9.0.0。
只需要下载 SDK Platform,其他文件为各种镜像文件,无需下载。如果你下载了多个API,编译时优选版本高的运行,有时会出现版本过高或过低的错误,所以不建议下载多个。
打开Qt Creator,工具->选项->设备:添加相应的jdk,sdk和ndk路径,路径只需要到最外面的大文件夹即可,如下图,出现绿色的对钩即可。
4. 项目的创建
项目的选择
一般使用 qt quick进行开发
一直点下一步,选择 Android 的编译器,然后完成即可
然后就会看到main.cpp文件,自动产生如下代码,大概意思就是,设置应用程序属性Qt :: AA_EnableHighDpiScaling 可以根据显示器的像素密度进行自动缩放。创建qml应用引擎,连接url,即qml文件,然后加载qml;
然后创建安卓默认文件目录模板,这样方便后续添加资源文件。对于原因,参见这个博客前面免费展示的内容
配置qt for andorid的文件
在项目的android目录下新建一个assets的文件夹,然后添加到项目即可
5. 项目的调试
笔者使用的是雷电模拟器,网上很多佬使用的是逍遥模拟器,只是端口号不一样罢了
找到...\Android\android-sdk\platform-tools目录,在地址栏敲cmd回车,在命令行执行如下语句,提示连接成功即可。 注意:每次关闭模拟器之后都需要重新连接
adb connect 127.0.0.1:5555
然后运行程序
此时弹出设备连接,如图第一个端口号为5555的就是雷电模拟器,选择即可
首次构建编译会自动下载gradle构建工具!
时间可能比较长,嫌慢的取消构建,点击下载 gradle-5.5.1-bin.zip,下载完成后不用解压,直接放到C盘用户User文件夹下面的
.gradle\wrapper\dists\gradle-5.5.1-bin\cfsov38hb3r1zj4ic9bbjcc7n
再次点击运行,就会自动构建成功
6. 安卓网页开发的选择
省流:QtWebView 组件
在网上搜索教程,很多人使用的是 QWebEngineView ,但是需要注意的是,这个只能用 MSCV 2017 编译器,而我们开发app必须使用 Android 的编译器,所以不能使用这个组件。
在我探索之后,发现可以使用 QtWebView 组件。
为了在Qt Quick中使用WebView组件,你需要在.pro文件中添加QtWebView的模块依赖:
QT += qml quick webview
在main.cpp文件中main函数添加如下代码,我加载的是本地的一个网址,大家可以换成网址,例如百度网址 https://www.baidu.com
要注意,加载本地网址,需要把本地网址放到 android 的 assets 文件夹里,且前面必须加上 file:/// 来访问。
QUrl webUrl("file:///android_asset/map.html");//加载网址
QQmlContext *context = engine.rootContext();
context->setContextProperty(QStringLiteral("initialUrl"), webUrl);
在main.qml文件里添加如下代码,不要忘了头文件
import QtWebView 1.1
WebView {
id: webView
anchors.fill: parent
url: initialUrl
onLoadingChanged: {
if (loadRequest.errorString)
console.error(loadRequest.errorString);
}
}
然后就可以完美运行啦