使用Proguard时,META-INF /版本重复错误

问题描述 投票:4回答:1

等级:4.10.1Gradle Android插件版本:3.3.2Proguard:6.0.3JDK-1.9Android Studio 3.3.2当我尝试与Proguard一起构建apk发行版时。我收到以下错误-

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 / versions / 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'
   }

这也无法解决问题。我该如何解决这个问题?

android android-gradle-plugin proguard meta-inf
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.