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

Tix*_*eon 2 java android proguard

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

我的问题

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

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

-dontwarn [class_filter]

指定完全不对未解析的引用和其他重要问题发出警告。可选的过滤器是一个正则表达式;ProGuard 不会打印有关名称匹配的类的警告。忽视警告可能是危险的。例如,如果确实需要处理未解析的类或类成员,则处理后的代码将无法正常运行。仅当您知道自己在做什么时才使用此选项!

那么肯定在这一点上,我真的不知道我在做什么。如果您能帮助我理解,我将不胜感激;-)。

来自我当前项目的 Retrofit2 警告

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

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

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

只需通过在proguard-rules.pro 中添加这一行来关闭上述警告

-不要警告改造2.**

Nik*_*hav 5

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

因此,在dont warn 中,我们只是忽略这些文件以进行 proguard 操作。希望这对您来说是足够的信息。