如何在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}

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

相关内容

热门资讯

绿荫下的光斑初一作文(优秀3... 绿荫下的光斑初一作文 篇一绿荫下的光斑初一作文初一的暑假,我和家人来到了一个风景如画的小镇度假,这里...
初一想象作文【优选6篇】 初一想象作文 篇一翱翔的翅膀我有一双神奇的翅膀,它们是我独一无二的特殊能力。当我激动或兴奋的时候,这...
初一开学作文(最新6篇) 初一开学作文 篇一我的初一开学心情初一开学,对于我来说是一次特别的经历。我迫不及待地等待着这一天的到...
我是钻石初一作文【经典5篇】 我是钻石初一作文 篇一钻石初一是我人生中的一个重要转折点。回想起以前的日子,我觉得自己就像一个粗糙的...
初一写景作文250字通用63... 初一写景作文250字 第一篇什么是和谐?和谐是春天的第一缕阳光,第一片绿叶,第一滴雨滴,最清新的空气...
难忘的敏特英语学习初中作文(... 难忘的敏特英语学习初中作文 篇一初中时期,我曾经参加过一次难忘的敏特英语学习活动。这次活动不仅让我提...
初一开学第一篇作文(精彩3篇... 初一开学第一篇作文 篇一:新的起点开学第一天,我怀着激动的心情来到了新的学校。这是我人生中的一个新的...
我是中学生了感觉真棒作文(经... 我是中学生了感觉真棒作文 篇一终于,我升入了中学,成为了一名中学生。这是我人生中的重要转折点,我感到...
我的札记本作文(精简5篇) 我的札记本作文 篇一我的札记本是我生活中的得力助手。它陪伴我度过了许多美好的时光,记录了许多珍贵的回...
鸡年春节歌曲:迎春花歌词(精... 鸡年春节歌曲:迎春花歌词 篇一《迎春花》是一首充满喜庆和欢乐气氛的鸡年春节歌曲。这首歌曲以迎春花为主...
少年的模样-记叙文【精彩5篇... 少年的模样-记叙文 篇一夏日的阳光透过窗帘洒在地板上,照亮了少年的脸庞。他身穿一件白色的T恤,牛仔裤...
初中英语作文:蘑菇 Mush... 初中英语作文:蘑菇 Mushrooms 篇一Mushrooms are a type of fung...
遇见作文【通用6篇】 遇见作文 篇一近年来,作文成为了学生们备受关注的一项重要考试内容。然而,对于很多学生来说,作文却是一...
游藏龙百瀑初一作文【优选6篇... 游藏龙百瀑初一作文 篇一游藏龙百瀑初一作文 篇一游藏龙是我国著名的风景名胜区之一,位于贵州省黔东南苗...
初中的军训作文600字(精选... 初中的军训作文600字 篇一初中的军训是一次难忘的经历初中的军训是每个初中生都会经历的一段时光。我记...
我的未来我做主初一作文(精选... 我的未来我做主初一作文 篇一我的未来我做主未来,是一个充满无限可能的词汇。在这个时代,我们都有自己的...
同上一堂课雷锋告诉我作文(通... 篇一:同上一堂课雷锋告诉我雷锋是一位伟大的人物,他的事迹深深地感动了我。上一堂课,我们学习了雷锋的故...
水仙初一作文(优质5篇) 水仙初一作文 篇一我的初一生活初一,是一个全新的开始,也是我人生中的一个重要阶段。我迎来了初中生活,...
从前的我们的作文500字【优... 从前的我们的作文500字 篇一过去的我们总是无忧无虑地生活着,那是我们最纯真的时光。回想起那些年,我...
我庆幸我是中国人初一作文55... 我庆幸我是中国人初一作文550字 篇一作为一个初一学生,我庆幸自己是中国人。中国是一个拥有五千年文明...