Qt5 for Android:不兼容的 ABI

Posted

技术标签:

【中文标题】Qt5 for Android:不兼容的 ABI【英文标题】:Qt5 for Android: incompatible ABI 【发布时间】:2014-03-06 23:48:55 【问题描述】:

我最近安装了 Qt5,它对 API 17 和 armeabi-v7a 的工作就像一个魅力。 但是我添加了第二个带有其他参数的 AVD(当然,我在 AVD 设置中安装了包)。现在,我无法为 API10 编译第一个项目和新项目。检查任何工具链(armeabi 或 armeabi-v7a)时,选择 AVD 的窗口显示我没有兼容的 AVD(在消息显示中显示 AVD 支持 default/armeabidefault/armeabi-v7a)。 有谁知道我该如何修复这个?我认为问题出在“default/”...

【问题讨论】:

你在这方面有什么进展吗?我在 Linux x86_64 上看到与 QtCreator 3.0.2 和 Qt 5.2.1 完全相同的症状。 【参考方案1】:

这个问题似乎有另一种解决方法:

在 QtCreator -> Projects -> BuildEnvironment 添加变量

android_TARGET_ARCH=default/armeabi-v7a

然后 AVD 显示为兼容。

【讨论】:

这其实是最好的答案 这个解决方案对我有用,但过了一段时间我发现它破坏了我的编译,我无法在 AVD 上部署任何应用程序。请阅读:kdab.com/qt-on-android-episode-2/#comment-3496【参考方案2】:

事实证明,在最新版本的 Android SDK 中,这确实是一个改变的行为,它列出了带有前缀标签信息的 AVD。因此,它返回的是 default/armeabi-v7a,而不是 armeabi-v7a,导致 QtCreator 抱怨不支持 ABI。

这是 QtCreator 错误报告:https://bugreports.qt.io/browse/QTCREATORBUG-11658

您可以在补丁进入后等待新的 QtCreator 发布(目前正在审查中),或者您可以尝试将您的 Android SDK 工具从版本 22.6 降级为仅报告 ABI: armeabi-v7a 的东西执行 android list avd 时的 Tag/ABI: default/armeabi-v7a

【讨论】:

谢谢,它证实了我的假设【参考方案3】:

花了一些时间弄清楚如何从 Android SDK Tools 22.6 降级。以下是降级方法:

    下载Android SDK Tools 22.3

    在 SDK 下将 tools-folder 重命名为 tools-22.6(例如 ~/adt-bundle-linux-x86_64-20131030/sdk/tools)

    将下载的工具解压到上述路径

【讨论】:

以上是关于Qt5 for Android:不兼容的 ABI的主要内容,如果未能解决你的问题,请参考以下文章

CMake编译遇到这种ABI不兼容问题不要慌

Swift 5.0 计划年底发布:主打 ABI 稳定性,不向前兼容

Qt创建者:创建一个兼容多个ABI的APK?

发布和调试之间的 ABI 兼容性

平台 android NDK 不支持 ABI [armeabi, mips]

No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android