我有一些通过反射使用的类。似乎ProGuard正在删除这些当我构建发布。
是否有任何方法可以指定在ProGuard运行时不删除特定包中的所有类(而不是特定的类名)?需要注意的是,需要混淆。另一个注意事项是,所有这些类都扩展了现有的单个类。
谢谢
使用-keep class com.yourpackage.name.** { *; }
在我的情况下工作得很好。它本质上使用通配符来保留属于该包的所有类。还要注意*;
是必需的。
另外,为了帮助调试你的问题,你应该检查生成的seeds.txt
,如果类被包含,那么它被保留。
此外,它可能是使用公共静态内部类之类的另一个问题。最好的调试方法是使用dex2jar和JD-GUI反编译缩小的apk,并手动浏览代码,看看哪些被删除或保留了。
您是否尝试在proguard-rules.pro
文件中添加这行?
-keep class com.company.application.PackagePrefix*
{
*;
}
如果你不想使用包前缀,你可以使用**
代替。
希望能有所帮助。