我是Java程序员。
我在我的android项目中包含了一个开源C库(例如A),以通过函数F1做一些本地工作。函数F1运作良好,但是A编译的共享库的大小为5M。这意味着我的最终APK将增加大约5M,这是很大的。
我的问题是,如何缩小共享库以仅包含所需的功能?或者至少删除了我不需要的大多数功能?有没有工具可以实现这一目标?

更新1:
@Employed Russian已经回答了上面问题的很大一部分,这是通过“条”工具实现的。
我的另一个问题是,是否有任何工具可以实现 ProGuard 对Java的作用,即完全删除了我未调用的代码?

最佳答案



您的共享库很可能包含调试信息,调试信息的大小很容易达到80%,而您实际上并不需要。大多数开源库都使用-O2 -g标志构建,而-g是最终库大小的原因。

要获取没有调试信息的库,请运行strip,如下所示:

cp libA.so libA.so.orig # keep original in case you need to debug it later
strip -g libA.so

现在比较libA.solibA.so.orig的大小。很有可能libA.so会更小。

通过运行libA.so,您应该能够进一步压缩strip libA.so。这会删除所有符号,而不仅是调试符号,还会使调试与libA.so相关的崩溃更加困难。但是,由于您保留了原始的完整调试副本,所以这不是什么大问题。

关于android - 如何缩小共享库的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37063778/

10-10 12:32