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

Ubuntu 22.04下配置Qt Creator进行Android开发的问题求助

Qt Creator配置Android开发环境问题排查

环境信息

  • 操作系统:Ubuntu 22.04(Windows 11上VirtualBox虚拟机)
  • Qt版本:5.15.3
  • Java JDK:Oracle 1.8.0 u391
  • Qt Creator:6.0.2
  • Android Studio:2023.1.1.26

场景1:使用Android Studio的SDK目录(~/Android/Sdk)

检测失败项

  • SDK管理器可运行(提示SDK Tools版本<=26.x需要严格使用Java 1.8)
  • Platform SDK已安装
  • 已安装Qt版本的必要组件

已安装的Android组件

  • SDK Platforms:
    • Android 14.0
    • Android 13.0
  • SDK Tools:
    • Android SDK Build-Tools 34
    • Android SDK Command-line Tools (latest)
    • Android Emulator
    • Android SDK Platform-Tools 34.0.5
    • Android SDK Tools (Obsolete) 26.1.1

手动运行SDK Manager报错

执行命令:

cd ~/Android/Sdk/tools/bin
./sdkmanager

错误信息:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
    at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
    at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
    at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
    at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
    at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax/xml/bind/annotation/XmlSchema
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 5 more

场景2:使用Qt Creator「Set Up SDK」创建的目录(~/AndroidQt/SDK)

问题表现

SDK管理器显示正常,但无法安装平台工具、构建工具或Platform SDK。

安装命令及报错

执行命令:

cd ~/AndroidQt/SDK/tools/bin
./sdkmanager "build-tools;30.0.2" "ndk;21.3.6528147" "platforms;android-30" "cmdline-tools;latest"

错误信息:

Warning: Could not create settings
java.lang.IllegalArgumentException
    at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
    at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
    at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
    at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
    at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)

解决方案

针对场景1的Java版本冲突问题

错误核心是运行sdkmanager时未使用Java 1.8,尽管你已安装该版本,但系统默认Java版本可能为更高版本。

  1. 检查当前Java版本:
    java -version
    
  2. 切换到JDK 1.8:
    使用Ubuntu的update-alternatives工具配置:
    sudo update-alternatives --config java
    
    在弹出的选项中选择Oracle JDK 1.8的条目。
  3. 验证切换成功后,重新运行sdkmanager,再回到Qt Creator刷新检测。

针对场景2的SDK配置问题

该错误源于Qt Creator生成的SDK目录缺少必要配置文件或权限不足:

  1. 修复目录权限:
    sudo chown -R $USER:$USER ~/AndroidQt/SDK
    
  2. 初始化SDK配置:
    先执行更新命令生成配置文件:
    cd ~/AndroidQt/SDK/tools/bin
    ./sdkmanager --update
    
  3. 若仍无法解决,建议删除该目录,改用Android Studio管理的SDK(解决场景1的问题后),Android Studio的SDK管理机制更稳定。

通用适配建议

Qt 5.15.3对Android组件有版本兼容性限制,需调整组件版本:

  • 目标平台选择Android 11 (API 30),Qt 5.15对该版本适配最佳
  • 对应安装Build-Tools 30.0.2、NDK 21.3.6528147
  • 移除冲突组件:删除Android SDK Tools (Obsolete) 26.1.1,仅保留Command-line Tools (latest)管理SDK

内容的提问来源于stack exchange,提问作者Paweł Kłeczek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:43:25