高工做CPU架构适配的心得体会
源码共读
共 1451字,需浏览 3分钟
· 2020-03-08
作者丨手艺人来源丨IT烂笔头
有 哪 些 CPU 架 构
我们在日常开发中接触比较多的就两类:X86、arm
如上图所示,armabi的库可以运行在x86、x86-64以及armabi-v7a和armabi-v8a的CPU架构上,从下往上的方向上,下方架构的so库可以兼容的运行在更上方的CPU架构中,只是可能会出现性能问题。比如PC端跑模拟器的时候,就比较卡顿。
当我们在我们项目中的libs中新建不同的CPU架构的目录文件时一定要注意一点就是在同一架构目录中一定要提供全部的so库。这是因为加载so的策略所决定的,假设你当前在arm64-v8a的机器上,然后你需要加载两个so库:liba.so、libb.so。
那么显然会优先去寻找与其CPU架构匹配的目录下寻找so包,如图:
那如果我们将该arm64-v8a下面的libb.so删除掉会怎么样呢?
其实这时候会出问题的,因为只是删除了一个文件,而arm64i-v8a的文件目录还存在,当需要加载libb.so时,还是会去arm64-v8a目录下去寻找,显然是找不到的。但如果我们将整个目录删除了,反而能正常:没错,只有在arm64-v8a目录不存在的时候才会去兼容包里加载。到这里作为初级工程师一般都会了解。
2
SO 混 用
一般情况下,我们不太可能完完全全提供所有CPU架构的so库的,那样会让你的APK大小变的很恐怖。所以,我们一般会提供一套兼容的比如只使用armabi(兼容性最好)的so。但是如果都是只使用armabi的必然会引起许多的性能问题,针对这一点呢,有人就采用混用的方式(包括微信),如下图所示:
例如你使用v7a架构的手机,对一些性能要求比较高的so,可以将其对应的v7a的so包放到armabi目录中,在代码中根据判断当前手机的cpu架构来选择加载更适合的so库,但是前提是cpu位数要相同,你不能将arm64-v8a(64位)的so放到armabi(32位)中。为什么?因为如果我们的机器是64位的,我们将64位的so混在armabi(32位)中,当机器检测到只有armabi的目录,会以32位的模式去加载so。
到这里作为一名中级工程师是都需要了解的。
3
优 化
因为添加so库,必然会造成apk包体的增大,所以在一些非启动就必须加载的so库,完全可以去动态加载,在使用的时候再去加载它。
对于必须要加载的我们可以考虑如何去减小so的体积,当然我们可以从下面几个方面去优化它:
1、隐藏所有的符号,只公开必要的:-fvisibility=hidden
2、禁用 C++ Exception 和 RTTI: -fno-exception -fno-rtti
3、不使用iostream,使用Android Log
4、使用 gc-sections去除无用代码
除了上面所讲的,还可以从另外的手段去做优化,比如构建时分包,根据CPU的架构打不同的包,目前很多商店是支持按CPU架构分发安装包的。
另外,如果你是一名SDK开发者,这里有几点注意值得你关注一下:
1、尽量不在Native层开发,降低SDK的维护成本
2、尽量优化Native库的体积,降低接入开发者的使用成本
3、必须提供完整的CPU架构依赖库供开发者使用
到这里为止呢,基本具有高工的潜质了。
近期精彩内容推荐:
在看点这里好文分享给更多人↓↓
评论
真高!比亚迪员工爆料比亚迪在越南的薪资水平:基本工资480万,全勤奖35万,交通补助20万,餐补110万,每周6天,每天10小时
上一篇:某大公司为逼迫员工离职,竟然把他的工位安排到厕所旁,没想到他直接开始记录领导的如厕时间,还发到公司大群...对此,你怎么看?--完--PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。全文完,感谢你的耐心阅读。如果你还想看到我的文章,请一定给本
开发者全社区
0
太敢穿了!透视纱裙!性感火辣的身材
绝了呀今天的厂花:吴宣仪1995年1月26日,吴宣仪出生于海南省海口市,中国内地流行乐女歌手、影视演员。2016年2月,吴宣仪随宇宙少女发行首张迷你专辑正式出道。2018年4月,她参加《创造101》综艺选秀,获得第二名,成功加入火箭少女101组合。吴宣仪的颜值一直备受称赞,她的五官立体精致,皮肤白皙
逆锋起笔
0
某大公司为逼迫员工离职,竟然把他的工位安排到厕所旁,没想到他直接开始记录领导的如厕时间,还发到公司大群...
上一篇:字节的跳动职级与薪资(2024年)我们与公司间的合作,宛如两艘船只在茫茫大海上相互依靠,共同抵御风浪,携手驶向成功的彼岸。然而,当航向开始产生分歧,或是波涛汹涌的风浪改变了我们的初衷,我们或许应当冷静地选择和平分手,而非在风雨中硬撑。最近,一位网友的遭遇引起了广大职场人的关注和热议。这位网友
开发者全社区
0
女律师做擦边直播火了!称月入五千活不下去,直播能赚2万
近日,上海的一名年轻女律师火了——因为一句话,让她迅速成为舆论焦点。这位名为“是小冰心啊”的用户,在律师相关讨论帖中评论“去做擦边直播吧”,称自己律师收入月入5000元,直播收入2万元左右。她自称,“没有直播,我在上海活不下去”。据悉,该用户在多个社交平台曾发布舞蹈和普法结合视频,其上述言论引发热议
码农沉思录
0
金融研究 | 使用Python测量关键审计事项的「信息含量」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-01-13-information-content-of-critical-aud
大邓和他的Python
0
我看阿里的年终奖总算发了!
到4月底了,这两天看朋友圈,发现阿里的年终奖终于发了,问了问老同学,也从网上检索了不少信息,基本搞清楚了阿里今年的年终奖情况。近来来阿里一些集团对绩效等级做了较大的调整,以前的旧绩效系统中,绩效分为3.25、3.5、3.75、4和5五个等级,其中4和5是较高绩效等级,较少见。而且之前3.5绩效内部划
公子龙
0
CVPR 2024|大视觉模型的开山之作!无需任何语言数据即可打造大视觉模型
↑ 点击蓝字 关注极市平台作者丨科技猛兽编辑丨极市平台极市导读 本文提出一种序列建模 (sequential modeling) 的方法,不使用任何语言数据,训练大视觉模型。>>加入极市CV技术交流群,走在计算机视觉的最前沿本文目录1 序列建模打造大视觉模型(来自 U
极市平台
1
金融研究(更新) | 使用Python构建关键审计事项的「信息含量」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-01-13-information-content-of-critical-aud
大邓和他的Python
0