首页 文章

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

提问于
浏览
0

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

我的问题

  • I don't understand what these warning trying to say? 但是构建肯定会失败,并且无法生成apk文件 .

  • 令人惊讶的是,添加 -dontwarn packagename* 将忽略这些警告但又不确定这是否安全 . Is it always feasible to simply ignore those warning just by adding -dontwarn

-dontwarn [class_filter]指定不要警告未解决的引用和其他重要问题 . 可选过滤器是正则表达式; ProGuard不会打印有关匹配名称的类的警告 . 忽略警告可能很危险 . 例如,如果确实需要处理未解析的类或类成员,则处理的代码将无法正常运行 . 如果您知道自己在做什么,请仅使用此选项!

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

来自我当前项目的Retrofit2警告

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

只需在 proguard-rules.pro 中添加此行即可关闭上述警告

-dontwarn retrofit2 . **

1 回答

  • 2

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

    所以在 dont warn 中我们只是忽略那些文件来完成proguard操作 . 希望这对你来说足够了 .

相关问题