android - Proguard删除方法参数

标签 android android-proguard

最近我发现 ProGuard 很奇怪。我有这个代码 fragment code snippet

如您所见,方法showTipHoodLock采用2个参数,fragmentManagertop(一些偏移)

但在我使用 minifyEnabled 编译应用程序后 true

我在点击回调中得到了这个onClick callback

这是Utils.showTipHoodLock方法 showTipHoodLock

如您所见,proguard 从方法签名中删除了第二个参数(名为 top),并将其出现的地方替换为 0 文字。

这是一个错误,还是一个功能,或者我错过了什么?

P.S.如果我更改行中的值

int coords[] = {0, 0}

对于任何其他数字,那么一切都会完美,并且不会删除任何内容。此外,应用程序不同部分(在其他 fragment 中)的相同代码 fragment (复制粘贴)开始工作。

最佳答案

Is it a bug, or a feature, or did I miss something?

不是错误,这是优化代码的功能

根据您的代码,第二个参数通过以下逻辑引用为READ ONLY,其值FIXED0

Proguard 将删除(一种 Proguard 优化:删除未使用的参数传播常量参数)此参数以及此已知固定值简化调用流程。

关于android - Proguard删除方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848602/

相关文章:

java - "wrong first argument type. Found: ' android.widget.Compoundbutton.oncheckedchangelistener ', required: ' android.content.context '"

java - IInAppBillingService.aidl 无法在 Android Studio 中生成 Java 文件

java - 音频文件未出现在播放音乐应用程序中

java - 应用程序发布时的 Proguard 错误 - android/arch/core/internal/SafeIterableMap

android - 公开发布的Android库无法正确维护

android - Fabric 不发送崩溃报告

java - 如何连接 Android Studio 和 SQL Server 数据库?

android - 尽管使用 -keepclasseswithmembernames,Proguard 仍然混淆了类

Android Wear Proguard

android - 无法建立生产APK