首页 > 编程知识 正文

so用法总结,such用法总结

时间:2023-05-03 05:54:49 阅读:48486 作者:112

前言日常开发中经常使用第三个库。 基本的语音、视频等需要添加so库。

so库的体积一般非常大,不知道随便添加会导致apk的体积急剧增加。

本文只做一个简单的学习总结。 强烈建议您阅读文章:

为什么大型制造商的APP,如微信、支付宝(Alipay )等只适合armeabi-v7a/armeabi?

CPU体系结构的Android目前支持七种类型的应用程序二进制接口(abis ) :

mips、mips64、X86、x8664、ARM64-v8a、ARMeabi、ARMeabi-v7a CPU体系结构是ARM64-v8a第8代arm,64位的当前主流版本与arm兼容的so库的1%以下的mips64/mipsNDK r17很少用于移动电话,x86_64/X86 :可以忽略体系结构的移动电话包括英特尔提供的称为Hootel的移动电话

怎么选择? 看看大型制造商的APP如何选择so库:

Appcpu微信arm64-v8a支付宝(Alipay ) armeabiQQarmeabi手机淘宝armeabi-v7a有趣的是,这四种APP都只适应一种Cpu架构。

上面的这些APP只支持一种CPU体系结构。 例如,仅支持armeabi-v7a。 如果arm64-v8a等其他体系结构的手机上有APP,会崩溃吗?

答案是否定的。 由于armeabi-v7a和arm64-v8a向后兼容,因此仅支持armeabi的APP在armeabi、x86、x86_64、armewabi-v7a和arm64-v8中仅支持armeabi-v7a 我明白。

匹配方案综合上述市场占有和大型工厂的匹配方案来看,只要适合arm体系结构即可。 即,armeabi、armewabi-v7a、arm64-v8这三种选择。

1 .仅适用于方案armeabi的好处:基本上适用于所有CPU架构。 缺点(不包括已废除的mips和mips_64 ) :低性能等同于大多数移动电话需要辅助ABI或动态转码来兼容。 方案2 )与仅适用于方案armeabi-v7a相同的方案,但仅筛掉了一部分旧的,在性能和兼容性之间取得平衡3 .方案:仅适合于arm64-v8的优点:性能放弃部分旧设备用户的Google Play,从2019年8月开始,将APP与arm64-v8a匹配,并逐渐淘汰32位armeabi-v7a

因此,全面符合arm64-v8是迟早的事,因此建议在新项目中尽早符合arm64-v8。

我们要不放弃旧设备用户,也要保证性能,只能牺牲apk的体积。

ndk { abiFilters 'armeabi ',' arm64-v8a' }可以使用abiFilters指定app命中哪个Cpu体系结构的so库。 如果不指定,将被忽略。

注意事项是,ABI负载So向后兼容。 但是,如果您的APP同时存在两种体系结构,如:'armeabi '和' arm64-v8a '。 不同Cpu体系结构的手机只需加载相应的SO库,就不再向后兼容。 例如,a.so存在于armeabi中,而不存在于arm64-v8a中。 那么,arm64-v8a手机加载a.so库时会崩溃。 因此,必须同时将每个So库添加到每个架构中。 armeabi-v7a和armeabi都适用于32位CPU体系结构,因此理论上对于他们的So库是完全相同的。 也就是说,如果项目仅支持armeabi体系结构,但第三方框架仅提供armeabi-v7a库,则可以直接使用它。 但是,arm64-v8a为64位,因此无法通用。 一些无人维护的第三方库可能年久失修,没有arm64-v8a体系结构的So库。 此时,考虑是否符合arm64-v8a体系结构,或者是否使用其他库来代替。 后记性能兼容性是否兼容? 除了适合所有的CPU体系结构之外,还不能兼顾性能和兼容性吗? 其实谷歌早就想好了。

您可以轻松实现avisplet、分包和实现,并在gradle中添加以下配置:

安卓{ . splits {//configuresmultipleapksbasedonabi.ABI {//enablesbuildingmultipleapksperabi.enable true/by defi souse reset (andincludetospecifythatweonly//wantapksforx 86 andx 86 _ 64.//resetsthelistofabisthadleshouldcreateapksfforx specifiesalistofabisthatgradleshouldcreateapksfor.include ' x86 '、' x86_64 '、' arm64-v8a '、' armeabi ', ' arme ABI-v7a '//specifiesthatwedonotwanttoalsogenerateauniversalapkthatincludesallabis.universalapkfalse }是各自的CPU

这样,在确保性能的同时,xbdhs可以完美兼容,而无需添加APK的大小。 因为可以在所有体系结构中单独创建包,所以一举获得了很多好处。

Google Play支持在多个不同平台上上传APK,并且可以根据CPU体系结构下载不同的软件包。

但是,很遗憾,国内的APP应用商店目前不支持! 所以请看23333

见3https://MP.weixin.QQ.com/s/jnzpgarfqt5ul K9 thwmagg

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。