【Android】Android应用程序构建原理
来源:互联网 发布:吸血鬼学院知乎 编辑:程序博客网 时间:2024/06/01 07:11
- Android应用程序会通过一个工具将应用所有的CLASS文件转换成一个DEX文件,而后Dalvik虚拟机会从其中读取指令和数据。
Android 是Google开发的基于Linux平台的开源手机操作系统,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行,这个系统发布后大大的方便了用户的需求。
每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理。Mutex等等都是依赖底层操作系统而实现的。所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。
不同的应用在不同的进程空间里运行,加之对不同来源的应用都使用不同的Linux用户来运行,可以最大程度的保护应用的安全和独立运行。Zygote是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,每当系统要求执行一个Android应用程序,Zygote就会FORK出一个子进程来执行该应用程序。
这样做的好处显而易见:Zygote进程是在系统启动时产生的,它会完成虚拟机的初始化,库的加载,预置类库的加载和初始化等等操作,而在系统需要一个新的虚拟机实例时。Zygote通过复制自身,最快速的提供个系统。另外,对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域,大大节省了内存开销。
应用程序包(APK)被发布到手机上后,运行前会对其中的DEX文件进行优化,优化后的文件被保存到缓存区域(优化后的格式被称为DEY),虚拟机会直接执行该文件。如果应用包文件不发生变化,DEY文件不会被重新生成。
Android应用程序所使用的编程语言是Java语言,和Java SE一样,编译时使用Sun JDK将Java源程序编程成标准的Java字节码文件(.class文件)。而后通过工具软件DX把所有的字节码文件转成DEX文件(classes.dex)。
最后使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行。
- 【Android】Android应用程序构建原理
- Android应用程序四个构建模块
- 使用组件构建Android应用程序
- 如何构建Android MVVM应用程序
- Android应用程序组建原理
- Android Studio构建工具Gradle构建原理
- Android应用程序运行原理(部分)
- android应用程序运行原理-04
- Android应用程序安装原理小结
- Android应用程序中有四个构建块
- Android构建Web应用程序中的WebView
- 使用 Eclipse PhoneGap 构建 Android 应用程序入门
- 使用 Eclipse PhoneGap 构建 Android 应用程序入门
- Android在WebView上构建Web应用程序
- Android应用程序(APK)的构建过程
- 构建Android缓存模块(原理分析)
- android应用程序的安装方式与原理
- Android应用程序基础及原理概要
- 第8周项目4-(2)求个人所得税—switch语句
- Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER
- iOS 将你的项目本地化
- ActvityGroup有多个Activity处理返回退出
- Tsql 匹配数字、网址方法的clr实现
- 【Android】Android应用程序构建原理
- Handler和HandlerThread
- 使用定时器来备份数据库
- iOS基础控件-导航栏控制器UINavigationController的UINavigationBar导航条
- android 音频系统用到的命令记录
- TEST
- ASP.NET MVC 4 中移动开发的新功能
- Cocos2d-X 学习笔记 13 cocos2dx骨骼动画
- 函数参数的传递问题(指针的指针)(转)