META-INF/version duplicate error when using Proguard

ani*_*udh 15 android meta-inf proguard android-gradle-plugin

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)
    ......
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

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'
   }
Run Code Online (Sandbox Code Playgroud)

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

小智 0

使用 proguard-project.txt 中的选项 -ignorewarnings 为我“修复”了它,只要 Proguard 提到的唯一警告与 META-INF 相关,生成的 jar 就可以正常工作。