如何在Windows下搭建Qt安卓开发环境?
创始人
2024-06-03 01:46:49
0

一、导读

本文描述如何在Windows下搭建Qt安卓开发环境,由于Qt维护的安卓开发环境和安卓开发环境在很大程度上不兼容,所以在选择Qt版本的时候需要注意:在JDK和Android SDK环境的选择上需要注意,否则QtCreator会检测不到正确/合适的Android开发环境。本文基于Qt5.14.2搭建Qt安卓开发环境,具体环境如下所示:

环境描述

  • Windows 10 家庭中文版
  • Qt 版本:5.14.2

👀因为Qt for Android的开发环境搭建有一些繁琐,还是一个不断试错爬坑的过程,文末附上了小生常使用的安卓开发环境完整包,关注『嵌入式小生』微信公众号,后台回复关键字『Qt安卓』,则可获取这个完整安装包,开箱后适当配置即可使用,配置方法详见最后一节。

还是附上图看看效果:

image-20230311144019842

二、搭建步骤

(1)获取Windows上的Qt 5.14.2安装包,并在系统上正确安装Qt。

需要注意的是“选择组件”时,需选择上与安卓开发环境相关的组件。

(2)安装JDK

JDK安装包的获取方法文末描述。以管理员方式运行安装包,将会弹出以下对话框:

image-20230310212320564

备注:如果弹出以上界面后,点击“下一步”没反应了,这是由于Win10家庭[中文版],输入法干扰,将输入法切换到系统输入法,即可成功安装Java8

image-20230311164246445

image-20230309223344873

可以更改jdk安装路径(默认选择也可以)点击“下一步”,过会儿,则会弹出以下对话框安装jre:

image-20230309223502796

同样选择安装路径后(这里与jdk安装到同一级目录中),点击下一步,则弹出如下对话框:

image-20230309223604689

点击“关闭”,则完成JAVA_JDK8的安装了。

(3)安装Android SDK

下载地址:https://www.androiddevtools.cn/

image-20230308225704272

下载完成后,解压缩安装包,目录结构如下:

image-20230308225836111接下来,配置JAVA的系统环境变量。

image-20230308230137647

首先配置JAVA_HOME变量,变量值为刚才的JDK安装目录。

然后配置CLASSPATH变量,变量值为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

网上很多要求下载ndk的,经小生测试,ndk可以在后续步骤中通过SDK自动下载,不需要手工下载,并且手工下载容易搞错版本号,这里推荐使用自动下载的方式。

进入上述Android SDK目录,打开SDK Manager.exe。打开后需要等待一段时间后会弹出界面,等进度条走完,将其他所有√全部取消,只留下下图中的这一个,点击右下角Install,等待一会儿后提示完成,关闭这个界面。

如果没有办法出现以上Android SDK Manager,提供另外一种方法:进入android-sdk-window/tools目录下,打开android.bat文件,找到以下内容,设置java_exe的值为Java.exe的路径(在安装完JDK后的bin目录中),如下图所示:

image-20230309211859787

java_exe的值设置为Java.exe的路径,重新运行android.bat(鼠标双击即可),则会弹出安装界面,等进度条走完,将其他所有√全部取消,只留下Android SDK Tools这项,点击右下角Install:

image-20230309212414493

安装完成后,将如下图所示:

image-20230309213414546

这时候重启系统。

进入android-sdk-window/tools/bin目录下,如下所示:

image-20230309214425383

在Windows命令行,运行sdkmanager.bat,则会出现以下内容:

image-20230309214511346

则表示安装成功,接下来需要使用该批处理文件设置几个参数,同样在Windows命令行中依次输入以下几条命令(ANDROID_SDK_ROOT表示实际安装位置,这里需要替换成实际的路径):

.\sdkmanager "build-tools;30.0.2" --sdk_root=
.\sdkmanager "ndk;21.3.6528147" --sdk_root=
.\sdkmanager "platform-tools" --sdk_root=
.\sdkmanager "platforms;android-30" --sdk_root=
.\sdkmanager "cmdline-tools;latest" --sdk_root=
.\sdkmanager "extras;google;usb_driver" --sdk_root=

此处,笔者的命令为:

.\sdkmanager "build-tools;30.0.2" --sdk_root=D:\ProgramFiles\Java\android-sdk-windows
.\sdkmanager "ndk;21.3.6528147" --sdk_root=D:\ProgramFiles\Java\android-sdk-windows
.\sdkmanager "platform-tools" --sdk_root=D:\ProgramFiles\Java\android-sdk-windows
.\sdkmanager "platforms;android-30" --sdk_root=D:\ProgramFiles\Java\android-sdk-windows
.\sdkmanager "cmdline-tools;latest" --sdk_root=D:\ProgramFiles\Java\android-sdk-windows
.\sdkmanager "extras;google;usb_driver" --sdk_root=D:\ProgramFiles\Java\android-sdk-windows

