#java2smali 来自四哥的java转smali代码工具,不过由于我自己的环境不同,做了些修改。
我的机子系统是Ubuntu16.04,java使用的jdk是1.8.165 因此跑这个工具的时候遇到三个问题: 一个是跑起来的时候无论没有任何对错日志信息,并不是因为函数的输出日志没开,而是因为不知道为什么,所有输出都跑到文件的错误流里面去了,因此在utils工具类里面增加了错误流的输出。 另一个问题是调用dx.jar 将class转换为dex是报UNEXPECTED TOP-LEVEL EXCEPTION,搜了下是由于机器版本的jdk和dx编译的jdk版本不一致,因此从自己的机子里面的找到了android studio所使用的dx.jar替换上即可。 最后一个问题是在编译成class的时候提示找不到java文件,但是将指令复制到命令行里是可以的,最后发现是因为指令使用了*通配符,好像rumtime.exec直接使用单行命令会不识别通配符,因此也作了另外的处理解决。