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%~(#^.^#)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,804评论 1 32
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaoyanj...
    勤奋的pangdunhu阅读 6,382评论 0 1
  • 1、 前言 如果你对App优化比较敏感,那么Apk安装包的大小就一定不会忽视。关于瘦身的原因,大概有以下几个方面:...
    未来的理想阅读 13,951评论 4 40
  • 目录一、Python打包及优化(美团多渠道打包)二、Gradle打包三、其他打包方案:修改Zip文件的commen...
    守望君阅读 11,044评论 4 17
  • 连着两天晚上没吃东西了,感觉还好!因为两天的暴晒,头有点不舒服!喝了一瓶饮料!但愿不要增肥!加油吧!Andy!我看...
    Andy0622阅读 1,456评论 0 1