AndroidPlot的ProGuard配置

时间:2014-04-15 17:47:13

标签: android proguard androidplot

由于在启用ProGuard的情况下构建我的应用程序的发布版本,我的绘图样式将重置为默认值,我在Logcat中看到许多警告,告知我不支持的参数:

  

错误膨胀XML:字段的设置者" [...]"不存在。

我已经确定这是来自AndroidPlot的配置器,但尚未找到该项目的任何官方ProGuard配置。

3 个答案:

答案 0 :(得分:6)

AndroidPlot设置配置参数的机制在很大程度上依赖于反射,在这种情况下,我认为尝试对这个库中的任何内容进行模糊处理是没用的:

-keep class com.androidplot.** { *; }

答案 1 :(得分:0)

在我的情况下,我一直在使用proguard进行调试构建,它工作正常。然后我运行了一个发布版本(它为proguard配置添加了模糊处理),当它试图在视图中膨胀XYPlot时崩溃了。

  

二进制XML文件行#12:二进制XML文件行#12:错误膨胀类com.androidplot.xy.XYPlot

要修复它,我只是将proguard配置为不混淆任何androidplot对象的名称:

-keepnames class com.androidplot.**

答案 2 :(得分:0)

那对我来说还行不通。为了进行故障排除,我在第一步中设置了-dontshrink -dontoptimize -dontobfuscate开关(如果这样做没有帮助,则可能在ProGuard中找不到原因)。 之后,您可以逐步排除单个类别的组,例如“ -keep,includedescriptor类,includecode类my.path.to.R * {*;}”。在我的情况下,必须“保留” Android Studio创建的资源类:

-keep, includedescriptorclasses, includecode class com.androidplot.** {*;}

-keepclassmembers class **.R$* {
    public static <fields>;
}

请参阅https://www.guardsquare.com/en/products/proguard/manual/examples

“我们将保留自动生成的R类的引用内部类的静态字段,以防万一您的代码正在通过内省访问这些字段。请注意,编译器已经内联了原始字段,因此ProGuard通常可以删除所有这些字段无论如何都完全归类(因为这些类没有被引用,因此不是必需的)。“