プロジェクトの実行中にこのエラーが発生するたびに。 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
このバグは、SDK、ビルドツール、Gradleプラグインのバージョンが(互換性の点で)一致しない場合に発生します。解決策は、最新バージョンを使用しているかどうかを確認することです。 gradleプラグインは、プロジェクトのbuild.gradleファイルに配置されます。他のバージョンは、モジュールのbuild.gradleファイルにあります。 exampleの場合、SDK 23の場合、ビルドツール23.0.1およびgradleプラグインバージョン1.3.1。
設定を変更した後、プロジェクトをクリーンアップします。 (私の問題を解決し、二度と見たことがない。)
以下を含む行をproguard-rules.txtから削除します。
-injars
、-outjars
、または-libraryjars
再構築します。
リリース構成からminifyEnabled true
を削除するとうまくいきました。
これを試してください: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
私の場合、それらを追加した後はokhttpプロガードルールでした
#OKhttp RULES START
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**
#OKhttp RULES END
#picasso rules START
-dontwarn com.squareup.okhttp.**
#picasso rules END