注:第一次安装会询问是否同意协议,如下图所示,输入y回车即可:

image-20230309224605343

在输入命令安装几个JAVA开发包的时候,有另外几个包都特别大,安装很慢,需要耐心等待,我们可以通过任务管理器查看是否有网络流量,如果有,则说明安装正常进行。

当每一个包安装完成后,都会提示done,我们可以通过.\sdkmanager --list查询是否安装成功。请检查上述包是否全部安装,例如笔者的输出如下图所示:

image-20230310223440944

三、运行测试

通过上述步骤,Qt for Android的Windows开发环境就搭建完成了,本小节运行一个Demo测试一下。

(3-1)创建一个新的测试工程后,选择编译构建套件

image-20230311133936367

在该工程中,设计一个简单的项目:用QLabel显示两行字:

image-20230311142639799

(3-2)编译构建工程

点击Qt Creator左下角有一个像手机的符号,选择构建生成的版本,这里选择release版本,然后点击编译构建按钮(类似于播放的按钮),接着就会弹出Select Android Device的对话框:

image-20230311134440114

此处,小生的构建目标是:生成一个Android上的apk包,然后将其复制到对应的安卓设备运行。所以此处,直接选择项目工程,右键单击,在弹出的菜单中选择“重新构建”选择,接着QtCreator会自动进行编译构建生成apk安装包了。

在首次编译构建过程中,会安装gradle,这个过程由QtCreator自动完成,我们只需要保证网络连接好即可!

image-20230311132026550

当编译完成后,则会弹出类似的信息:

image-20230311134947769

这时候,我们到生成目录下的android-build\build\outputs\apk\debug目录中,则可以看到生成的apk包了,如下图所示:

image-20230311135224134

然后将生成的apk安装包发送到手机设备上,安装后,即可启动运行!

构建个官方demo看看:

四、写在最后

当我们在安装JDK和Android SDK后,在配置QtCreator的安卓开发环境时,总是显示:“Platfrom tools installed”失败
出现该问题的原因有两个:

(1)JDK版本过高,更换低版本即可。
(2)SDK文件夹中tools不全

还有常见的错误就是Android开发环境搭建好了,在编译构建时会仍然会出现无法编译通过的现象,出现这些问题的最终原因就是:Qt版本和JDK、Android SDK、NDK之间没有匹配,好在高版本的QtCreator中提供了自动安装Android开发环境的按钮:

image-20230311145714420

但是仍然会出现各种各样的问题。

因此,小生特意将整个Qt for Android的开发环境打包,在VX公众号回复关键字『Qt安卓』,则可获取这个完整安装包,开箱后适当配置即可使用。下面奉上使用方法:

首先描述下安装包中的内容:

  • (1)android-sdk.zip:包含Qt for Android的相关组件,有ndk、编译工具、platform等等。
  • (2)jdk-8u281-windows-x64.exe:java开发套件(jdk)。
  • (3)qt-opensource-windows-x86-5.14.2.exe:Qt5.14.2安装包。

建议使用Qt5.14.2搭建Qt安卓开发环境。

【使用步骤】

将下载后的压缩包解压缩,将得到如下图所示的三个文件:

image-20230311154817012

首先安装Qt5.14.2,安装完成后,用鼠标双击jdk-8u281-windows-x64.exe,将安装jdk,安装步骤详见上文第二小节。接着将android-sdk.zip解压缩。然后打开QtCreator,依次点击:工具->选项->设备->Android,会进入如下界面:

image-20230311155055334

  • 设置JDK location这一项为安装好的jdk的路径:

image-20230311155213648

  • 设置Android SDK的路径为上文解压缩的android-sdk路径:

image-20230311155352075

  • 设置Android NDK的路径为上文解压缩的android-sdk路径下的ndk\21.3.6528147目录路径:

image-20230311155540987

如果全部配置成功,最后提示信息如下:

image-20230311155638220

接下来,就愉快的开始Qt安卓开发之旅了。

问题总结

如果在编译构建官方demo时,出现以下类似的报错:

