如何在Windows下搭建Qt安卓开发环境?

一、导读

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

环境描述

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

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

还是附上图看看效果:

二、搭建步骤

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

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

(2)安装JDK

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

如何在Windows下搭建Qt安卓开发环境?_第1张图片

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

如何在Windows下搭建Qt安卓开发环境?_第2张图片

如何在Windows下搭建Qt安卓开发环境?_第3张图片

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

如何在Windows下搭建Qt安卓开发环境?_第4张图片

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

如何在Windows下搭建Qt安卓开发环境?_第5张图片

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

(3)安装Android SDK

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

如何在Windows下搭建Qt安卓开发环境?_第6张图片

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

如何在Windows下搭建Qt安卓开发环境?_第7张图片接下来,配置JAVA的系统环境变量。

如何在Windows下搭建Qt安卓开发环境?_第8张图片

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

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

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

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

如何在Windows下搭建Qt安卓开发环境?_第9张图片

如果没有办法出现以上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:

如何在Windows下搭建Qt安卓开发环境?_第10张图片

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

如何在Windows下搭建Qt安卓开发环境?_第11张图片

这时候重启系统。

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

如何在Windows下搭建Qt安卓开发环境?_第12张图片

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

如何在Windows下搭建Qt安卓开发环境?_第13张图片

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

.\sdkmanager "build-tools;30.0.2" --sdk_root=<ANDROID_SDK_ROOT>
.\sdkmanager "ndk;21.3.6528147" --sdk_root=<ANDROID_SDK_ROOT>
.\sdkmanager "platform-tools" --sdk_root=<ANDROID_SDK_ROOT>
.\sdkmanager "platforms;android-30" --sdk_root=<ANDROID_SDK_ROOT>
.\sdkmanager "cmdline-tools;latest" --sdk_root=<ANDROID_SDK_ROOT>
.\sdkmanager "extras;google;usb_driver" --sdk_root=<ANDROID_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回车即可:

如何在Windows下搭建Qt安卓开发环境?_第14张图片

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

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

如何在Windows下搭建Qt安卓开发环境?_第15张图片

三、运行测试

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

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

如何在Windows下搭建Qt安卓开发环境?_第16张图片

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

如何在Windows下搭建Qt安卓开发环境?_第17张图片

(3-2)编译构建工程

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

如何在Windows下搭建Qt安卓开发环境?_第18张图片

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

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

如何在Windows下搭建Qt安卓开发环境?_第19张图片

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

如何在Windows下搭建Qt安卓开发环境?_第20张图片

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

如何在Windows下搭建Qt安卓开发环境?_第21张图片

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

构建个官方demo看看:

四、写在最后

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

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

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

如何在Windows下搭建Qt安卓开发环境?_第22张图片

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

因此,小生特意将整个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安卓开发环境。

【使用步骤】

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

如何在Windows下搭建Qt安卓开发环境?_第23张图片

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

如何在Windows下搭建Qt安卓开发环境?_第24张图片

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

如何在Windows下搭建Qt安卓开发环境?_第25张图片

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

如何在Windows下搭建Qt安卓开发环境?_第26张图片

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

如何在Windows下搭建Qt安卓开发环境?_第27张图片

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

如何在Windows下搭建Qt安卓开发环境?_第28张图片

接下来,就愉快的开始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}

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

你可能感兴趣的:(小生聊【Qt】,qt,android,windows)