我正在为从Gnustl迁移到LibC++而工作,并且我观察到从安卓系统中的gnustl迁移到LibC++后,的大小增加了8%-10%。我们添加的可解释大小的附加依赖项很少是,
·在每个so中静态地链接来自libc++的附加libunwin.a。
重写typeInfo类,特别是由于检查typeInfo ==操作符的行为不同。
但即使在这两个变化之后,我也不明白是什么原因导致了总体规模的增长。我最初怀疑引入LibC++是为了禁用调试符号剥离,但这也不是事实,我已经通过显式禁用-Wl --gc-sections &-ffunction sections fdata-sections验证了这一点,这进一步增加了生成的SO和APK的大小。
既然其他许多人已经经历了这个循环,我想问一问是否好,其他人也观察到了使用LibC++时增大大小的这些副作用?
谢谢/
发布于 2019-06-27 08:33:00
我的建议是使用Android的分析工具分析您的APK:要做到这一点,只需在Android中构建-> analyzing ->选择任何已构建的->文件,最后查看包含在APK中的每个文件的大小:
然后将其与使用Gnustl的APK进行比较
通常,大多数增加APK大小的文件是本机.so文件。也许libc++的本地文件比Gnustl的要大,或者更有可能的是,libg++为某些CPU架构添加了.so文件,但是Gnustl没有。我的意思是,更多的目录可能出现在lib目录中。
如果第二个例子是你的情况,你可以在Google上发布你的APK时使用Android来确保设备只下载他们最基本的.so文件,而不是其他文件。什么可以大大地减少安装的应用程序的总大小。
https://stackoverflow.com/questions/56420876
复制相似问题