TaskExecutionException: Execution failed for task ':app:transformJackWithJackForDebug心路历程

参考:https://blog.csdn.net/wjj1996825/article/details/79838430

https://blog.csdn.net/qq_38250682/article/details/80546632

新建项目版本28出现的问题 

int sc = canvas.saveLayer(rf, null, Canvas.MATRIX_SAVE_FLAG
        | Canvas.CLIP_SAVE_FLAG | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG
        | Canvas.FULL_COLOR_LAYER_SAVE_FLAG
        | Canvas.CLIP_TO_LAYER_SAVE_FLAG | Canvas.ALL_SAVE_FLAG);

编译项目时Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG |报红,找不到,后面砍导入的包名也是正确的,但是发现一个是:

public class Canvas 另一个是:public class Canvas extends BaseCanvas(这个是正确的)

为什么会出现这种情况呢,一开始想的是导入的包名不正确,后面仔细检查一番,发现包名是相同的,这就很奇怪,为什么一个继承父类,一个却没有继承父类,这是为什么呢?后边各种百度,没有找到好的解决办法。在后边就开始百度这个错误:

TaskExecutionException:Execution failed for task 

':app:compileDebugJavaWithJavac'和

':app:transformJackWithJackForDebug'.

就发现了一片文章,作者为了这个错误给出了很好的显示错误的原因:在这很感谢这位作者,下面开始找错误原因:

      原来  app:compileDebugJavaWithJavac 造成的原因是java jdk 8 编译的方式和之前版本的编译方式变了,所以代码里面有语法错误或者类路径错误会导致编译不能通过而报出这个异常,这里简单讲下新版和旧版的jdk的编译方式的区别。

旧版 javac 工具链:
javac (.java –> .class) –> dx (.class –> .dex)
新版 Jack 工具链:
Jack (.java –> .jack –> .dex)
 

在命令行中进入项目的根目录,或者可以在Android studio的Terminal中直接操作也可以,然后敲入一个命令:

gradlew compileDebug --stacktrace -info  
或者:

gradlew compileDebug --stacktrace -debug 


  我直接用了这个命令,这个显示的错误信息最详细,建议你直接用这个

gradlew compileDebugSources --stacktrace -info  
-debug的命令我也试了,显示的非常多,但不像-info一样显示错误提示的信息非常详细,你可以两个都尝试一下。
这样总算是找出原因来了,说是Android studio 3+的原因,于是有了这篇文章:

一、安装完成后,项目遇到Gradle build running下载某个gradle版本,一直在运行甚至卡死的情况,解决方法:
1、方法一:
找到路径 
C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4-all\9br9xq1tocpiv8o6njlyu5op1,在此文件夹下有一个gradle版本文件夹,打开后是一个名字很长的文件夹,例如我的是 
(1)下载相对应版本的gradle,将下载的压缩包直接放进名字很长的文件夹中,并解压 
(2)将gradle-4.4-all.zip.pat删掉 
(3)保留或新建gradle-4.4-all.zip.lck文件 
(4)新建gradle-4.4-all.zip.ok文件(很重要) 
重启Android Studio即可 


2、方法二(常见,经常出现在第一次运行)
1)进入刚安装的Android Studio目录下的bin目录。找到idea.properties文件,用文本编辑器打开。 
2)在idea.properties文件末尾添加一行: disable.android.first.run=true ,然后保存文件。 
3)关闭Android Studio后重新启动,便可进入界面。
 

试过了,并不是很管用,看来还不是这个问题,接下来又试了这个命令:gradlew compileDebugSources

然后错误信息显示 

androidstudio编译程序时出现java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor version 52.0。
Unsupported major.minor version 52.

这就很清楚了

这个错误是由于(jdk)高版本的java project使用了低版本的来运行。使用命令(java -version 和 javac -version)查看java的版本和javac的版本是否一致,我之前Java版本是jdk8(androidstudio里面指定的jdk8),javac版本是jdk7(环境变量里面指定的jdk7),由于版本不一致导致之前的错误。
解决办法就是修改环境变量,修改成androidstudio指定的jdk版本

 于是我又修改成27的版本,经测试好了。折腾了两个小时的错误,其实到头来就是版本不一致导致的,再次记下这个错误,有时间在研究一下高版本的使用canvas怎么使用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值