因为近期的工作接触了许多 android 工具链的东西,所以我们就来介绍下 APK 这个耳熟能详的文件。首先,我们先看看如何使用 Dex 文件在手机终端上输出一个 HelloWorld
编译和运行工具
学习过 Android 的人一定知道,在 Android OS 上跑的虚拟机曾经叫 dalvik,现在叫 ART (Android Runtime),为了方便,下文不再区分两者差别,暂时统称 dalvik。如果把 dalvik 当作一个黑盒,无视细节,我们就能拿他和 jvm 进行类比。那么,在学习 java 语言之初,使用 IDE 进行 java 开发之前,我们一定知道有两个二进制文件叫做 javac 和 java,一个是将 xxx.java 源代码编译成 xxx.class 字节码,一个是启动虚拟机加载运行字节码。那么在 Android 中,dx 类似 javac,但是它的输入不是 java 源代码,而是 class 字节码,输出是大名鼎鼎的dex文件,今天我们不探讨dex和class文件的区别,我们只要知道,把class文件和dex文件分别指向给不同的二进制做输入,就可以执行里面的逻辑。jvm 里面运行class的是java,那么 Android 里面运行dex的二进制文件,是dalvikvm
> adb shell
> dalvikvm -version
一如既往令人讨厌的单横杠
我的手机是一台运行 Android 9 的手机,输出的结果是:> ART version 2.1.0 arm64
如果我们在 jvm 的环境下,运行
> java -version