Qt 配置 Android 开发环境学习笔记
一、环境准备核心组件
1. 基础工具链
我的工具版本如下:
qt 安卓环境配置
链接: https://pan.baidu.com/s/1098ZmQyGPHo2F38qu1wWyQ?pwd=sh2h 提取码: sh2h
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| Qt SDK | Qt 5.9.4(稳定兼容旧版NDK) | 需勾选「Android armv7 组件」(Qt 5.9+ 自带 Android 构建工具链) |
| JDK | JDK 1.8.x(如1.8.0_144) | Android 开发强制依赖,Qt 5.9+ 不支持 JDK 9+ |
| Android SDK | API 16~24(重点安装API 24) | 需包含「SDK Platform」(对应 API 版本)和「SDK Build-Tools 24.0.3」 |
| Android NDK | NDK r10e | 与 Qt 5.9.4 完美兼容,支持 API 16~24,高版本 NDK(r15+)会兼容性报错 |

在android studio的sdk管理器中安装 sdk ndk 直接解压即可 ,jdk直接下载安装包安装即可。


2. 组件下载与安装注意事项
- Qt SDK:从 Qt 官网下载离线安装包,安装时务必勾选「Android for armeabi-v7a (GCC 4.9)」组件。
- JDK :安装路径避免中文和空格(推荐默认路径
C:\Program Files\Java\jdk1.8.0_xxx),需配置系统环境变量JAVA_HOME指向 JDK 根目录。 - Android SDK/NDK :
- SDK 安装路径建议非系统盘(如
D:\Android\sdk),避免权限问题; - NDK 解压后路径需记录(如
D:\BaiduNetdiskDownload\android-ndk-r10e),后续在 Qt 中配置。
- SDK 安装路径建议非系统盘(如
二、Qt 环境配置步骤
1. 配置 Android 相关路径
-
打开 Qt Creator → 工具 → 选项 → 设备 → Android;
-
分别配置以下路径(需与实际安装路径一致):
- JDK 位置:指向 JDK 根目录(如
C:\Program Files\Java\jdk1.8.0_144); - Android SDK 位置:指向 SDK 根目录(如
D:\Android\sdk); - Android NDK 位置:指向 NDK 根目录(如
D:\BaiduNetdiskDownload\android-ndk-r10e);
- JDK 位置:指向 JDK 根目录(如
-
点击「应用」,Qt 会自动检测组件完整性,无报错则路径配置成功。
2. 创建/配置 Android 构建套件(Kit)
- 进入「选项 → 设备 → 构建套件(Kit)」;
- 找到「Android for armeabi-v7a (GCC 4.9, Qt 5.9.4 for Android armv7)」,检查以下配置:
- 编译器:C/C++ 编译器选择 NDK 自带的
arm-linux-androideabi-g++; - Qt 版本:选择 Qt 5.9.4 (android_armv7);
- 设备类型:Android;
- 编译器:C/C++ 编译器选择 NDK 自带的
- 若未自动生成 Kit,点击「添加」手动创建,确保上述参数配置正确。
3. 项目级 Android 配置
- 打开 Qt 项目(如本文的 HuaRongDao),右键项目 → 属性 → Build & Run;
- 选择上述配置好的 Android Kit;
- 切换到「Android」选项卡,配置关键参数:
- Android Build Platform:选择
android-24(与 SDK API 24、NDK r10e 兼容); - 应用程序名称、包名(Application ID):包名需唯一(如
com.example.huarongdao); - 最小 SDK 版本:设置为 16(与 NDK
__ANDROID_API__=16匹配)。
- Android Build Platform:选择
三、关键问题与解决方案(避坑重点)
1. Gradle 依赖下载失败(核心坑)
问题现象:
构建时提示「Could not find com.android.tools.build:gradle:2.2.3」,因 JCenter 仓库关闭导致旧版 Gradle 插件无法下载。
解决方案:
修改 Qt 生成的 build.gradle 文件(路径:build-xxx-android-debug/android-build/build.gradle),替换为阿里云镜像仓库:
groovy
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
}
}
2. Build Tools 版本不兼容
问题现象:
提示「Invalid revision: 30.0.0-preview」或「buildToolsVersion is not specified」。
解决方案:
-
在
build.gradle的android节点中显式指定兼容版本:groovyandroid { compileSdkVersion 24 buildToolsVersion "24.0.3" // 必须安装对应版本 defaultConfig { minSdkVersion 16 targetSdkVersion 24 } } -
打开 SDK Manager,安装「Android SDK Build-Tools 24.0.3」(需勾选「Show Package Details」显示历史版本)。
3. 权限问题(SDK 目录拒绝访问)
问题现象:
SDK Manager 下载组件时提示「拒绝访问」,因 SDK 安装在系统盘(如 C:\Program Files (x86)\Android\android-sdk)。
解决方案:
- 临时方案:以管理员身份运行 SDK Manager;
- 永久方案:修改 SDK 目录权限(右键目录 → 属性 → 安全 → 给当前用户「完全控制」权限);
- 彻底方案:将 SDK 迁移到非系统盘(如
D:\Android\sdk),重新在 Qt 中配置路径。
4. 许可协议未接受
问题现象:
提示「You have not accepted the license agreements of the following SDK components: [Android SDK Platform 24]」。
解决方案:
- 图形化方式:管理员身份打开 SDK Manager,勾选对应 API 版本,接受许可协议;
- 命令行方式:进入
SDK\tools\bin目录,执行sdkmanager.bat --licenses,按y确认所有协议。
四、构建与验证流程
-
清理项目:右键项目 → 清理(清除旧构建文件);
-
重新构建:Ctrl+Shift+B 执行构建,Qt 会自动完成:
- qmake 生成 Makefile;
- NDK 编译 C++ 代码生成
.so库; - Gradle 打包 APK(依赖配置的 SDK/NDK 组件);
-
验证结果:构建成功后,APK 文件位于:
build-xxx-android-debug/android-build/build/outputs/apk/debug/android-build-debug.apk -
测试 APK:通过 Qt Creator 连接 Android 设备(开启 USB 调试),点击「运行」即可安装测试。

五、总结与注意事项
- 版本匹配是核心:Qt 5.9.4 + JDK 1.8 + NDK r10e + SDK API 24 是稳定组合,高版本组件易出现兼容性问题;
- 路径无中文/空格:所有工具(Qt、JDK、SDK、NDK)安装路径避免中文和空格,否则会导致构建失败;
- 优先解决核心错误:构建报错时,优先查看日志中「FAILURE」部分的核心错误(如依赖、权限、协议),再逐步排查;
- 缓存清理 :遇到依赖下载异常时,可删除
C:\Users\用户名\.gradle\caches目录,重新构建。
和空格,否则会导致构建失败;
-
优先解决核心错误 :构建报错时,优先查看日志中「FAILURE」部分的核心错误(如依赖、权限、协议),再逐步排查;
-
缓存清理 :遇到依赖下载异常时,可删除
C:\Users\用户名\.gradle\caches目录,重新构建。
通过以上步骤,可成功配置 Qt 5.9.4 的 Android 开发环境,实现 C++ 项目的 Android 打包与测试。