Proguard错误:“处理任务java.io.IOException时出现异常:请先纠正上述警告”

问题描述 投票:6回答:5

自从升级到android gradle插件3.0.1后,我收到以下错误:

Warning: Exception while processing task java.io.IOException: Please correct the above warnings first.

:app:transformClassesAndResourcesWithProguardForProductionRelease FAILED

问题是:我的日志中没有看到任何警告。

我还使用-i标志运行构建,我正在关注(大)日志:https://gist.github.com/stoefln/b5e5e899c73b52d8065a5daeead716b3

任何想法都非常欢迎!

android gradle proguard
5个回答
8
投票

这是因为在您的依赖项中存在多个rxjava隐式依赖项和不同版本。

从这个日志:

Reading program jar [/Users/steph/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.2.5/b423532b5a3c949cbb799468f83bf566032fe98d/rxjava-1.2.5.jar] (filtered)

Reading library jar [/Users/steph/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.2.3/7fe1a94c1aeb958acc876fe616922cc191f3222c/rxjava-1.2.3.jar] (filtered)

您可以在应用程序中看到rxjava有两个版本:1.2.3和1.2.5

你的一个依赖项android-rxlocationsettings正在使用rxjava 1.2.5,你可以看看它的build.gradle

apply plugin: 'com.android.library'

dependencies {
  compile 'pl.charmas.android:android-reactive-location:0.10@aar'
  compile 'com.google.android.gms:play-services-location:10.0.1'
  compile 'com.android.support:support-v4:25.0.1'
  compile 'io.reactivex:rxjava:1.2.5'
}

android {
  compileSdkVersion 25
  buildToolsVersion "25.0.2"

  defaultConfig {
    minSdkVersion 14
  }
}

因此,您需要使用从依赖项中排除来排除它:

dependencies {
  ...
  compile ('com.github.jetradarmobile:android-rxlocationsettings:1.1.0') {
    exclude group: "io.reactivex", name: "rxjava"
  }
  ...
}

或使用配置:

configurations.all {
    exclude group: "io.reactivex", module:"rxjava"
}

0
投票

只需在proguard-rules.pro中使用-dontwarn,如下所示

-dontwarn用。


0
投票

我遇到了类似的问题,在我的情况下,如果您发现任何与类引用相关的内容,我会检查日志中的警告,它表示您需要清理构建项目。

运行gradlew clean然后

gradlew build

或合并gradlew clean build

Build Failed

Warnings to look out for


0
投票

试试这个(这对我有用)

我也问过pro guard,但我发现github的代码更有用。

在proguard-rules.pro上添加此行

-dontoptimize
-dontpreverify

0
投票

唯一对我有用的是@Moti Bartov的answer

-ignorewarnings

proguard-rules.pro结束时

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