,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文件
博客地址:https://blog.csdn.net/CrackgmKey/article/details/100983398
介绍了如何将android工程打包生成apk文件以便发布
这时你会想:如果有某种工具能针对不同的渠道批量生成apk就好了。这个时候就要求你去写个打包工具了,在这里有三种方法:1.用编译脚本build.xml,2.java调用ant,3.bat批处理文件(也是调用ant)
As Realse版打包生成apk
Eclipse 生成android程序apk文件
eclipse下将android项目生成apk.docx
android myeclipse 将java 程序 生成APK 发布
Android Studio中生成APK文件方法 apk文件就是一个包,打包就是把代码生成apk文件,别人通过apk包进行安装。 打包分debug版和release包,release版的apk会比debug版的小, release版可以防止别人反编译后重新打包...
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格式的手机软件,简单方便,代码简易,容易看懂,修改方便,不是最好的,只是最方便的,提供给各位,好的话动动你的小手指粉上...