META-INF / версия дублирует ошибку при использовании Proguard - PullRequest
3 голосов
/ 10 апреля 2019

Gradle: 4.10.1 Gradle Версия Android-плагина: 3.3.2 Proguard: 6.0.3 JDK - 1.9 Android Studio 3.3.2 Когда я пытаюсь собрать релизную версию apk вместе с Proguard.Я получаю следующую ошибку -

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)
    ......

Это, вероятно, вызвано этим -

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.

Из расширенного поиска похоже, что у Proguard есть проблема с META-INF / version /9.У меня есть несколько зависимостей, которые содержат это.

В то время как проблема, по-видимому, несколько документирована, никакие предписанные решения, похоже, не работают.https://sourceforge.net/p/proguard/bugs/665/ предлагает отфильтровать эти файлы классов с помощью -

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

Однако, когда я пытаюсь это сделать, он просто помечает другие файлы как дубликаты и имеют неправильные имена.Я также пытался исключить его через 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'
   }

Это также не может решить проблему.Как мне решить эту проблему?

...