在具有OpenCSV依赖性的Android上,ProGuard构建失败

时间:2017-01-16 05:15:43

标签: java android proguard android-proguard opencsv

我对OpenCSV 3.8有依赖,发布版本因ProGuard错误而失败:

  

警告:org.apache.commons.beanutils.MappedPropertyDescriptor:在程序类org.apache.commons.beanutils.MappedPropertyDescriptor中找不到引用的方法'void setName(java.lang.String)'

我可以尝试忽略它,但听起来不太好。

有趣的是OpenCSV 3.8依赖于commons-beanutils 1.9.3而本地安装1.9.2。

2 个答案:

答案 0 :(得分:3)

我在openCSV上有类似的问题:3.9,它在调试版本中显示了一些警告,并且在使用proguard构建时抛出了错误。

要解决此问题,我在下面做了更改,现在我可以构建apk

在模块级build.gradle中添加以下行

configurations {
     all*.exclude group: 'commons-logging', module: 'commons-logging'
}

在proguard文件中

-dontwarn com.opencsv.**
-dontwarn org.apache.commons.beanutils.**
-dontwarn org.apache.commons.collections.**
-keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod
-dontoptimize

希望这对您和其他面临类似问题的人有所帮助。

答案 1 :(得分:0)

您需要在progaurd文件中为apache comms添加以下规则:

-keep class org.apache.commons.** { *; }

Progaurd将使用上述规则,不会混淆包org.apache.commons中包含的类,以便您可以使用它。

感谢。