标题太刺眼了,我想肯定要被人骂.写这个只是做个记录,打个tag,并非要损c++,本人也并非专职的C++开发人员.
目前做的一个产品,涉及到将Linux版本的SDK(c/c++混合写的)移植到安卓平台.
做法是将c/c++的代码转换到安卓NDK,并加上一些JNI的逻辑(c/c++与java之间的互相调用).
集成完成后,功能是没问题,只是打成的aar包有2M多(4个架构平台的so文件普遍在500k左右),客户对这个aar包的大小不太满意.
原因是该SDK软件包会被装载到物联卡的芯片里,这种芯片类似于电信和移动的sim卡.
sim卡的空间资源当然是非常有限的,装载于其中的各种三方软件包越小越好,2M多可能是有些大了,客户不满意.
后来对系统代码进行了各种优化,比如去掉调试信息,非必要的日志等等..
这样优化后,包依然有900多K接近1M,还是有点大,但感觉是在没办法了,总不能改动现有的功能逻辑吧,这个风险实在太大了,毕竟百度/荣耀/小米...这些大客户已经在商用咱们的安卓SDK包了.
后面在bing上找到一篇博客,谈到so文件体积的优化问题,其中提的主要的是如何去优化c++相关的代码,我想莫非优化的重点在于c++?
我就试着把工程里的所有c++逻辑全部改成了c,结果奇迹发生了:1M不到的aar包,编译打包后的release版本居然只有173k(其中R.txt文件有31k).
c++确实烂?
最新推荐文章于 2023-01-31 20:43:31 发布