You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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版本不匹配导致的,直接修改配置:

  1. 打开项目根目录的build.gradle,调整buildscript依赖:
    buildscript {
        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.5.4' // 该版本完美适配NDK r19c
        }
    }
    
  2. 在android块中硬编码版本号,替换自动生成的变量:
    android {
        compileSdkVersion 29 // 与Qt 5.12.10兼容的SDK版本,不要用过高版本
        buildToolsVersion "29.0.3"
        defaultConfig {
            minSdkVersion 21
            targetSdkVersion 29
            ndk {
                abiFilters 'arm64-v8a'
            }
        }
    }
    
  3. 删除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:45:47