aidl.exe E 10-25 07:29:40 864900 864984 io_delegate.cpp:50] Failed to GetFullPathName(D:\releasetesting\514\Examples\Qt-5.14.0\gui\build-analogclock-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\generated\aidl_source_output_dir\debug\compileDebugAidl\out\org\kde\necessitas\ministro\IMinistro.java)FAILURE: Build failed with an exception.* What went wrong:
Execution failed for task ':compileDebugAidl'.
> 1 exception was raised by workers:java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException: com.android.ide.common.process.ProcessException: Error while executing process D:\Android\Sdk\build-tools\28.0.3\aidl.exe with arguments {-pD:\Android\Sdk\platforms\android-29\framework.aidl -oD:\releasetesting\514\Examples\Qt-5.14.0\gui\build-analogclock-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\generated\aidl_source_output_dir\debug\compileDebugAidl\out -ID:\releasetesting\514\Examples\Qt-5.14.0\gui\build-analogclock-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\aidl -ID:\releasetesting\514\Examples\Qt-5.14.0\gui\build-analogclock-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\src\debug\aidl -ID:\releasetesting\514\5.14.0\android\src\android\java\src -ID:\releasetesting\514\Examples\Qt-5.14.0\gui\build-analogclock-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\src -dC:\Users\eskil\AppData\Local\Temp\aidl6920309767147390351.d D:\releasetesting\514\5.14.0\android\src\android\java\src\org\kde\necessitas\ministro\IMinistro.aidl}

解决方法:找到项目路径将其复制到一个新的短路径下编译构建即可解决。

相关内容

热门资讯

公司辞旧迎新晚会主持词串词   男:尊敬的各位领导、各位来宾,  女:亲爱的同事们  合:大家下午好!  男:光阴似箭,岁月如梭...
纯中式婚礼主持词 纯中式婚礼主持词(通用5篇)  主持词是主持人在台上表演的灵魂之所在。在现在的社会生活中,越来越多的...
悟空传的经典台词 悟空传的经典台词  1、我曾深爱过,我不在乎结局。  2、我知道天会愤怒,那,你知不知道,天也会颤抖...
最有创意的广告词(经典 最有创意的广告词(经典  01 钱不是问题,问题是没钱。  02 钻石恆久远,一颗就破產。  03 ...
毕业感谢致辞 关于毕业感谢致辞(精选15篇)  无论是在学校还是在社会中,大家都写过致辞吧,致辞的措词造句要考虑与...
年会嘉宾简短致辞 年会嘉宾简短致辞  在日复一日的学习、工作或生活中,大家总少不了要接触或使用致辞吧,致辞具有很强的实...
成长礼主持稿 成长礼主持稿(通用8篇)  在日常生活和工作中,需要使用主持稿的情况越来越多,主持稿是在晚会、联欢会...
电视剧《放羊的星星》经典台词 电视剧《放羊的星星》经典台词  在现实社会中,用到台词的地方越来越多,台词是一种特殊的,也是很难掌握...
抓周仪式主持词 抓周仪式主持词范文  主持词是主持人在台上表演的灵魂之所在。在如今这个中国,主持词是活动、集会等的必...
年终总结大会主持词结束语 年终总结大会主持词结束语  主持词是各种演出活动和集会中主持人串联节目的串联词。时代不断在进步,主持...
纯中式婚礼主持词(2) 让我们共同举起手中的酒杯,共同祝福我们这一对知心爱人,祝福他们在爱的旅途上风雨相承,相濡以沫,真爱一...
幼儿园园庆主持词 幼儿园园庆主持词  利用在中国拥有几千年文化的诗词能够有效提高主持词的感染力。在人们积极参与各种活动...
篮球比赛开幕式主持词 篮球比赛开幕式主持词(通用5篇)  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵...
六一儿童节活动节目的主持词 六一儿童节活动节目的主持词(精选7篇)  主持词是各种演出活动和集会中主持人串联节目的串联词。在当今...
公司员工的感谢词 公司员工的感谢词3篇  我们虽然是公司的一名员工,其实也是公司的主人,需要有将公司当成家的态度,态度...
毕业晚会的主持稿 毕业晚会的主持稿(精选11篇)  在现在社会,我们很多时候都不得不用到主持稿,主持稿是主持人为节目进...
《加油金三顺》经典台词 《加油金三顺》经典台词  1、回忆是没有任何力量的。(三顺)  2、人都知道会死,但不还是活着吗?(...
升学酒会主持词 升学酒会主持词  借鉴诗词和散文诗是主持词的一种写作手法。在如今这个时代,司仪等是很多场合都需要的角...
秋季开学典礼颁奖主持词 秋季开学典礼颁奖主持词  活动对象的不同,主持词的写作风格也会大不一样。在人们积极参与各种活动的今天...
老人寿宴致辞 老人寿宴致辞(精选7篇)  在我们平凡的日常里,许多人都写过致辞吧,致辞具有“礼仪性”或“仪式化”的...