前几天在编译Android6.0系统的时候,报了一个ERROR: Security problem, see Jack server log的错误,
(解决方法可以参照我另外一篇blog,下面给出传送门:)
就顺便查了一些资料,简单了解了一下Jack并总结如下:
介绍Jack之前,我们先了解一下在Jack未诞生之前我们使用的Javac和dx工具:
对于Java(非Android)应用,我们只需要Java编译器(javac)。它可以编译Java源码并生成Java二进制码(*.class文件)。Java二进制码可通过常规的在你机器上运行的JVM执行。
问题是,在Android设备上,我们使用非标准的JVM。我们使用了修改版本,该版本高度又花了手机环境。例如JVM被称为Dalvik(或者ART在更加高效的L+设备上)。
因为修改了JVM,Java二进制码也需要修改,使得Dalvik可执行。这是dx工具的职责 - 它收到Java二进制码(.class文件),并转换成Android二进制文件(*.dx文件)。
值得一提是工程中包含第三方库时 - jar(或者aar)形式 -相反不需要处理,第三方库只是*.class文件的压缩集合。因此第三方库直接输入给dx工具,因为我们不需要编译它。