今天在使用Proguard keep一个 静态内部类的时候,混淆完之后一直找不到那个静态内部类,内心抓狂啊。
最后在stackoverflow上找到了答案:
-keepattributes Exceptions,InnerClasses,...
-keep class [packagename].A{
*;
}
-keep class [packagename].A$* {
*;
}
其中 A$* 表示所有A的内部类都保留下来,也可以如下使用:
-keepattributes Exceptions,InnerClasses,...
-keep class com.xxx.A{ *; }
-keep class com.xxx.A$B { *; }
-keep class com.xxx.A$C { *; }
这样可以根据需要只保留A的某一个内部类
以下是proguard文件一部分
#-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keepattributes Exceptions,InnerClasses,...
-keep class com.yulore.reverselookup.api.YuloreWindowConfiguration{ *; }
-keep class com.yulore.reverselookup.api.YuloreWindowConfiguration$Builder{ *; }
注意:第一行和第二行都可以解决问题
本文介绍了解决Proguard混淆过程中丢失静态内部类的问题。通过正确的配置,可以确保特定的内部类不会被混淆工具移除,这对于依赖内部类的应用尤为重要。
1266

被折叠的 条评论
为什么被折叠?



