在proguard android中忽略警告是正确的

时间:2017-09-27 07:15:25

标签: java android proguard

我开始为Android学习 Proguard 。经过一番阅读,我开始尝试在我的项目中使用。当我开始生成发布版本时,我在android studio终端中看到了很多警告和注释。我知道这完全取决于我使用的代码库和第三方库。

我的问题

  • 我不明白这些警告试图说什么?但是构建肯定会失败并且无法生成apk文件。

  • 令人惊讶的是,添加-dontwarn packagename*会忽略这些警告但又不确定它是否安全。 仅仅通过添加-dontwarn 来忽略这些警告总是可行的吗?

  

-dontwarn [class_filter]

     

指定不要警告未解决的引用和其他重要问题。可选的过滤器是   正则表达; ProGuard不会打印有关课程的警告   与匹配的名称。忽略警告可能很危险。例如,   如果确实需要未解决的班级或班级成员   处理后,处理后的代码将无法正常运行。 仅使用   如果您知道自己在做什么,可以选择此选项

当然,在这一点上,我真的不知道自己在做什么。如果你能帮我理解,我将非常感激;-)。

来自我当前项目的改进2警告

  

警告:retrofit2.OkHttpCall:找不到引用的类javax.annotation.concurrent.GuardedBy

     

警告:retrofit2.OkHttpCall:找不到引用的类javax.annotation.concurrent.GuardedBy

     

警告:retrofit2.OkHttpCall:找不到引用的类javax.annotation.concurrent.GuardedBy

只需在 proguard-rules.pro

中添加此行,即可关闭上述警告
  

-dontwarn retrofit2。**

1 个答案:

答案 0 :(得分:3)

所以基本上Proguard会映射你的代码或执行代码混淆收缩优化删除未使用的代码......等等同样,有时它会发现许多类在import语句中使用,或者在其他地方使用,但这些类实际上并不存在于包内,因此它会生成警告,因为Proguard无法获取某些类的引用。然而,优化使用Java字节码进行操作,并且由于Android运行在从Java字节码转换的Dalvik字节码上,因此某些优化将无法正常工作。所以你应该小心。

所以在不要警告我们只是忽略那些文件来完成proguard操作。 希望这对你来说足够了。