,Dalvik虚拟机也第一次进入了人们的视野。它对内存的高效使用,和在低速CPU上表现出的高性能,确实令人刮目相看。依赖于底层Posix兼容的操作系统,它可以简单的完成进程隔离和线程管理。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
很多人认为Dalvik虚拟机是一个Java虚拟机,因为Android的编程语言恰恰就是Java语言。但是这种说法并不准确,因为Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者并不兼容;同时还要两个明显的不同:
* Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式DEX(Dalvik Executable)。
* 在Java SE程序中的Java类会被编译成一个或者多个字节码文件(.class)然后打包到JAR文件,而后Java虚拟机会从相应的CLASS文件和JAR文件中获取相应的字节码;Android应用虽然也是使用Java语言进行编程,但是在编译成CLASS文件后,还会通过一个工具(dx)将应用所有的 CLASS文件转换成一个DEX文件,而后Dalvik虚拟机会从其中读取指令和数据。
每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。
不同的应用在不同的进程空间里运行,加之对不同来源的应用都使用不同的Linux用户来运行,可以最大程度的保护应用的安全和独立运行。
DEX是Dalvik虚拟机专用的文件格式,而问什么弃用已有的字节码文件(CLASS文件)而采用新的格式呢?
1.一个应用中会定义很多类,编译完成后即会有很多相应的CLASS文件,CLASS文件间会有不少冗余的信息;而DEX文件格式会把所有的CLASS文件内容整合到一个文件中。这样,除了减少整体的文件尺寸,I/O操作,也提高了类的查找速度。
如何生成DEX文件呢?Android系统和Dalvik虚拟机提供了工具(DX),在把Java源代码编译成CLASS文件后,使用DX工具。
Android应用开发和Dalvik虚拟机Android应用所使用的编程语言是Java语言,和Java SE一样,编译时使用Sun JDK将Java源程序编程成标准的Java字节码文件(.class文件),而后通过工具软件DX把所有的字节码文件转成DEX文件(classes.dex)。最后使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行。
分享到:
相关推荐
以下详细说明了 Android 生成 APK 文件的全过程,以及一些重要的开发概念。 ### Android SDK 环境配置 首先,要开发 Android 应用,必须配置 Android SDK(Software Development Kit)。SDK 包括了一整套用于开发 ...
Android生成apk项目源码.zip
在Android开发过程中,生成APK文件是将应用发布到用户设备前的重要步骤。APK(Android Package)是Android操作系统上应用程序的安装包,类似于Windows上的.exe文件。下面将详细介绍如何在Android环境中生成APK文件。...
Android 打包生成 APK 文件 Android 打包生成 APK 文件是 Android 应用程序开发的最后一步骤,也是将 Android 项目文件转换为可在 Android 设备上运行的 APK 文件的过程。本文将详细介绍如何将 Eclipse Android ...
执行构建命令后,Cordova会自动使用指定的密钥库对生成的APK文件进行签名,并将其放置在项目的`platforms/android/app/build/outputs/apk/release`目录下。生成的已签名APK文件可以直接分发到各种渠道,或上传至...
Visual Studio中用Xamarin开发Android应用,生成apk文件
在Android应用开发过程中,生成APK包是必不可少的步骤,然而有时我们可能会遇到一些报错,比如"元素类型'item'相关联的name属性值不能包含字符"这样的问题。这个问题通常发生在AndroidManifest.xml或者资源文件(如...
Eclipse 生成 Android 程序 APK 文件 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE),它提供了各种插件和工具来支持 Android 应用程序的开发。在 Android 应用程序开发过程中,生成 APK 文件是一个非常...
《Android应用签名详解——以Gen_Signature_Android.apk为例》 在移动应用开发领域,尤其是Android系统中,应用的签名是确保软件安全性和完整性的关键环节。本篇文章将详细探讨Android应用签名的重要性、原理以及...
微信签名工具,即`Gen-Signature-android.apk`,是一个专为开发者设计的工具,用于生成和管理Android应用的签名文件。这个工具可以帮助开发者对他们的APK进行签名,以确保其能够在用户的设备上正常安装和运行。由于...
【Android Studio打包生成APK教程】 在Android应用开发过程中,将项目转化为可供用户下载和安装的APK(Android Package)文件是最终阶段的关键步骤。Android Studio作为官方推荐的集成开发环境,提供了简单而高效的...
Android Studio中生成APK文件方法 apk文件就是一个包,打包就是把代码生成apk文件,别人通过apk包进行安装。 打包分debug版和release包,release版的apk会比debug版的小, release版可以防止别人反编译后重新打包...
使用Eclipse生成Android程序APK文件的过程需要遵循一定的步骤,包括准备工作、生成签名应用包、创建私钥文件和生成APK签名包等步骤。遵循这些步骤,可以确保生成的APK文件是安全、可靠和正确的。
Eclipse 生成 Android 程序 APK 文件 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE),其不仅可以用于开发 Java 项目,还可以用于开发 Android 应用程序。Android 应用程序的打包过程中,需要将源代码编译...
在Android系统中,APK签名是一个至关重要的过程,它确保了应用的完整性和开发者身份的验证。在Android 10中,这个过程没有本质的变化,但随着系统的更新,签名文件的作用和安全要求更加严格。本篇文章将深入探讨...
### Android Studio 打包 APK 超详细指南 #### 一、引言 在移动应用开发过程中,将应用打包成可发布的格式是非常重要的一步。对于Android应用开发者来说,使用Android Studio进行APK(Android Package Kit)打包是...
本教程将详细讲解如何利用Visual C++ 6.0(简称VC6.0)调用Android相关的命令行工具来生成APK文件,并进行混淆处理,以实现一步到位的自动化构建过程。 首先,你需要确保已经安装了Android SDK,因为它是生成APK的...
Android Studio 生成 APK 文件时的 Key Store Path 问题解析 在 Android 应用程序开发中,生成 APK 文件是一个非常重要的步骤,而在生成 APK 文件时,Key Store Path 的问题经常会让开发者感到困惑。今天,我们将...
"Android APK 文件生成的常见操作和问题" Android APK 文件生成是 Android 应用程序的最后一步骤,生成的 APK 文件可以安装在 Android 设备上。然而,在生成 APK 文件的过程中,会遇到一些常见的问题和操作。本文将...
eclipse下将android项目生成apk.docx