android-性能优化-so优化

个人总结,因为项目开发的原因,需要ndk开发一部分功能,并打包成so使用,在打包so过程中发现生成的so过大,如下图有15M的样子,很大。所以决定看一些so优化相关的知识。


图1

这是我通过cmake方式直接在as上运行出来生成的so,研究以后才知道,so还有debug和release包的区分,上面这个就是debug的so。

在as上task->other->


图2

点击这个方式build会生成release的so库,如下图。


图3

会减少几百k的大小,但还是很大,仍有14M多。

参考https://blog.csdn.net/u010019468/article/details/78271965这个博客发现

release包这么大还是因为编译过程中生成二进制码没有被剥除。故根据其提供方式在cmakelist.txt中添加如下关键配置项:

图4

编译so之后大大优化so大小,见下图

图5

优化之后大小减了一半多,只有6M多了。

鉴于项目开发时一些so库只有so没有源代码,太大无法自己重新打包,研究到有一种工具UPX可以对于so这种文件直接压缩, 工具库地址 https://github.com/upx/upx。

其中有写到


图6

UPX是一种高级可执行文件处理器,可以压缩50%多的大小。

使用方法如下


图7

接着把release刚才打包的压缩文件用UPX工具再次进行压缩,过程与结果如下。


图8
图9

明显可见压缩效率之高,6M多的so又压缩到了2M多。亲测原功能正常运行。

甚是欢喜,这下子不会因为so太大导致apk增大过多了。这次研究下来收获还是蛮大的压缩率高达86%~(#^.^#)

你可能感兴趣的:(android-性能优化-so优化)