,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)。应用程序包可以被发布到手机上运行。
分享到:
相关推荐
cordova打包项目android生成apk签名.txt
android生成apk的全过程,eddcec.
Android生成.apk的全过程,主要给开发者讲述,在ide开发环境里,如何生成.apk的文件,这是Android软件开发工程师必须要了解的内容。
Visual Studio中用Xamarin开发Android应用,生成apk文件
Eclipse 生成 Android 程序 APK 文件 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE),它提供了各种插件和工具来支持 Android 应用程序的开发。在 Android 应用程序开发过程中,生成 APK 文件是一个非常...
博客地址:https://blog.csdn.net/CrackgmKey/article/details/100983398
Android Studio中生成APK文件方法 apk文件就是一个包,打包就是把代码生成apk文件,别人通过apk包进行安装。 打包分debug版和release包,release版的apk会比debug版的小, release版可以防止别人反编译后重新打包...
介绍了如何将android工程打包生成apk文件以便发布
这时你会想:如果有某种工具能针对不同的渠道批量生成apk就好了。这个时候就要求你去写个打包工具了,在这里有三种方法:1.用编译脚本build.xml,2.java调用ant,3.bat批处理文件(也是调用ant)
As Realse版打包生成apk
eclipse下将android项目生成apk.docx
android myeclipse 将java 程序 生成APK 发布
android 安卓app编译生成APK的过程解析.如何将第三方so文件打包进apk中 1.生成R.java文件 2.编译aidl文件,包括java静态库 3.编译java源文件 4.将jar包装换为dex文件 ...
Android App Bundle (.aab) 是一个包含你的应用所有版本的分发格式,它不能直接生成 APK。你需要通过命令行使用 BundleTool 来从 .aab 生成 APK: 命令行: java -jar C:\Users\qwe\Desktop\bundletool\bundletool-...
android 打包aab文件转化为apk安装包
Eclipse生成android程序apk文件汇编.pdf
The Open Event Android project consists of two components. The App Generator is a web application that is hosted on a server and generates an event Android app from a zip with JSON and binary files ...
本篇文章是对在eclipse中将android项目生成apk并且给apk签名的实现方法进行了详细的分析介绍,需要的朋友参考下
Eclipse 生成android程序apk文件.pdf
web网站制作android手机apk项目源码实例 简单的将一个web网站制作成一个android手机apk格式的手机软件,简单方便,代码简易,容易看懂,修改方便,不是最好的,只是最方便的,提供给各位,好的话动动你的小手指粉上...