记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境

前言

这两天有将之前用QT做的一个软件改成安卓版的需要,想着QT号称全平台通用,应该很好搞,没想到搭环境就搞了好久,现在将整个经历发出来给大家分享,帮大家避雷了。
QT官网有给出很简单的安装教程,但是经我测试该教程有一部分小错误。大家可以参照我的方法安装。

安装准备

首先下载以下内容

JDK下载

这部分很迷惑,请不要下载Java 18,而要下载Java 8
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第1张图片
请将页面下滑,到如下图所示所示位置,下载Java8,点击Windows,再点击蓝色箭头下载Java8的安装包。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第2张图片

Android SDK下载

下载SDK的部分,看到很多人都推荐下载Android Studio,可是我从没用过Studio,想必安装也相当复杂,所以直接下载SDK即可,请注意,SDK下载在页面很下方,请使劲向下滑。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第3张图片
页面滑到下图所示位置,点击蓝色箭头下载SDK
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第4张图片
网上很多要求下载ndk的,经我测试,ndk可以在后续步骤中通过SDK自动下载,不需要手工下载,并且手工下载容易搞错版本号,这里推荐使用自动下载的方式。

到这里,安装准备结束,下面进入安装环节。

安装过程

JDK安装

JDK下载完后是安装包的形式,如下图所示。
JDK安装包图标
打开后,点击下一步,
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第5张图片
点击更改可以修改安装位置,上面的功能选项不要修改,完成后点击下一步,
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第6张图片
等待,过一会儿会出现JRE的安装界面,
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第7张图片
看到下图界面后,可以更改安装目录,建议改到和JDK同一根目录下,点击下一步,
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第8张图片
安装完成如下图所示。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第9张图片
安装完成后,需要配置系统环境变量。
首先配置JAVA_HOME变量,按下图操作,变量值为刚才的JDK安装目录。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第10张图片
然后配置CLASSPATH变量,如下图所示,变量值为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第11张图片
配置完成后全点确认,保存。

Android SDK安装

Android SDK下载完成后是压缩包形式,如下图所示。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第12张图片
将解压文件夹放到无中文名和空格的目录下。
SDK目录
进入上述目录,打开SDK Manager.exe
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第13张图片
打开后需要等待一会儿会出界面,等下面进度条走完,将其他所有√全部取消,只留下这一个,点击右下角Install,等待一会儿后提示完成,关闭这个界面。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第14张图片
进入如下目录,在这个目录打开cmd命令行。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第15张图片

记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第16张图片
输入sdkmanager,查看是否与下图输出一致。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第17张图片
如果提示没有sdkmanager.bat,请将下面的代码拷贝入记事本,并改名为sdkmanager.bat。如果正常,请跳过这段。

@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  sdkmanager startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%..

@rem Add default JVM options here. You can also use JAVA_OPTS and SDKMANAGER_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*
goto execute

:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.0-dev.jar;%APP_HOME%\lib\layoutlib-api-25.3.0-dev.jar;%APP_HOME%\lib\dvlib-25.3.0-dev.jar;%APP_HOME%\lib\repository-25.3.0-dev.jar;%APP_HOME%\lib\gson-2.2.4.jar;%APP_HOME%\lib\commons-compress-1.8.1.jar;%APP_HOME%\lib\httpclient-4.1.1.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\common-25.3.0-dev.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\annotations-25.3.0-dev.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\httpcore-4.1.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-codec-1.4.jar;%APP_HOME%\lib\guava-18.0.jar

@rem Execute sdkmanager
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%  -classpath "%CLASSPATH%" com.android.sdklib.tool.SdkManagerCli %CMD_LINE_ARGS%

:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable SDKMANAGER_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if  not "" == "%SDKMANAGER_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega

完成以上操作后,就是与官网不同的部分了,官网给出的安装指令已经失效,新版安装指令如下所示。请按顺序依次输入以下指令。

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="C:\android-sdk-windows"
sdkmanager "ndk;21.3.6528147" --sdk_root="C:\android-sdk-windows"
sdkmanager "platform-tools" --sdk_root="C:\android-sdk-windows"
sdkmanager "platforms;android-30" --sdk_root="C:\android-sdk-windows"
sdkmanager "cmdline-tools;latest" --sdk_root="C:\android-sdk-windows"
sdkmanager "extras;google;usb_driver" --sdk_root="C:\android-sdk-windows"

第一次安装会询问是否同意协议,如下图所示,输入y回车即可。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第18张图片
请注意,ndk还有另外几个包都特别大,安装很慢,请耐心等待,也可以通过任务管理器查看是否有网络流量,如果有,则说明安装正常进行。

安装完成后,提示done,将上述命令全部执行并成功后,可以通过sdkmanager --list查询是否安装成功。请检查上述包是否全部安装,例如我的输出如下所示。有几个包是多余的,可以不用安装。

Installed packages:
  Path                     | Version      | Description                       | Location
  -------                  | -------      | -------                           | -------
  build-tools;30.0.2       | 30.0.2       | Android SDK Build-Tools 30.0.2    | build-tools\30.0.2\
  cmdline-tools;latest     | 7.0          | Android SDK Command-line Tools... | cmdline-tools\latest\
  extras;google;simulators | 1.0.0        | Android Auto API Simulators       | extras\google\simulators\
  extras;google;usb_driver | 13           | Google USB Driver                 | extras\google\usb_driver\
  ndk;21.3.6528147         | 21.3.6528147 | NDK (Side by side) 21.3.6528147   | ndk\21.3.6528147\
  patcher;v4               | 1            | SDK Patch Applier v4              | patcher\v4\
  platform-tools           | 33.0.2       | Android SDK Platform-Tools        | platform-tools\
  platforms;android-30     | 3            | Android SDK Platform 30           | platforms\android-30\
  tools                    | 25.2.5       | Android SDK Tools 25.2.5          | tools\

以上,就完成了两个库的安装,接下来进行QT Creator的配置。

配置QT Creator

打开QT Creator,点击菜单栏中的工具-选项,如下图所示。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第19张图片
在弹出窗口中点设备-Android,进入如下界面。
记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第20张图片
在上述界面中,将JDK location选择为刚才的JDK安装路径,Android SDK的路径选择为刚才SDK的根目录,会自动检测,这里图中与上述配置过程不一致是为了展示安装成功效果,实际请以安装时实际选择路径为准。

正常到这里已经有两个√了,JDK和SDK的部分完全正常,下面OpenSSL binaries location请选择与在SDK根目录中的一个空文件夹,例如上图所示,然后点击右侧Download OpenSSL键,会自动下载OpenSSL,下载完成后出现第三个√。

至此,Win10下QT5.15.2的安卓编译环境安装完成,可以在下图所示Kits选项卡中看到Android编译环境已正常识别。下面步骤与Win10正常开发过程一致。

请注意,第一次编译安卓应用会自动下载gradle,请确保编译过程全程联网,后续编译无需联网。

记一次艰难的摸索——Win10下配置QT5.15.2的安卓编译环境_第21张图片

你可能感兴趣的:(android,qt,android,studio)