1.安装准备
需要准备如下文件
Qt 版本:qt-opensource-windows-x86-5.9.9.exe
JDK 版本:jdk-8u271-windows-x64.exe
SDK 版本:installer_r24.4.1-windows.exe
NDK 版本:android-ndk-r13b-windows-x86_64.zip
GRADLE版本:gradle-3.4-bin.zip
1.1 下载地址
> QT5.9.9下载:
注:该链接中国区域IP不可访问(提示:Download from your IP address is not allowed),所以需要T子才能访问
官网下载:https://download.qt.io/new_archive/qt/5.9/5.9.9/
> JDK下载:
官网下载:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
其他下载:http://file.yiyuen.com/file/download/46191
> SDK下载:
官网下载:https://www.androiddevtools.cn/
> NDK下载:
官网下载:https://developer.android.google.cn/ndk/downloads/
> GRADLE下载
官网下载:https://gradle.org/releases/
1.2 安装前准备
彻底卸载现有QT软件(若没有安装则跳过此步骤)
利用自带的卸载程序卸载后,手动删除如下目录:
C:用户/(你的用户)/AppData/Local/目录下所有与Qt相关内容
C:用户/(你的用户)/AppData/Local/Temp/所有与Qt相关内容
C:用户/(你的用户)/AppData/Roaming/所有与Qt相关内容
2.安装过程
2.1 JDK安装
2.1.1 安装
双击安装包,点击更改,选择你的安装路径,然后下一步等待安装
2.1.2 环境变量配置
配置系统环境变量:
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.8.0_271
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
注意%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar前面还有一个.;
在Path变量名中添加
变量值:C:\Program Files\Java\jdk1.8.0_271\bin
这里是我的安装目录。
打开cmd控制台输入JAVA -version 如果出现以下内容就证明环境配置成功
2.2 SDK配置
2.2.1 安装
找到刚才下载的installer_r24.4.1-windows.exe 双击安装,路径自己选择(最好C盘),安装完成后运行。
2.2.2 环境变量配置
在系统变量中增加一个ANDROID_SDK_HOME变量,属性值为android sdk安装目录
然后再在path变量后添加以下路径
在命令行输入 adb version 测试是否配置成功 配置成功如下图
2.2.3 adb 错误解决
如果遇到adb version显示adb不是内部或外部命令错误,可以查看下述路径中有没有platform-tools
C:\Program Files (x86)\Android\android-sdk\platform-tools
如果没有的话,需要手动打开SDK Manager.exe进行安装
环境变量Path添加
2.2.4 其他SDK安装
去安装目录项运行SDK Manager.exe,根据你想要的安卓版本去安装所需要的相关工具包,可以参照下图
注意:如果打开没有显示可安装的工具则需要添加国内的软件源
Tools–>option,在下面的两栏输入以下内容 网址: mirrors.neusoft.edu.cn 端口:80,点击close
然后点击Package–>Reload就会更新安卓的构建工具了
2.2.5 AVD虚拟机配置
使用AVD Manager.exe创建
2.3 NDK配置
直接把下载的压缩包解压到你想放置的目录即可,在QT配置安卓设备的时候用到。
注意:目录中不能有空格和中文
2.4 QT 5.9.9安装配置
2.4.1 QT安装
安装时勾选Android开头的所有部件
若非首次安装,一定要彻底卸载QT,删除QT的配置文件,否则安装后会找不到Android部件!
2.4.2 配置安卓环境
打开Qtcreator, 点击工具选项,JDK自己检测到了,只需要将SDK和NDK的路径添加进去,然后SDK manager会显示你下载的SDK工具,点击确定,环境就基本配置完成了
下方会自动识别创建的AVD虚拟机
kit环境也是自动识别的
3.QT工程配置
3.1 开始前准备
由于安装在C盘,工程可能会读写C盘分区,所以,QT的安卓开发工程必须使用管理员模式打开!否则报错。
3.2 工程配置
新建工程,注意界面的比例
配置安卓APK构建路径
配置gradle路径为自定义路径,否则会出现Qt for android gradle 下载失败错误
注意!!!每个程序都要单独配置一个gradle绝对路径,如果两个程序同时配置同一个gradle则可能会报错!!
3.3 编译调试
由于AVD主机一直黑屏暂未解决,所以连接真实手机进行测试,手机使用三星S8,打开手机USB调试,电脑必须有网络,编译时可能会下载某些源文件。
在手机上查看调试结果
可能会提示证书之类的错误,不用理会
程序可以正常打开执行
4 常见错误
4.1 C99错误问题
编译代码时,出现如下错误:
error: 'for' loop initial declarations are only allowed in C99 mode
note: use option -std=c99 or -std=gnu99 to compile your code
可以 在*.pro 文件中启用C99编程模式:
QMAKE_CFLAGS += -std=c99
4.2 AVD Kernel File丢失问题
错误现象:
emulator: ERROR: This AVD's configuration is missing a kernel file! Please ensure the file "kernel-qemu" is in the same location as your system image.
emulator: ERROR: ANDROID_SDK_ROOT is undefined
可以全局搜索:"kernel-qemu"或者转到安卓SDK路径:
C:\Program Files (x86)\Android\android-sdk\system-images\android-29\
4.3 AVD模拟器 HAXM错误
错误现象;
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure Intel HAXM is properly installed and usable.
CPU acceleration status: HAX kernel module is not installed!
这个是需要打开硬件加速:
(1)Bios修改
- BIOS-Virtualization-Inter® Virtualization Technology 设成Enabled BIOS
- No Execute (NX) Memory Protection 设成Enabled
(2)intelhaxm-android.exe安装
打开Android SDK目录,找到intelhaxm-android.exe双击安装即可
(3)在Windows功能中禁用了Hyper-V
控制面板-程序-启用火关闭windown功能,去掉Hyper-V的选项打钩,并把windows虚拟化监控平台打钩
(4)在管理员powershell中,执行如下命令,彻底禁用Hyper
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
此处也提供另一种方式,但未验证:
#Windows 10 下彻底关闭 Hyper-V 服务
#禁用Hyper-V 服务
bcdedit /set hypervisorlaunchtype off
#取消禁用
bcdedit /set hypervisorlaunchtype auto
4.4 AVD模拟器黑屏
暂未解决,遂用三星S8物理真机进行模拟调试。等解决后再更新。
4.5 编译时的权限错误
错误现象:
Could not initialize analytics, treating as opt-out.
java.io.FileNotFoundException: C:\Program Files (x86)\Android\android-sdk\analytics.settings (鎷掔粷璁块棶銆
已管理员模式打开工程重新编译即可
5.参考文献
https://blog.csdn.net/weixin_43763292/article/details/115257578
https://blog.csdn.net/weixin_39457767/article/details/130532656
https://blog.csdn.net/linux_wgl/article/details/43673485
https://blog.csdn.net/m0_56741902/article/details/135732707
https://blog.csdn.net/calmreason/article/details/104088573
https://blog.csdn.net/myme95/article/details/131982395
https://blog.csdn.net/qq_42145057/article/details/109432710
https://blog.csdn.net/WGH100817/article/details/101721594
https://blog.csdn.net/qq_21187515/article/details/103056299
https://blog.csdn.net/qq_41622002/article/details/134118913
https://blog.csdn.net/qq_44695727/article/details/117422245
https://blog.csdn.net/qq_37603131/article/details/115651154
https://www.cnblogs.com/navysummer/p/14166514.html
https://cloud.tencent.com/developer/ask/sof/111829622
https://ask.csdn.net/questions/152093