Proguard是否删除仅在一个地方使用的方法? [方法内联]

时间:2015-11-04 10:13:42

标签: java android performance proguard android-proguard

我正在考虑使用Proguard,因为我的应用程序更接近生产,以使其更轻。

在Android上,除了低存储设备外,还有65K方法限制。我知道Proguard会删除未使用的方法,但它会删除仅在一个地方使用的方法吗?我的意思是,我正在编写一些方法只是为了使代码更清晰,但它会保存一个方法调用(最昂贵的操作之一,返回CPU和RAM,我研究微码)和一个65K最大计数的方法以及最终包中的一些字节。

Proguard会检测到这种情况并删除方法吗?我必须自己配置吗?如果是这样,堆栈跟踪反混淆呢?

2 个答案:

答案 0 :(得分:3)

由于使用了代码,因此不会删除它们。

如果您启用了method/inlining/unique optimization,它将内联此类方法:删除方法调用,并将方法代码插入到方法调用所在的位置。

  

如果是这样,堆栈跟踪反混淆怎么办?

如果内联方法中存在异常,它将显示在方法调用站点(删除调用的位置)的堆栈跟踪中。

答案 1 :(得分:0)

如果使用proguard将不会删除该方法。

并且,如果您已经知道一个这样的方法,为什么不只是构建一个启用了proguard的apk并测试应用程序中的功能,该方法调用方法并自行检查?