关于abiFilters的使用「建议收藏」

关于abiFilters的使用「建议收藏」关于abi兼容的选择。abiFilters在app的使用

大家好,又见面了,我是你们的朋友全栈君。

前言

最近项目中遇到了要使用opencv的情况,涉及到了abi兼容的选择。因为如果全部都适配的话,包很大,这样兼容那些用户数极少的cpu就很不划算,所以我只适配了armeabi-v7a这一个。但是今天在x64-v8a的模拟器上看的时候,提示我的library.so文件找不到,我记得这个应该是向下兼容的,但是出现这种情况很奇怪,于是我就在网上找了找答案。

解决方法:abiFilters

在app的gradle的defaultConfig里面加上这么一句

ndk {
    abiFilters  "armeabi-v7a"  // 指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,armeabi,arm-v8之类的so会被过滤掉)
}

这句话的意思就是指定ndk需要兼容的架构,把除了v7a以外的兼容包都过滤掉,只剩下一个v7a的文件夹。用了这个方法之后,确实解决了问题。这就是解决方法。

具体分析

其实这个方法我开始是很奇怪的,我明明没有指定其他的兼容框架,为什么会需要一个过滤。我打来了apk的包,找到了里面的lib目录,发现里面有很多的兼容目录,然后看到里面目录里面的是一个fresco的.so文件。也就是说,fresco做了各个平台的兼容,所以它创建了各个兼容平台的目录。因为只要出现了这个目录,系统就只会在这个目录里找.so文件而不会遍历其他的目录,所以就出现了之前找不到.so文件的情况(因为其他目录没有我的.so文件)。

总结

为了决定最后适配的abi版本,我下载了排行前几名的app,然后打开之后发现,他们基本上只适配了一个armeabi,少数会再加上v7a。我了解到的情况是armeabi性能较差,但是兼容性最好,v7a对于浮点计算的cpu来说性能更好,不兼容不支持浮点运算的cpu。我想到的是目前的手机cpu绝大多数应该是支持浮点运算的,而且安卓从2.2开始就支持v7a,所以v7a的兼容性应该也不是问题。(不知道对不对,谁能明确一下的,恳请指正)
无论如何,abiFilters还是应该添加的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143490.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 面向对象版学员管理系统(存储数据库)

    面向对象版学员管理系统(存储数据库)数据库,面向对象

    2022年9月14日
  • 内测体验:JetBrains面向未来的Fleet编辑器是什么+究竟怎样 使用初体验+与vsc对比

    内测体验:JetBrains面向未来的Fleet编辑器是什么+究竟怎样 使用初体验+与vsc对比引言上个月,我在看到某公众号推广后,作为热衷于先进技术、常年游历于各个软件公司内测组的用户自然是早早申请了内测。因为在申请时官网的公告是“我们也不知道新一代编辑器(Fleet)什么时候可以与大家见面”,因此我也没有过多在意。令人意外的是,昨天晚上22:09,我收到了来自JetBrains的邮件。此处点名一下GitHubCopilot项目,申请完了这么久还不给个信[手动旺柴]简介如果你实在不知道什么是JetBrains,那你也应该知道PyCharm,再次也要知道AndroidStudio。

    2022年6月7日
  • php vld_phpenv使用教程

    php vld_phpenv使用教程1、查看本地是否已经安装了vld扩展,如果没有任何输出,那就准备安装吧![root@taiwu~]#/home/work/lib/php5.6.7/bin/php-m|grepvld2、去官方网站下载vld(http://pecl.php.net/package/vld),找到最新版本,右键复制地址链接就能得到下载地址,通过浏览器直接下载也行。我是通过wget命令在centos的命…

    2022年10月30日
  • IDEA2021.3.3永久激活码教程-2299年Windows版持续更新

    [SoftName]激活码最新破解教程,Mac版激活至2299年,[SoftName]激活码2021.3.3

    2022年4月11日
  • 大型活动大规模人群的识别和疏散:从公交2.0到公交3.0

    大型活动大规模人群的识别和疏散:从公交2.0到公交3.01关于数据本文中所使用到的数据包括,交通卡、交通事故、出租车轨迹、公交车运行、地铁运行、空气质量、气象监测、新浪微博等12个数据集近TB量级的数据。2关于我们我们希望通过应用交通数据以解决大型活动(如演唱会、足球比赛、跨年活动等)结束后大规模人群滞留导致的疏散困难、交通拥堵、事故隐患等一系列问题(如外滩踩踏事件)。在此基础上我们提出“公交3.0”的绿色出行概念,核心包括以下三点:…

    2022年7月16日
  • django 渲染_django开源项目

    django 渲染_django开源项目前言渲染模块的原理和解析模块是一样,drf默认的渲染有2种方式,一种是json格式,另一种是模板方式。渲染模块源码入口入口:APIView类中dispatch方法中的:self.response

    2022年8月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号