有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ProGuard构建在具有OpenCSV依赖项的Android上失败

我依赖OpenCSV 3.8,发布版本失败,出现ProGuard错误:

Warning:org.apache.commons.beanutils.MappedPropertyDescriptor: can't find referenced method 'void setName(java.lang.String)' in program class org.apache.commons.beanutils.MappedPropertyDescriptor

我可以试着忽略它,但这听起来不是个好办法

有趣的是,OpenCSV3.8依赖于commons beanutils 1.9.3,而本地安装了1.9.2


共 (2) 个答案

  1. # 1 楼答案

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

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

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

    谢谢

  2. # 2 楼答案

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

    为了解决这个问题,我做了以下更改,现在我能够构建apk

    在模块级构建中。渐变添加到下面的行

    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
    

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