-keep class 和 -dontwarn 有什么区别

what is the difference between -keep class and -dontwarn

嘿,我是 proGuard 的新手,我用它来保护我的代码免遭逆向工程, 但是当我构建签名的 apk 时,当我启用 proGuard 时出现了很多错误,我用谷歌搜索了我的问题我找到了答案,说对错误消息中显示的 类 使用 -dontwarn 但是在看到proGuard 的文档说

If you don't feel like filtering out the problematic classes, you can try your luck with the -ignorewarnings option, or even the -dontwarn option. Only use these options if you really know what you're doing though.

而且我不知道自己在做什么 这是我的 proguard-rules.pro 文件

-dontwarn okio.**
-dontwarn org.apache.**
-dontwarn com.appodeal.**
-dontwarn com.parse.**
-dontwarn com.squareup.**

我看到一些答案说使用 -keep class

谁能解释一下

-keep class 保留指定的 classes 和 class 成员。

-dontwarn 根本不警告未解决的引用。

这里有更多信息http://proguard.sourceforge.net/manual/refcard.html

-dontwarn

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

-keep class

指定 classes 和 class 成员(字段和方法)保留为代码的入口点。例如,为了保留应用程序,您可以指定 main class 及其主要方法。为了处理库,您应该指定所有可公开访问的元素。

希望对您有所帮助!!