Proguard:将课程保留在某个包中

时间:2016-09-14 16:36:30

标签: android proguard android-proguard

我有一些通过反射使用的类。当我构建发布时,ProGuard似乎正在删除它们。

是否有任何方法可以指定在ProGuard运行时不删除特定包中的所有类(与特定类名相对)。作为一个注释,需要混淆。另外注意,所有这些类都扩展了一个存在的类。

由于

2 个答案:

答案 0 :(得分:0)

在我的案例中使用-keep class com.yourpackage.name.** { *; }效果很好。它主要使用通配符来保留属于该包的所有类。另请注意,*;是必需的。

另外,为了帮助调试您的问题,您应该检查生成的seeds.txt,如果包含该类,则保留该类。

此外,它可能是另一个问题,如使用公共静态内部类等。调试的最佳方法是使用dex2jar和JD-GUI对缩小的apk进行反编译,并手动浏览代码以查看被剥离或保留的内容。不要忘记 - 之前不要进行混淆。

答案 1 :(得分:0)

您是否尝试在proguard-rules.pro文件中添加此行?

-keep class com.company.application.PackagePrefix* 
{
*;
}

如果您不想使用包装前缀,可以使用**代替。

希望它有所帮助。