Qt for Android——关于版本的选择(ABI和CPU版本)

1. 前景介绍

    之前在开发Qt for Android程序的时候,不知道如何选择套件的版本,乱选一通,经常是程序开发完,到了运行选择设备的时候告诉我设备不匹配,不支持这个ABI。下面就来讲讲这些版本。

2. Qt中套件对应的版本

    在我们安装Qt的时候,会有Android相关的选项供我们勾选,我选择了如下图所示的三个选项:

          

    从名字已经可以很直观的看到 ,每个版本对应的是哪个ABI和CPU架构。我记得当时是全选了,5.12.2版的Qt貌似只提供了这三个Android的版本。

3. 套件版本和CPU的关系

    对于这两者之间的关系,有一个向下兼容的原则。选择哪个套件来构建工程,取决于你的手机CPU的架构,比如你的安卓手机CPU的架构是ARMv7,那么它可以运行armeabi-v7a编译生成的程序,也能兼容ARMv5,但是Qt没有提供这个版本。如果CPU架构是ARMv8,那么套件可以选择arm64-v8a,也能选择armeabi-v7a。

      总而言之一个原则,构建工程的套件版本不能高于手机CPU架构的版本,它只能兼容比它低的版本。

      详细的对应关系,如下图所示 (图片来源网络,抱歉我忘记是哪篇博客了,如果侵权请联系):

      

4. 引入第三方库

    如果想要引入第三方库,并且是用Android相关套件编译生成的库,那么同样需要注意版本的问题。跟上面一样,也是向下兼容。编译库文件所选择的套件版本,不能高于引入它的工程的套件版本。

    比如我有个库文件叫libAndroid.a,我的工程要引入它,如果我的工程用的是arm64-v8a,那么编译库文件的时候套件可以选择arm64-v8a,也能选择armeabi-v7a;如果工程用的是armebi-v7a,那么编译库文件的时候套件就不能选择arm64-v8a了。

5. 总结

    以上就是在选择构建套件版本的选择问题,不是太深,但是作为C++人员来说,进行Qt for Android的开发应当是够用了。如果有存在问题的地方请不吝赐教,感谢!

发布了16 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zhounixing/article/details/89886636