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版本可能为更高版本。
- 检查当前Java版本:
java -version - 切换到JDK 1.8:
使用Ubuntu的update-alternatives工具配置:
在弹出的选项中选择Oracle JDK 1.8的条目。sudo update-alternatives --config java - 验证切换成功后,重新运行
sdkmanager,再回到Qt Creator刷新检测。
针对场景2的SDK配置问题
该错误源于Qt Creator生成的SDK目录缺少必要配置文件或权限不足:
- 修复目录权限:
sudo chown -R $USER:$USER ~/AndroidQt/SDK - 初始化SDK配置:
先执行更新命令生成配置文件:cd ~/AndroidQt/SDK/tools/bin ./sdkmanager --update - 若仍无法解决,建议删除该目录,改用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
相关产品推荐
相关产品推荐

