Android prouard,保持内部类
我的android程序有一个class A ,它有两个static inner class 。 在应用proguard后,发现它们被从.dex删除。 
 public class A{ ... static class B{ ... } static class C{ ... } } 
我把proguard.flags中的以下行,但似乎没有运气。
 -keep class com.xxx.A -keep class com.xxx.A$* 
任何提示?
 尝试添加InnerClasses到保持属性。 例如: 
 -keepattributes Exceptions, InnerClasses, ... 
此外,尝试添加一个身体的“保持”呼叫星号,如下所示:
 -keep class com.xxx.A$* { *; } 
这是我必须做我的configuration
 -keep class com.xxx.A { *; } -keep class com.xxx.A$B { *; } -keep class com.xxx.A$C { *; } 
这为我做了诡计
 -keepattributes InnerClasses -keep class com.yourpackage.YourClass** -keepclassmembers class com.yourpackage.YourClass** { *; } 
通配符可能有点矫枉过正,但我想确保我没有错过任何东西。 最主要的是你需要InnerClasses属性保持类和类的keepclassmembers。
如果你不想让一些包中的所有内部类和成员被混淆,你可以在proguard-rules.pro中添加行
  -keep class com.xxx.task.*$* { *; } 
 您的configuration看起来正确。 你应该仔细检查你没有拼错类名。 如果拼写错误,ProGuard应该打印出关于它的注释。 您也可以指定-printseeds seeds.txt ,并查看您的类是否在结果文件中列出。 如果列出,这些类也在处理的代码中。 
正如亚历山大·卢卡斯(Alexander Lucas)提到的那样,你也可能想要保留这些类的领域和方法 – 这取决于你的要求。