今天出现了一个Crash问题,Activity无法找到 ClassNotFoundException
解决办法:
通过代码回退,找到引起问题的代码。对代码进行回退。先解决项目问题。
紧接着分析这笔代码为什么会导致此问题
对代码进行分析,由于是公司代码不方便放上来。 代码是一个AXXViewMode,这笔代码本身没有涉及到Activity的修改。 代码修改的内容都是业务逻辑的代码。 业务代码为何会导致某个类找不到呢?这显然不科学。 对生成的APK进行反编译,看Activity是否存在。--代码中确实不存在这个class 可以确定这笔代码导致Activity无法生成。
此时要大胆猜测问题应该是由于编译导致 要看第三方编译插件 通过编译过程LOG分析
导致此问题的原因是组内同学写的编译插件存在缺陷
其实在之前也遇到过一个BUG,代码逻辑和LOG对不上的场景。最后导致的原因是编译插件导致。 那个问题分析更加隐蔽,好在编译插件插入代码中有LOG,编译插件和业务代码在同一个仓库维护,通过LOG关键字全局搜索找到的问题原因
工程总结:
- 项目中使用编译插件一定要谨慎,非必要不使用,大型项目人多手杂,更是要慎用
- 非用不可的编译插件,一定要有编译插件源码,对编译过程要有LOG输出。
- 自己组维护的编译插件最好也体现在项目中,采用Maven仓库方式维护编译插件要尽量用工作经验多的人
- 遇到ClassNotFoundException问题要大胆向编译插件方向分析