保护错误:"Exception while processing task java.io.IOException: Please correct the above warnings first"



自从升级到安卓 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

非常欢迎任何想法!

这是因为在您的依赖项中有多个不同版本的 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)

您可以看到,在您的应用程序中,有 2 个版本的 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"
}

唯一对我有用的是@Moti巴托夫的这个答案

-ignorewarnings

proguard-rules.pro结束时

要查看警告,请将选项-verbose添加到您的 proguard 文件中,并从 gradle 输出中 grep 警告:

./gradlew -i clean assemble<buildtype> | grep -i "warning"

其中构建类型可以是"发布"或你定义的任何其他包含 proguard 配置的构建类型。

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

-不要警告

我遇到了类似的问题,就我而言,如果您发现任何与类引用相关的警告,我会检查日志中的警告,这表明您需要清理构建项目。

运行gradlew clean后跟

格拉德卢构建

或组合gradlew clean build

构建失败

需要注意的警告

试试这个(这对我有用)

我也有专业卫士的问题,但我发现 git hub 的以下代码更有用。

在 proguard-rules.pro 上添加此行

-dontoptimize
-dontpreverify

Juste 在 proguard 中添加忽略警告:https://stackoverflow.com/a/59428966/7308789

相关内容

最新更新