QTAndroid编译环境配置
开始 QT 官网的安装教程安装,经过测试有部分小错误。以下是结合教程和网上搜集的一些材料最后安装成功的步骤。
SDK和JDKhttp://链接: https://pan.baidu.com/s/13CImHLAoUFAdecF2BVsBlQ?pwd=627g 提取码: 627ghttp://链接: https://pan.baidu.com/s/13CImHLAoUFAdecF2BVsBlQ?pwd=627g 提取码: 627g
安装准备
首先下载 JDK
JDK 下载https://www.oracle.com/java/technologies/downloads/
这里不要下载 JDK20 和 JDK17,需要下载 JDK 8
这里不要下载 JDK20 和 JDK17,需要下载 JDK 8
将页面往下滑,到下图所示的位置,下载 Java8,点击 Windows,下载安装包。
Android SDK 下载https://www.androiddevtools.cn/
这里不要下载 android studio,直接下载 SDK 即可,请注意 SDK 下载在页面的下方,使劲往下滑。
页面划到下图所示位置,下载相对应的 SDK。
还有 NDK,经过测试,NDK 可以在后续步骤中的 SDK 自动下载,不需要手动下载,而且手动下载容易搞错版本号。
到这里安装准备结束,下面进入安装环节。
安装过程
JDK 安装
JDK 下载完成后是安装包的形式,如下图
打开之后,点击下一步
点击更改可以修改安装位置,上面的功能选项不要修改,完成后点击下一步,
等待,过一会儿会出现JRE的安装界面,
看到下图界面后,可以更改安装目录,建议改到和JDK同一根目录下,点击下一步,
安装完成后,需要配置系统环境变量。
首先配置 JAVA_HOME 变量,按如下图操作,变量值为刚才安装 JDK 安装目录。
然后配置 CLASSPATH 变量,如下图,变量值为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。
配置完成后全点确认,保存。
Android SDK 安装
Android SDK 下载完成后是压缩包形式,如下图所示。
解压文件放在空目录下
进入此目录,打开SDK Manager.exe。
打开后需要等待一会儿会出界面,等下面进度条走完,将其他所有√全部取消,只留下这一个,点击右下角Install,等待一会儿后提示完成,关闭这个界面。
安装这两个,然后关闭界面。
进入如下目录,打开 cmd 命令行。
输入sdkmanager,查看是否与下图输出一致。
如果提示没有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>
这里,将其中的<ANDROID_SDK_ROOT>需要改成实际安装路径,比如我使用的是以下命令。
sdkmanager "build-tools;30.0.2" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "ndk;21.3.6528147" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "platform-tools" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "platforms;android-30" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "cmdline-tools;latest" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "extras;google;usb_driver" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
安装过程中会询问是否同意,输入 y 即可。
以上,完成后就可以配置 QT creator 了。
配置 QT Creator
打开QT Creator,点击菜单栏中的工具-选项,如下图所示。
在上述界面中,将JDK location选择为刚才的JDK安装路径,Android SDK的路径选择为刚才SDK的根目录,会自动检测,这里图中与上述配置过程不一致是为了展示安装成功效果,实际请以安装时实际选择路径为准。
正常到这里已经有两个√了,JDK和SDK的部分完全正常,下面OpenSSL binaries location请选择与在SDK根目录中的一个空文件夹,例如上图所示,然后点击右侧Download OpenSSL键,会自动下载OpenSSL,下载完成后出现第三个√。
至此,Win11 下QT5.15.2的安卓编译环境安装完成,可以在下图所示Kits选项卡中看到Android编译环境已正常识别。
2023 6/19 更新
安装完编译环境之后,如果没有设备需要在电脑上安装虚拟机,安装完虚拟机后需要配置,这里也有很多问题,在这里记录一下,避免以后踩坑
首先,如果没有安卓设备,我们需要在电脑上安装虚拟机,这里我们选择夜神模拟器
安装完成后,还需要进行一些设定,否则 qtcreator 无法正确链接到设备(老版本 qtcreator 是可以自动连接,但更新到 10.0.2 之后的版本,需要手动连接)
1、“夜神”的设置
夜神模拟器链接不了adb的缘由主要是adb的版本与夜神模拟器adb版本不一致形成的,具体的解决办法请看下面的操做步骤
方法/步骤
1、 使用快捷键win + R打开运行窗口,输入cmd,这里主要是为了让 qt 的 adb 和夜神模拟器的 adb 版本一致
2、 启动了cmd命令窗口工
3、 输入nox_adb version 命令,查看模拟器的adb版本,如果发现模拟器的版本是1.0.36与android-sdk的adb版本不一致3d
4、 进入模拟器的安装目录下,修改nox_adb.exe的名字为nox_adb.exe.bak
把android-sdk的adb.exe文件复制到桌面一份,修改adb.exe的名称为nox_adb.exe,再把桌面修改完名称的nox_adb.exe复制到模拟器的Nox\bin目录下
2、连接到127.0.0.1
这一步非常关键
输入:cd D:\Program Files\Nox\bin
nox_adb.exe connect 127.0.0.1:62001
而后adb devices就有了。
1、cmd 中输入
nox_adb.exe connect 127.0.0.1:62001
2、 在cmd中输入 adb devices,能够发现模拟器设备了,已经链接上了,大功告成
以上全部配置完,打开 qtcreator 就可以连接上模拟器了,但是依旧还有问题
在编译第一个项目的时候,报出不支持套件的错误。
这是由于,android 设备 qt 套件 sdk 版本迭代都非常快。需要一致。
在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。
最后将套件设置为 armeabi-v7a,得以解决。
但是解决了以上问题依旧无法编译安装,因为需要设置 android sdk 版本。
需要在这里设置一下
但是设置完了依旧无法解决。
因为我们正常是没有签名密钥的,没有密钥签名只能打出debug的包,签名后才能发布release包。