android - 尽管使用 -keepclasseswithmembernames,Proguard 仍然混淆了类

标签 android proguard android-proguard

我尝试防止包含属性的类混淆 任何成员上的@com.evernote.android.state.State

为此,我添加了我的规则:

-keepclasseswithmembernames class * { @com.evernote.android.state.State *;}

而且它不起作用。类被混淆

但如果指定更具体的条件:

-keepclasseswithmembernames class * { @com.evernote.android.state.State <fields>;}

效果很好!

有人可以澄清为什么第一个变体不起作用吗?

Build-gradle 版本为 3.1.2

最佳答案

仅当所有指定成员匹配时,规则-keepclasseswithmembernames才会匹配。如果您使用像 * 这样的通配符,那么所有字段和方法都必须被注释,但情况可能并非如此。

如果您仅匹配字段,那么它将起作用。

关于android - 尽管使用 -keepclasseswithmembernames,Proguard 仍然混淆了类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50696887/

相关文章:

android - 如何运行 Travis-CI 和 Espresso 测试

android - Settings.Secure.Android_ID 可以为空吗?

Android Studio - 没有这样的属性 : baseName for class

android - ProGuard 不能与 okhttp 一起使用

java - 如何在 Android 上为 Room 库设置 proguard 规则

android - 错误 :Execution failed for task ':android:transformClassesAndResourcesWithProguardForRelease'

Android 计费 - 在文件 Security.java 中,base64EncodedPublicKey 应该是编码值吗?

Android Market - 两次更新之间的等待时间

android - Proguard 错误,无法导出应用程序

Android 应用程序在通过生成签名的应用程序发布后无法运行