META-INF/version duplicate error when using Proguard

[亡魂溺海] 提交于 2019-12-23 13:21:12

问题


Gradle : 4.10.1 Gradle Android Plugin version : 3.3.2 Proguard : 6.0.3 JDK - 1.9 Android Studio 3.3.2 When I try to build apk release version along with Proguard. I get the following error -

Caused by: java.io.IOException: Please correct the above warnings first.
    at proguard.InputReader.execute(InputReader.java:149)
    at proguard.ProGuard.readInput(ProGuard.java:255)
    at proguard.ProGuard.execute(ProGuard.java:96)
    ......

This seems to be caused due to this -

Warning: class [META-INF/versions/9/module-info.class] unexpectedly contains class [module-info]
Note: duplicate definition of program class [module-info]
Note: there were 20 duplicate class definitions.
      (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
Warning: there were 21 classes in incorrectly named files.
         You should make sure all file names correspond to their class names.
         The directory hierarchies must correspond to the package hierarchies.

From extensive searching it looks like Proguard has a problem with META-INF/versions/9. I have multiple dependencies that contain this.

While the issue to seems to somewhat documented, no solutions prescribed seem to work. https://sourceforge.net/p/proguard/bugs/665/ suggests filtering out those class files via -

-injars my_lib.jar(!META-INF/versions/**.class)

However when I try this it just labels more files as duplicate and incorrectly named. I also tried excluding it via gradle-

packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/INDEX.LIST'
        exclude 'META-INF/versions'
        exclude 'META-INF/versions/9/module-info.class'
   }

This also fails to resolve the problem. How do I solve this problem ?


回答1:


Using the option -ignorewarnings in proguard-project.txt 'fixed' it for me, the generated jar works fine as long as the only warnings mentioned by Proguard are related to META-INF.



来源:https://stackoverflow.com/questions/55609008/meta-inf-version-duplicate-error-when-using-proguard

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!