无法为arm64-v8a构建lib的Qt应用程序,显示libc ++。so.16找不到错误

时间:2018-12-28 13:08:34

标签: android qt

当我尝试为arm64-v8a设备构建Android版Qt应用时,它向我显示 :-1: error: no such file or directory: '/Users/semyontikhonenko/Library/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++.so.16' 当我尝试其他平台时,它会成功构建。 我尝试了https://wiki.qt.io/Qt_for_Android_known_issues的工作场所 但这没有帮助。这是我的方法: enter image description here

1 个答案:

答案 0 :(得分:1)

即使env var设置为21,它也会继续搜索libc++.so.16。即使您复制并重命名文件以使其可以匹配,也只会导致其他错误。

它尝试查找的版本似乎并不与该环境变量相关,而是与项目的最低API要求设置相关。

对于我来说,如果将env var设置为android-28,然后将项目所需的最低SDK设置为API 21,则可以使用。如果没有,请生成清单模板,然后编辑该设置,它应该可以使用。

更低的最低API似乎不适用于v8a。这是有道理的,因为64位android是在版本5中引入的,即API21。这也意味着您不会失去潜在的目标,因为旧版本仍然不支持64位二进制文​​件。

因此,如果要在Qt最低要求和API 21之间定位7-8%的市场份额,则必须使用v7a二进制文件。 v8与v7 tho向后兼容,因此您甚至可以在新的android版本上使用v7a二进制文件。 Google将于2019年8月开始强制执行64位二进制文​​件,因此暂时而言,使用v8a并没有多大意义,除非您的应用程序可以处理4多个以上的内存,这大约是平均总数的两倍今年售出的手机ram。您可以摆脱一个可以在所有设备上运行的二进制文件的问题,对于v8a而言并非如此,即使Android版本为5或更高版本,v8a也无法在32位SOC上运行。