Error:Execution failed for task ':android:transformClassesAndResourcesWithProguardForRelease'
Error:Execution failed for task ':android:transformClassesAndResourcesWithProguardForRelease'
每次我在 运行 我的项目中遇到这个错误。我可以先执行 Clean,然后再执行 运行,这样就可以了。但这不是最佳解决方案。有什么想法吗?
Error:Execution failed for task ':android:transformClassesAndResourcesWithProguardForRelease'.
java.io.IOException: Failed to rename android\build\intermediates\transforms\proguard\release\foldersf\main\classes.jar to android\build\intermediates\transforms\proguard\release\jarsf\classes.jar
当 SDK、构建工具和 Gradle 插件的版本不匹配时(在兼容性方面),就会发生此错误。解决方案是验证您是否正在使用它们的最新版本。 gradle 插件放在项目的 build.gradle 文件中。其他版本在模块的 build.gradle 文件中。对于 示例,对于 SDK 23,您必须使用 Build Tools 23.0.1 和 gradle 插件版本 1.3.1.
更改设置后清理项目。 (解决了我的问题,再也没见过。)
从 proguard-rules.txt 中删除包含以下内容的行:
-injars
、-outjars
或 -libraryjars
并重建。
在我的例子中,通过降级 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[=12=]0(ProGuardTransform.java:63)
at com.android.build.gradle.internal.transforms.ProGuardTransform.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
修改minifyEnabled为false即可。
参考这个
你应该试试这个:添加 proguard-rules.pro
-keepattributes EnclosingMethod
在我的例子中,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
从发布配置中删除 minifyEnabled true
对我有用。
每次我在 运行 我的项目中遇到这个错误。我可以先执行 Clean,然后再执行 运行,这样就可以了。但这不是最佳解决方案。有什么想法吗?
Error:Execution failed for task ':android:transformClassesAndResourcesWithProguardForRelease'.
java.io.IOException: Failed to rename android\build\intermediates\transforms\proguard\release\foldersf\main\classes.jar to android\build\intermediates\transforms\proguard\release\jarsf\classes.jar
当 SDK、构建工具和 Gradle 插件的版本不匹配时(在兼容性方面),就会发生此错误。解决方案是验证您是否正在使用它们的最新版本。 gradle 插件放在项目的 build.gradle 文件中。其他版本在模块的 build.gradle 文件中。对于 示例,对于 SDK 23,您必须使用 Build Tools 23.0.1 和 gradle 插件版本 1.3.1.
更改设置后清理项目。 (解决了我的问题,再也没见过。)
从 proguard-rules.txt 中删除包含以下内容的行:
-injars
、-outjars
或 -libraryjars
并重建。
在我的例子中,通过降级 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[=12=]0(ProGuardTransform.java:63)
at com.android.build.gradle.internal.transforms.ProGuardTransform.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
修改minifyEnabled为false即可。
参考这个
你应该试试这个:添加 proguard-rules.pro
-keepattributes EnclosingMethod
在我的例子中,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
从发布配置中删除 minifyEnabled true
对我有用。