Android Proguard:将类保存在特定的包中
我有一些通过反射使用的类。当我构建发布版时,ProGuard似乎正在删除这些 有没有办法指定在运行ProGuard时不删除特定包中的所有类(与特定类名相反)。值得注意的是,需要进行模糊处理。另一方面,所有这些类都扩展了现有的单个类Android Proguard:将类保存在特定的包中,android,proguard,android-proguard,Android,Proguard,Android Proguard,我有一些通过反射使用的类。当我构建发布版时,ProGuard似乎正在删除这些 有没有办法指定在运行ProGuard时不删除特定包中的所有类(与特定类名相反)。值得注意的是,需要进行模糊处理。另一方面,所有这些类都扩展了现有的单个类 感谢使用-keep class com.yourpackage.name.*{*;}在我的例子中效果很好。它本质上使用通配符来保持属于该包的所有类。还要注意*是必需的 此外,为了帮助调试您的问题,您应该检查生成的seeds.txt,如果包含该类,则保留该类 此外,这可
感谢使用
-keep class com.yourpackage.name.*{*;}
在我的例子中效果很好。它本质上使用通配符来保持属于该包的所有类。还要注意*代码>是必需的
此外,为了帮助调试您的问题,您应该检查生成的seeds.txt
,如果包含该类,则保留该类
此外,这可能是另一个问题,比如使用公共静态内部类等等。最好的调试方法是使用dex2jar和JD-GUI反编译缩小的apk,并手动浏览代码以查看被剥离或保留的内容。请不要忘记在之前使用-dontdeobfousate。您是否尝试在proguard rules.pro
文件中添加这一行
-keep class com.company.application.PackagePrefix*
{
*;
}
如果您不想使用包前缀,可以使用**
希望有帮助。您尝试过上面提到的解决方案吗?我正在看,但不明白。一方面,第一个示例说明如何避免混淆类,第二个示例说明如何避免混淆特定方法。所以这和我的情况不一样。我希望在构建中包含类并对其进行模糊处理。好吧,不应该对具有反射的类进行模糊处理以使其正常工作。因此,您可以在使用反射的类上应用“-keep class your package”。噢!极好的一点@baskara你完全正确。这确实将类保留在构建中,但是它们没有被混淆(通过检查mapping.txt确定)