Android Studio项目,公司主要的一个APP项目,还算庞大,有段时间没过问该项目,有需求要改,又来关注这项目代码,update代码到最新,android studio运行项目,就是run不起来啊,clean项目success,rebuild项目success,再run,就会报错,如下:
error::xxxxxx_trunk:transformClassesWithInstantRunForLeshiDebug FAILED
Error:Execution failed for task ‘:xxxxxx_trunk:transformClassesWithInstantRunForLeshiDebug’.
org.objectweb.asm.tree.analysis.AnalyzerException: Execution can fall off end of the code
Information:BUILD FAILED
网上查找各种方案,换gradle版本,升级sdk,sdk相关的tools,无数次的clean->rebuid->run.都没有成功。找同事帮忙,结果工作笔记本AndroidStudio环境瘫痪了,拿来自己的mac本开发,结果也是运行不起来。问了问同事用的jdk,他用的jdk1.8,而我的都是1.7,我在mac上装了jdk1.8,欢呼吧,能运行起来。于是猜测可能是jdk版本导致的问题,把自己的工作笔记本恢复系统,重装开发环境jdk1.8后,也装了1.7专门来实验下,果不其然,jdk1.7还是run的时候会报错,换回1.8就OK。
查了下错误中asm到底是啥玩意儿,大概是这样:
ASM是Java字节码生成开源框, 是一个 Java 字节码操控框架。它能够以二进制形式修改已有类或者动态生成类。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
解决方案:换成jdk1.8.clean项目->rebuild项目->run就成功了。