web-dev-qa-db-ja.com

エラー:タスク ':Android:transformClassesAndResourcesWithProguardForRelease'の実行に失敗しました

プロジェクトの実行中にこのエラーが発生するたびに。 Cleanを実行してからRunを実行すると、動作します。しかし、それは最適な解決策ではありません。何か案は?

Error:Execution failed for task ':Android:transformClassesAndResourcesWithProguardForRelease'.

Java.io.IOException:Android\build\intermediates\transforms\proguard\release\folders\3\1f\main\classes.jarの名前をAndroid\build\intermediates\transforms\proguard\release\jars\3\1fに変更できませんでした\ classes.jar

49
Z0q

このバグは、SDK、ビルドツール、Gradleプラグインのバージョンが(互換性の点で)一致しない場合に発生します。解決策は、最新バージョンを使用しているかどうかを確認することです。 gradleプラグインは、プロジェクトのbuild.gradleファイルに配置されます。他のバージョンは、モジュールのbuild.gradleファイルにあります。 exampleの場合、SDK 23の場合、ビルドツール23.0.1およびgradleプラグインバージョン1.3.1。

設定を変更した後、プロジェクトをクリーンアップします。 (私の問題を解決し、二度と見たことがない。)

この質問を参照

40
Blue_Alien

以下を含む行をproguard-rules.txtから削除します。

-injars-outjars、または-libraryjars

再構築します。

4
user1367713

リリース構成からminifyEnabled trueを削除するとうまくいきました。

0
Sabri Meviş

これを試してください:proguard-rules.proに追加してください

-keepattributes EnclosingMethod

私の場合、Gradleが署名付きapkを生成するために使用したProguardバージョンをダウングレードすることで問題が修正されました。このブロックをプロジェクトレベルのbuild.gradleファイル内に配置すると、ダウングレードできます。 buildscriptブロックに配置します。

configurations.all {
    resolutionStrategy {
        force 'net.sf.proguard:proguard-gradle:5.2.1'
    }
}

プロジェクトのルートフォルダーで次のコマンドを実行すると、Proguardの現在のバージョンを確認できます。

./gradlew buildEnvironment | grep proguard

これは、他の人が私が抱えていた問題を見つけるのに役立つProguardスタックトレースの一部です。

Caused by: Java.io.IOException: Java.lang.NullPointerException
at com.Android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.Java:283)
at com.Android.build.gradle.internal.transforms.ProGuardTransform.access$000(ProGuardTransform.Java:63)
at com.Android.build.gradle.internal.transforms.ProGuardTransform$1.run(ProGuardTransform.Java:173)
at com.Android.builder.tasks.Job.runTask(Job.Java:48)
at com.Android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.Java:41)
at com.Android.builder.tasks.WorkQueue.run(WorkQueue.Java:225)
Caused by: Java.lang.NullPointerException
at proguard.optimize.info.NonEmptyStackReturnMarker.setReturnsWithNonEmptyStack(NonEmptyStackReturnMarker.Java:102)
at proguard.optimize.info.NonEmptyStackReturnMarker.markReturnWithNonEmptyStack(NonEmptyStackReturnMarker.Java:95)
at proguard.optimize.info.NonEmptyStackReturnMarker.visitSimpleInstruction(NonEmptyStackReturnMarker.Java:76)
...
at proguard.optimize.Optimizer.execute(Optimizer.Java:649)
at proguard.ProGuard.optimize(ProGuard.Java:328)
at proguard.ProGuard.execute(ProGuard.Java:127)
at com.Android.build.gradle.internal.transforms.BaseProguardAction.runProguard(BaseProguardAction.Java:54)
at com.Android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.Java:254)
... 5 more
0
Shumoapp

私の場合、それらを追加した後はokhttpプロガードルールでした

#OKhttp RULES START
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**
#OKhttp RULES END

#picasso rules START
-dontwarn com.squareup.okhttp.**
#picasso rules END
0
Mateen Chaudhry