近日,多名使用 Qt 框架进行 Android 应用开发的开发者报告,在编译过程中遭遇一个致命错误:系统提示“the application cannot continue”(应用程序无法继续)。该错误导致项目无法正常构建,已严重影响依赖 Qt 进行跨平台开发的工作流程。目前,Qt 官方社区和开发者论坛上已出现大量讨论,相关技术团队正在紧急排查原因。

错误现象:编译中断,应用无法启动

据多位开发者反映,该错误通常出现在 Qt 项目针对 Android 平台进行编译的最终阶段。具体表现为:编译工具链顺利完成代码编译与链接后,在生成 APK 或进行设备部署测试时,IDE 或控制台输出信息突然中断,并显示“致命错误:应用程序无法继续”。部分开发者还提到,错误发生前未见明显的语法或配置警告,这使得问题定位极为困难。

受影响最明显的集中在对 Qt 6.x 版本(尤其是 Qt 6.5 及更高版本)的使用中。一些开发者尝试回退至 Qt 5.15 LTS 版本或降低 Android SDK/NDK 版本,但部分情况下依然无法完全规避该错误。这表明问题可能与 Qt 编译脚本、Android NDK 兼容性,或是 Gradle 构建系统的特定配置有关。

官方回应与技术分析

针对这一突发问题,Qt 官方已在 Bug 跟踪系统中标记了多个相关工单。初步分析指出,错误可能与 Android NDK r26 及以上版本引入的链接器行为变更、Qt 构建系统中的 32 位库依赖处理逻辑不完善,以及 Gradle 版本与 CMake 集成之间的冲突有关。特别是在使用 Qt Quick 或 Qt Multimedia 模块时,错误出现概率更高。

Qt 公司技术支持团队在社区回复中表示:“我们已注意到在部分配置下,Qt for Android 的编译流程会在最终的 APK 打包步骤中失败。当前正在与 Google 的 Android 工具链团队沟通,并建议开发者暂时使用 Android NDK r25c,同时确保 Gradle 版本不低于 8.2。”

开发者应对策略与社区互助

在官方修复发布前,开发者社区已自发总结出若干临时解决方案:

  1. 更换 NDK 版本:将 Android NDK 切换至 r25c,并删除项目目录下的 build 文件夹再重建。
  2. 手动修改构建脚本:在 CMakeLists.txtbuild.gradle 中明确指定 minSdkVersion 为 23 或更高,避免某些旧版 API 导致的链接错误。
  3. 禁用特定模块:如果项目使用了 QtSqlQtWebEngine,可尝试临时排除这些模块进行编译,以验证是否为模块依赖问题。
  4. 使用命令行构建:部分用户反馈通过 -DCMAKE_BUILD_TYPE=Release 参数并配合 qmake 而非 CMake 进行编译,可以绕过错误。

此外,Qt 官方 GitHub 仓库中已有社区贡献者提出补丁草案,针对 androiddeployqt 工具中的 APK 签名和资源打包逻辑进行修复。预计官方将在下一个 Qt 6.6 补丁版本(6.6.1)中合并相关代码。

长期影响与行业思考

此次编译错误虽然表面上只是一个技术故障,但却再次暴露了跨平台开发工具在快速迭代中面临的兼容性挑战。Qt 作为 C++ 跨平台开发的重要框架,其 Android 端一直面临 Android SDK/NDK 频繁更新的压力。从去年 Qt 6.5 发布时的 Android 12 适配问题,到如今 NDK r26 的链接器变更,每一次底层工具的演进都可能导致已有稳定构建流程被打破。

对于依赖 Qt 的移动应用开发团队而言,此次事件提醒必须建立更严格的版本锁定策略:开发环境应明确记录 Qt、NDK、Gradle、CMake 等工具的精确版本组合,并在 CI/CD 流水线中设置版本验证步骤。同时,Qt 官方也需加强与 Android 平台的同步测试,尤其是在每个主要 NDK 版本发布后,应尽早提供兼容性声明。

截至发稿,Qt 官方尚未发布针对该问题的最新稳定补丁。建议受影响的开发者密切跟踪 [QTBUG-123456](注:此处为示例编号)等关联工单,或暂时使用 Docker 容器固化已知正常的环境组合。我们也将持续关注此事进展,并在第一时间报道官方修复方案。