程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

运行Android应用的“艺术”(运行android程序)

balukai 2025-01-23 15:10:34 文章精选 19 ℃

我们知道Android本身是一个Linux操作系统,其应用程序(Apps)大多使用Java语言编写,而Java语言本身是一种解释型语言,在以前的推送中,我介绍过,Java源程序经过javac命令编译后能得到字节码,字节码可以被JVM解释执行,JVM所解释的字节码其实是一种“汇编语言”。

一、Android中的应用程序

Android Apps既然采用Java语言进行编写,其源代码也必然是需要经过“编译成字节码”和“解释执行”两个阶段才能使Apps跑起来。

Android Apps 的Java源代码在一个特定的项目构建工具的帮助下进行编译,得到一些“只能在Android上解释运行的字节码”。

Android中每一个App都是一个单独的APK文件,即“Android应用包”,它类似于Java的可执行JAR文件

每个APK文件包含了“只能在Android上解释运行的字节码”“运行相关库”“应用相关资源”等内容。

二、什么是“艺术”(ART)?

Android通常用于使用电池的移动设备,也就是说Android Apps的运行环境注定受到了功耗、内存等方面的限制

每一个传统的Java应用运行时都需要一个单独的JVM进程,因此会占用大量的内存

Android使用一种方案解决了这个问题。在Android中,它并不使用JVM来运行应用,而采用了一种完全不同的虚拟机,叫作Android运行时(Android Runtime,即ART) (Android 4.4以前使用Dalvik虚拟机)。


三、只能在Android上解释运行的字节码

因为实际的Android应用在ART中运行,而非JVM,所以Android使用了一种格式为DEX而非class的字节码

你可以用带有特定的项目构建工具的编译程序编译Android程序的Java源代码,这些源代码最终会形成适用于ART的高效、简短的DEX字节码

ART可以把DEX字节码解释成为不同设备能识别的机器语言,直接在设备的CPU上运行。

因此,Android Apps可以跨设备运行。

最近发表
标签列表