web-dev-qa-db-ja.com

Proguardエラー:「タスクJava.io.IOExceptionの処理中に例外が発生しました:最初に上記の警告を修正してください」

Android gradle plugin 3.0.1にアップグレードしてから、次のエラーが表示されます。

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

:app:transformClassesAndResourcesWithProguardForProductionReleaseが失敗しました

問題は、ログに警告が表示されないことです。

また、-iフラグを使用してビルドを実行し、次の(大きな)ログを取得しています: https://Gist.github.com/stoefln/b5e5e899c73b52d8065a5daeead716b

どんなアイデアでも大歓迎です!

7
stoefln

これは、依存関係に、バージョンが異なる複数の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

依存関係の1つである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"
}

私のために働いた唯一のものはこれでした answer by @Moti Bartov

-ignorewarnings

の終わりに proguard-rules.pro

1
Alberto M

私は同様の問題を抱えていました。私の場合、クラス参照に関連するものを見つけた場合、ログで警告をチェックしました。プロジェクトをクリーンビルドする必要があることを示しています。

実行gradlew clean に続く

gradlew build

または結合gradlew clean build

ビルド失敗

注意すべき警告

0
Sfiso Collen

これを試してください(それは私のために働いています)

私はプロガードにも問題がありますが、gitハブの次のコードがより便利であることがわかりました。

この行をproguard-rules.proに追加します

-dontoptimize
-dontpreverify
0

以下のようにproguard-rules.proで-dontwarnを使用するだけです

-dontwarn com。