有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

Proguard是否检测到此类情况并删除方法?我必须自己配置吗?如果是,stacktrace Deobfousation呢


共 (2) 个答案

  1. # 1 楼答案

    它不会删除它们,因为使用了代码

    如果启用了^{} optimization,它将内联这些方法:方法调用将被删除,方法代码将插入方法调用所在的位置

    What about stacktrace deobfuscation if so?

    如果内联方法中存在异常,它将显示在方法调用站点(调用被删除的位置)的stacktrace中

  2. # 2 楼答案

    如果使用proguard,则不会删除该方法

    而且,如果你已经知道一个这样的方法,为什么不在启用proguard的情况下构建一个apk,并在应用程序中测试该方法调用的功能,然后自己检查呢