我跑项目时,每当我得到这个错误。我可以做一个干净,然后再次运行,和它的作品。但它不是一个最佳的解决方案。有任何想法吗?
Error:Execution failed for task ':android:transformClassesAndResourcesWithProguardForRelease'.
java.io.IOException的:无法重命名机器人\构建\中间体\变换\ proguard的\释放\文件夹\ 3 \ 1F \主\ classes.jar到Android \构建\中间体\变换\ proguard的\释放\罐子\ 3 \ 1F \ classes.jar
这个错误发生在SDK的版本,编译工具和摇篮插件不匹配(在兼容性方面)。解决的办法是验证,如果你使用的是他们的最新版本。该插件的gradle被放置在项目的build.gradle文件。其他版本的模块的build.gradle文件。例如,对于SDK 23,你必须使用生成工具23.0.1和gradle这个插件版本1.3.1。
清洁更改设置后,该项目。 (解决我的问题,从来没有看过一遍了。)
卸下包含proguard的-rules.txt线:
-injars
,-outjars
,或-libraryjars
和重建。
在我的情况下,将它们添加它能正常工作后,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
在我的情况下,问题被固定在降级使用的摇篮生成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
你应该试试这个:加入proguard-rules.pro
-keepattributes EnclosingMethod
从发布的配置中删除minifyEnabled true
为我工作。
当你修改minifyEnabled为false时的作品。
请参阅本Android Studio Signed APK ':app:transformClassesAndResourcesWithProguardForRelease'