我正在为使用第三方库的应用程序配置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)
非常感谢
一般来说,proguard和代码混淆的主要问题是修改了类名,方法和字段名.(即myExplicitMethodName()成为a())
修改类名,方法名或字段时,无法使用反射API访问它(即Class.classForName(...)......)
知道这一点,-keep对于可以使用反射API调用的所有类和库,这是最佳实践.
对于第三方库,如果您不知道它们是否使用反射API:那么 -keep
对于您自己的代码:希望您知道在哪些类中使用它.所以-keep用于那些课程.
请注意,像dagger或jackson这样的流行框架会在您自己的类上使用反射API,因此如果您使用它们,请小心!
| 归档时间: |
|
| 查看次数: |
3091 次 |
| 最近记录: |