1. *.apk文件

APK是Android Package的缩写,即Android安装包。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。

使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件组合成一个应用程序包(APK)。Dex是Dalvik VM executes的全称,即Android Dalvik执行程序。

  • META-INF\ Jar文件
  • res\ 存放资源文件
  • AndroidManifest.xml 应用全局配置文件
  • *.dex Dalvik虚拟机字节码(应用程序)
  • resources.arsc 编译后的二进制资源文件

Android在运行程序时首先需要解压apk文件,然后获取编译后的androidmanifest.xml文件中配置信息,执行dex程序。

2..dex文件

Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,通常执行时都进行优化 。优化后的文件大小会有所增加。 优化发生的时机有两个:对于预置应用,可以在系统编译后,生成优化文件,以ODEX结尾。这样在发布时除APK文件(不包含DEX)以外,还有一个相应的Android DEX文件;对于非预置应用,包含在APK文件里的DEX文件会在运行时被优化,优化后的文件将被保存在缓存中。

Zygote是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,每当系统要求执行一个 Android应用程序,Zygote就会FORK出一个子进程来执行该应用程序。这样做的好处显而易见:Zygote进程是在系统启动时产生的,它会完成虚拟机的初始化,库的加载,预置类库的加载和初始化等等操作,而在系统需要一个新的虚拟机实例时。

Zygote通过复制自身,最快速的提供个系统。另外,对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域,大大节省了内存开销。

from:http://blog.chinaunix.net/uid-24439730-id-355883.html

更多相关文章

  1. Android(安卓)Studio 各种异常处理
  2. Android:SQLiteOpenHelper,SqliteDatabase学习
  3. 利用busybox制作android下的ramdisk启动盘
  4. android studio 打包报 MissingTranslation 的 3种解决方式
  5. JobService的使用介绍
  6. Android(安卓)混淆代码总结 和 Android(安卓)APK反编译(最新更新
  7. Android(安卓)UI高级控件之SimpleAdapter
  8. Android(安卓)Jetpack - 使用 WorkManager 管理后台任务
  9. Android的线程和线程池(一)

随机推荐

  1. android:stretchColumns与 android:scrol
  2. Android移植注意点
  3. Android触摸事件分发
  4. Android(安卓)如何在xmL 里面动态设置pad
  5. Android入门第十六篇之Style与Theme
  6. Android(安卓)- 主要的UI元素
  7. xamarin Android(安卓)activity生命周期
  8. Android数字签名
  9. Android中巧妙的位运算
  10. Android(安卓)人脸识别+人脸匹配(OpenCV+