Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Proguard:将类保存在特定的包中_Android_Proguard_Android Proguard - Fatal编程技术网

Android Proguard:将类保存在特定的包中

Android Proguard:将类保存在特定的包中,android,proguard,android-proguard,Android,Proguard,Android Proguard,我有一些通过反射使用的类。当我构建发布版时,ProGuard似乎正在删除这些 有没有办法指定在运行ProGuard时不删除特定包中的所有类(与特定类名相反)。值得注意的是,需要进行模糊处理。另一方面,所有这些类都扩展了现有的单个类 感谢使用-keep class com.yourpackage.name.*{*;}在我的例子中效果很好。它本质上使用通配符来保持属于该包的所有类。还要注意*是必需的 此外,为了帮助调试您的问题,您应该检查生成的seeds.txt,如果包含该类,则保留该类 此外,这可

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

有没有办法指定在运行ProGuard时不删除特定包中的所有类(与特定类名相反)。值得注意的是,需要进行模糊处理。另一方面,所有这些类都扩展了现有的单个类


感谢使用
-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确定)