错误:执行失败的任务“:机器人:transformClassesAndResourcesWithProguardForRelease”

问题描述 投票:47回答:6

我跑项目时,每当我得到这个错误。我可以做一个干净,然后再次运行,和它的作品。但它不是一个最佳的解决方案。有任何想法吗?

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

java.io.IOException的:无法重命名机器人\构建\中间体\变换\ proguard的\释放\文件夹\ 3 \ 1F \主\ classes.jar到Android \构建\中间体\变换\ proguard的\释放\罐子\ 3 \ 1F \ classes.jar

android build android-gradle android-proguard
6个回答
40
投票

这个错误发生在SDK的版本,编译工具和摇篮插件不匹配(在兼容性方面)。解决的办法是验证,如果你使用的是他们的最新版本。该插件的gradle被放置在项目的build.gradle文件。其他版本的模块的build.gradle文件。例如,对于SDK 23,你必须使用生成工具23.0.1和gradle这个插件版本1.3.1。

清洁更改设置后,该项目。 (解决我的问题,从来没有看过一遍了。)

refer this question


4
投票

卸下包含proguard的-rules.txt线:

-injars-outjars,或-libraryjars

和重建。


1
投票

在我的情况下,将它们添加它能正常工作后,okhttp proguard的规则

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

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

0
投票

在我的情况下,问题被固定在降级使用的摇篮生成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
投票

你应该试试这个:加入proguard-rules.pro

-keepattributes EnclosingMethod

0
投票

从发布的配置中删除minifyEnabled true为我工作。


-5
投票

当你修改minifyEnabled为false时的作品。

请参阅本Android Studio Signed APK ':app:transformClassesAndResourcesWithProguardForRelease'

© www.soinside.com 2019 - 2024. All rights reserved.