Proguard 是否会删除仅在一个地方使用的方法? [方法内联]
Does Proguard remove methods used in only one place? [method inlining]
我正在考虑使用 Proguard,因为我的应用程序更接近生产以使其更轻。
在 Android,除了低存储设备外,还有 65K 的方法限制。我知道 Proguard 会删除未使用的方法,但它会删除只在一个地方使用的方法吗?我的意思是,我正在编写一些方法只是为了使代码更清晰,但它会节省一个方法调用(CPU 和 RAM 的 return 最昂贵的操作之一,我研究了微代码)以及 65K 最大计数中的方法以及最终包中的一些字节。
Proguard 会检测此类情况并删除方法吗?我必须自己配置吗?如果是这样,堆栈跟踪去混淆怎么办?
如果使用 proguard 将不会删除该方法。
而且,如果您已经知道一种这样的方法,为什么不构建一个启用混淆器的 apk 并测试应用程序中调用该方法的功能并自行检查?
它不会删除它们,因为使用了代码。
如果你启用了method/inlining/unique
optimization,它会内联这样的方法:方法调用被删除,方法代码被插入到方法调用的地方。
What about stacktrace deobfuscation if so?
如果内联方法中存在异常,它将显示在方法调用站点(调用被删除的位置)的堆栈跟踪中。
我正在考虑使用 Proguard,因为我的应用程序更接近生产以使其更轻。
在 Android,除了低存储设备外,还有 65K 的方法限制。我知道 Proguard 会删除未使用的方法,但它会删除只在一个地方使用的方法吗?我的意思是,我正在编写一些方法只是为了使代码更清晰,但它会节省一个方法调用(CPU 和 RAM 的 return 最昂贵的操作之一,我研究了微代码)以及 65K 最大计数中的方法以及最终包中的一些字节。
Proguard 会检测此类情况并删除方法吗?我必须自己配置吗?如果是这样,堆栈跟踪去混淆怎么办?
如果使用 proguard 将不会删除该方法。
而且,如果您已经知道一种这样的方法,为什么不构建一个启用混淆器的 apk 并测试应用程序中调用该方法的功能并自行检查?
它不会删除它们,因为使用了代码。
如果你启用了method/inlining/unique
optimization,它会内联这样的方法:方法调用被删除,方法代码被插入到方法调用的地方。
What about stacktrace deobfuscation if so?
如果内联方法中存在异常,它将显示在方法调用站点(调用被删除的位置)的堆栈跟踪中。