Qt Creator编译Android项目:features.h缺失及Gradle/AIDL错误求助
Qt 5.12.10 Android编译问题一站式解决
一、先搞定'features.h'找不到的致命错误
Qt 5.12.10对NDK版本兼容性要求严格,高版本NDK(21+)已移除features.h这类旧系统头文件,官方标配是NDK r19c,别再试21到25版本了:
- 下载NDK r19c(完全支持arm64-v8a架构)
- 打开Qt Creator的
工具->选项->设备->Android,将NDK路径设置为r19c的安装目录 - JDK保持1.8.0_341即可,Qt 5.12仅支持JDK 8,无需更换
二、修复Gradle的androidCompileSdkVersion未定义问题
这是Qt自动生成的build.gradle与Gradle版本不匹配导致的,直接修改配置:
- 打开项目根目录的
build.gradle,调整buildscript依赖:buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.4' // 该版本完美适配NDK r19c } } - 在
android块中硬编码版本号,替换自动生成的变量:android { compileSdkVersion 29 // 与Qt 5.12.10兼容的SDK版本,不要用过高版本 buildToolsVersion "29.0.3" defaultConfig { minSdkVersion 21 targetSdkVersion 29 ndk { abiFilters 'arm64-v8a' } } } - 删除
build.gradle中所有androidCompileSdkVersion这类未定义变量的引用,直接写死合法版本号
三、解决AIDL编译失败问题
问题通常出在AIDL语法错误或工具链不兼容:
- 检查所有
.aidl文件,确保包名、接口定义符合Android AIDL规范(比如无语法错误、类型匹配) - 在
build.gradle的android块中添加配置,明确NDK版本和AIDL路径:android { sourceSets { main { aidl.srcDirs = ['src/main/aidl'] } } ndkVersion "19.2.5345600" // NDK r19c的具体版本号,直接复制即可 } - 清理缓存后重新编译:Qt Creator中执行
构建->清理项目,删除项目根目录的.gradle、build文件夹,再重新构建
最后核对配置一致性
- Qt Creator的Android配置中,SDK版本选择29,与
build.gradle中的compileSdkVersion保持一致 - 打开
AndroidManifest.xml,确保版本定义与build.gradle匹配:<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29"/>
内容的提问来源于stack exchange,提问作者Fabio Paolini
相关产品推荐
相关产品推荐

