如何在Windows下搭建Qt安卓开发环境?
创始人
2024-06-03 02:43:19
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}

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

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
AWSECS:哪种网络模式具有... 使用AWS ECS中的awsvpc网络模式来获得最佳性能。awsvpc网络模式允许ECS任务直接在V...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...