Android Proguard - 是保持所有第三方库的最佳做法吗?

Jon*_*Jon 4 android proguard

我正在为使用第三方库的应用程序配置Proguard.它是"最佳实践"(为了避免将来难以发现的错误)包含该行:

-keep class 3rd_party_lib_name.** {*;}
Run Code Online (Sandbox Code Playgroud)

对于没有其开发人员的特定Proguard指令的每个第三方开源库?

另外,一个相关的问题是:我应该使用哪些案例的一般准则

-keep class 
Run Code Online (Sandbox Code Playgroud)

在哪些情况下我应该使用

-keep public class
Run Code Online (Sandbox Code Playgroud)

非常感谢

ben*_*n75 6

一般来说,proguard和代码混淆的主要问题是修改了类名,方法和字段名.(即myExplicitMethodName()成为a())

修改类名,方法名或字段时,无法使用反射API访问它(即Class.classForName(...)......)

知道这一点,-keep对于可以使用反射API调用的所有类和库,这是最佳实践.

对于第三方库,如果您不知道它们是否使用反射API:那么 -keep

对于您自己的代码:希望您知道在哪些类中使用它.所以-keep用于那些课程.

请注意,像dagger或jackson这样的流行框架会在您自己的类上使用反射API,因此如果您使用它们,请小心!