对于Android DEX文件进行优化,需要注意的一点是DEX文件的结构是紧凑的,但是我们还是要想方设法的进行提高程序的运行速度,我们就仍然需要对DEX文件进行进一步优化。

调整所有字段的字节序(LITTLE_ENDIAN)和对齐结构中的没一个域 验证DEX文件中的所有类 对一些特定的类进行优化,对方法里的操作码进行优化 。优化后的文件大小会有所增加,应该是原Android DEX文件的1-4倍。 优化发生的时机有两个:对于预置应用,可以在系统编译后,生成优化文件,以ODEX结尾。

这样在发布时除APK文件(不包含DEX)以外,还有一个相应的Android DEX文件;对于非预置应用,包含在APK文件里的DEX文件会在运行时被优化,优化后的文件将被保存在缓存中。

每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。

所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。

不同的应用在不同的进程空间里运行,加之对不同来源的应用都使用不同的Linux用户来运行,可以最大程度的保护应用的安全和独立运行。

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

Zygote通过复制自身,最快速的提供个系统。另外,对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域,大大节省了内存开销。Android应用开发和Dalvik虚拟机Android应用所使用的编程语言是Java语言,和Java SE一样,编译时使用Sun JDK将Java源程序编程成标准的Java字节码文件(.class文件)。

而后通过工具软件DX把所有的字节码文件转成Android DEX文件(classes.dex)。最后使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行。

【编辑推荐】

android .dex文件,对于Android DEX文件详细说明相关推荐

  1. Android中的ClassLoader与dex文件加密实现分析

    Android中的ClassLoader BaseDexClassLoader Dex类加载器的基类,包含Dex类加载器之间通用功能的实现. DexClassLoader A class loader ...

  2. 【Android 热修复】热修复原理 ( 修复包 Dex 文件准备 | Dex 优化为 Odex | Dex 文件拷贝 | 源码资源 )

    文章目录 一.修复包 Dex 文件准备 二.Odex 优化 三.Dex 文件拷贝 四. 源码资源 一.修复包 Dex 文件准备 异常代码 : 故意写一个异常代码 , 并执行该代码 , 肯定会崩溃 ; ...

  3. 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )

    文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...

  4. vs android 压缩,Android Studio是否压缩classes.dex文件?

    看起来输出文件夹中apk文件的classes.dex与已安装的应用程序不同. 我正在使用classes.dex文件来解决一些安全问题,所以通常我解压缩最终的apk文件并从classes.dex文件中获 ...

  5. android oat如何提取dex文件字节码,Android: 使用oatdump反编译oat文件

    网上经常看到有通过apktool将apk中的dex反编译成smali格式的文件,以便分析功能实现与破-解,确没怎么看到oat文件反通过oatdump反编译的,所以就写了一篇这样的文档.声明一下oat文 ...

  6. Android的.dex、.odex与.oat文件扫盲

    文章目录 一.前言,发现新玩意 二..dex..odex与.oat文件介绍 1.dex文件 2.vdex文件 3.odex文件 4.oat文件 一.前言,发现新玩意 最近Unity项目打出的Andro ...

  7. Android 编程之入门开发文件夹管理器开发详细讲解-1

    在我们的手持设备中,一般都会自带设备公司自己开发的文件管理系统.拍照系统之类的东东,今天我给大伙说说入门级开发的文件夹管理器,代码贼少 总共就6个类吧,没有夹杂其他外部应用,就是一个纯文件夹管理器 A ...

  8. Android 项目中文件夹作用(res文件夹详细介绍)

    1. src:存放所有的*.Java源程序. 2. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3. assets:可以存放项目一些较大的资源文件,例如: ...

  9. 腾讯手游助手android文件夹,腾讯手游助手中找到文件安装目录位置的详细操作方法...

    很多的用户在使用腾讯手游助手软件的时候,并不熟悉其中的文件安装目录在什么位置?今日为各位带来的内容就是腾讯手游助手中找到文件安装目录位置的详细操作方法. 首先我们打开腾讯手游助手之后,可以在主界面就看 ...

  10. android系统profile文件路径,Android Profile Tools 入门

    本次分享会目的 通过对增加对 Android Profile Tools 的了解,提高大家工作过程中定位和解决Bug的效率. 注意事项 为了不耽误大家时间,语速可能会快一些 如果讲到某个工具或者技巧, ...

最新文章

  1. 双车组三轮图像处理总结:18cm三轮摄像头图像处理
  2. 陶哲轩实分析习题17.1.2
  3. YoloV5代码详细解读
  4. Linux中关于 su 和 su - 的区别
  5. linux的基础知识——TCP异常断开
  6. pandas的自带数据集_pandas.DataFrame.sample随机抽样
  7. 仿真器和模拟器的区别是什么?
  8. ncurses关于颜色系统:start_color(),has_colors(),init_pair(),color_content(),pait_content()
  9. linux http 访问限制,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  10. Win7精简成功后的总结
  11. mysql case when like_mysql 中casewhen用法
  12. cxk不会二进制 (贪心)
  13. python对医学图像的基本处理_python OpenCV 实现图片的医学处理
  14. pycharm 自定义区域折叠代码
  15. 为知笔记 | 快速收集有价值的网页,微博,邮件!
  16. 【C】C语言文件(包括:文件各种读写方式)
  17. 【MicroPython ESP32】手动配网和wifi信息保存示例
  18. Vue+antd中关于发送请求时候的Loading遮罩层闪烁无法覆盖问题
  19. 学术数据库 文献检索
  20. python的tell和seek_4.2Python文件基本操作2:tell、seek

热门文章

  1. arm-linux-gcc踩坑1
  2. 运营Tumblr的几个建议-教你成为tumblr达人
  3. 华硕服务器 u盘安装系统,华硕电脑u盘安装系统教程
  4. (十二:2020.08.28)CVPR 2016 追踪之论文纲要(译)
  5. GPS在ROS中的测试和使用
  6. Axure中继器使用
  7. 技术开发团队如何高效率开会 [会议管理]
  8. 你在工作中遇到了哪些问题,解决办法是什么
  9. git创建本地ssh密匙
  10. HTTP代理服务器的工作原理