我开始为Android学习 Proguard 。经过一番阅读,我开始尝试在我的项目中使用。当我开始生成发布版本时,我在android studio终端中看到了很多警告和注释。我知道这完全取决于我使用的代码库和第三方库。
我的问题
我不明白这些警告试图说什么?但是构建肯定会失败并且无法生成apk文件。
令人惊讶的是,添加-dontwarn packagename*
会忽略这些警告但又不确定它是否安全。 仅仅通过添加-dontwarn
来忽略这些警告总是可行的吗?
-dontwarn [class_filter]
指定不要警告未解决的引用和其他重要问题。可选的过滤器是 正则表达; ProGuard不会打印有关课程的警告 与匹配的名称。忽略警告可能很危险。例如, 如果确实需要未解决的班级或班级成员 处理后,处理后的代码将无法正常运行。 仅使用 如果您知道自己在做什么,可以选择此选项
当然,在这一点上,我真的不知道自己在做什么。如果你能帮我理解,我将非常感激;-)。
警告:retrofit2.OkHttpCall:找不到引用的类javax.annotation.concurrent.GuardedBy
警告:retrofit2.OkHttpCall:找不到引用的类javax.annotation.concurrent.GuardedBy
警告:retrofit2.OkHttpCall:找不到引用的类javax.annotation.concurrent.GuardedBy
只需在 proguard-rules.pro
中添加此行,即可关闭上述警告-dontwarn retrofit2。**
答案 0 :(得分:3)
所以基本上Proguard会映射你的代码或执行代码混淆,收缩,优化删除未使用的代码......等等同样,有时它会发现许多类在import语句中使用,或者在其他地方使用,但这些类实际上并不存在于包内,因此它会生成警告,因为Proguard无法获取某些类的引用。然而,优化使用Java字节码进行操作,并且由于Android运行在从Java字节码转换的Dalvik字节码上,因此某些优化将无法正常工作。所以你应该小心。
所以在不要警告我们只是忽略那些文件来完成proguard操作。 希望这对你来说足够了。