Proguard删除方法参数

时间:2018-10-17 06:35:19

标签: android android-proguard

最近,我发现ProGuard非常奇怪。我有此代码段code snippet

如您所见,方法 showTipHoodLock 具有两个参数,分别是 fragmentManager top (有些偏移)

但是在我使用 minifyEnabled true

编译应用程序之后

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

这是 Utils.showTipHoodLock 方法 showTipHoodLock

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

是错误还是功能,还是我错过了什么?

PS (如果我更改了

行中的值)
 100 200
2018-10-17T06:31:21.364556Z 0 [Warning] InnoDB: New log files created, LSN=2939944
wampmysqld64: Table 'mysql.plugin' doesn't exist
2018-10-17T06:31:21.748646Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2018-10-17T06:31:21.749764Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-10-17T06:31:21.754394Z 0 [Warning] Failed to open optimizer cost constant tables

2018-10-17T06:31:21.803432Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2018-10-17T06:31:21.804295Z 0 [ERROR] Aborting

到任何其他数字,则一切正常,并且不删除任何内容。而且,在应用程序的不同部分(在另一个片段中)的相同代码片段(已复制粘贴)开始工作。

1 个答案:

答案 0 :(得分:1)

  

是错误还是功能,还是我错过了什么?

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

根据您的代码段,第二个参数被以下逻辑引用为只读,其值为固定 0

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