自从升级到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
非常欢迎任何想法!
答案 0 :(得分: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有2个版本: 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
}
}
因此,您需要使用exclude from dependency:
将其排除dependencies {
...
compile ('com.github.jetradarmobile:android-rxlocationsettings:1.1.0') {
exclude group: "io.reactivex", name: "rxjava"
}
...
}
或使用配置:
configurations.all {
exclude group: "io.reactivex", module:"rxjava"
}
答案 1 :(得分:0)
仅在如下所示的proguard-rules.pro中使用-dontwarn
-dontwarn com。
答案 2 :(得分:0)
我有一个类似的问题,就我而言,如果您发现与类引用相关的任何内容,我都会检查日志中是否存在警告,这表明您需要清除构建项目。
先运行gradlew clean
,然后再
gradlew构建
或组合的gradlew clean build
答案 3 :(得分:0)
尝试(对我有用)
我也遇到了专业后卫问题,但是我发现从git hub获得的以下代码更有用。
将此行添加到proguard-rules.pro
-dontoptimize
-dontpreverify
答案 4 :(得分:0)
答案 5 :(得分:0)
Juste在proguard中添加了忽略警告:https://stackoverflow.com/a/59428966/7308789