老师,在这部分,so优化我想问下,这种通过运行时判断CPU架构的,那不也需要将很多种不同架构的so放入lib中吗?这样不也是一样占用空间?

来源:10-4 So瘦身实战

首席移动开发工程师

2021-01-21

写回答

1回答

随风绽放

2021-01-22

同学你好,比如有两个so,libexc.so 和 libcore.so,如果每个架构的目录都放对应架构的libexc.so 和 libcore.so,假设我们适配两个架构,那它俩其实就占用了两份空间(也就是此时是 4 个 So)。

此时

  1. 如果 libcore.so 不是性能敏感的,而libexc是性能敏感的

  2. 我们想进行包大小优化

那我们可以只放在一个 cpu 架构的文件夹下,此时只有两个 so。但是libexc是性能敏感的,因此我们将libexc两个架构的 so 都放在一起,而libcore只需要放一个即可(性能不敏感),此时是三个 so在一个架构的文件夹里。然后我们在运行阶段根据判断来决定加载哪个架构的libexc。

从原来的 4 个 so,到现在的 3 个 so,是不是节省了空间。


3
1
首席移动开发工程师
非常感谢!原来是这个意思
2021-01-31
共1条回复

Top团队大牛带你玩转Android性能分析与优化

由表及里学到国内Top团队对性能问题的体系化解决方案

1696 学习 · 532 问题

查看课程