美文网首页
Android-APK安装实质

Android-APK安装实质

作者: hyzhang98 | 来源:发表于2017-10-12 22:57 被阅读0次

dex

  • 关于dex先说几点,我们知道java生成的是class文件,jvm也是基于栈的虚拟机,而Dalvik和ART都是基于寄存器的虚拟机,所以在build的时候,不仅仅是简单合并和去除重复,还要转变指令和数据结构

apk

  • apk实质上就是一个zip文件,只是改了后缀名而已,apk里面放着dex文件、native代码文件(.so)、资源文件、Manifest.xml

apk的安装过程

  • 当通过SD卡上的APK安装时,会先把apk复制到/data/app下,然后执行下面的操作
  • 安装过程其实就是一个解压过程,对于Dalvik和ART两种虚拟机对dex文件有不同的优化处理,这个过程叫做optdex,生成的优化后的文件就会放在/data/dalvik-cache下面,同时optdex过程还会验证字节码,同时向Android系统中注册这个app,即Android会解析Android Manifest并向它自己的package.xml写入对应的注册信息
  • 对于Dalvik,会把dex从apk文件内提取出来放到某个文件夹下,这样每次启动的时候就减少了一个从apk提取dex文件的动作
  • 对于ART(6.0),不会生成odex文件,取而代之的是oat文件,我们知道ART(6.0)在安装的时候会花费更多的时间,这个时间是干嘛用的呢?其实就是用来从apk里面提取出来dex之后,把dex转化成机器码,这样得以让设备直接执行,也就是说不再执行字节码了
    • 那是不是意味着ART就没用了?都可以直接执行机器吗了,还用啥虚拟机?
    • 其实ART主要的作用就是用来创建对象和GC,就相当于ART充当了操作系统进程里堆的管理者,实现了一种垃圾收集机制和堆内存管理机制(包括分配内存、整理内存碎片)
  • 对于ART(7.0),不会把dex直接变成oat文件了,即不采用AOT的方法,也不是单纯的JIT,而是说把OAT和JIT结合起来,当执行了JIT后,会把它产生的机器码保存下来,这样既保证了安装速度,又让app越用越快
  • aot文件里面不仅仅包含可执行文件,还包含了原来的dex文件和资源文件等文件,所以占用的空间更大,aot同样也是放在某个缓存文件夹下面的,在启动某一个Android进程时都是去相应的文件夹下去load对应的odex / oat文件

相关文章

  • Android-APK安装实质

    dex 关于dex先说几点,我们知道java生成的是class文件,jvm也是基于栈的虚拟机,而Dalvik和AR...

  • Android-APK加固

    学习APK加固,首先我们需要了解APK的构造。才能了解我们需要加固什么,怎么保护我们文件信息。 将APK解压 目录...

  • Android-APK目录简述

    参考:http://www.jianshu.com/p/7c288a17cda8http://www.cnblog...

  • 实质

    應該深度的看清楚:長久以來,我們體現在具體層面的文化的品味,深陷在功利的泥潭裡,卻還虛假的供著道德,裝飾著慾望,当...

  • 实质

    其实我们已分开太久太久,只是我们都不愿承认而已。心灵的距离从何时靠近,又从何时疏远。守着你,不是因为依恋永远,而是...

  • 实质

    生活需要实质 实质的快乐,实质的充足,实质的获得 如你幻想太多,未能如你愿,其实未曾好好的面对生活 生活千变万化,...

  • 实质

    今天是第四次来回了,这些天一直在河南和湖南直接奔波。 之前一直觉得旅途中,坐在车上看着窗外的景色是最好思考问题的时...

  • 实质

    我在年华老去的时光里默默叹息年轻的模样如此虚幻这上天的所有馈赠我终是要再交付些东西快乐与痛苦是真实的沿途的风景是真...

  • Elasticsearch安装、常见问题及IK分词器的安装

    本文简要记录 Linux 环境下 ES 安装遇到的问题和解决思路。安装ES实质上是很简单的,不管是Win平台还是L...

  • Android-apk反编译方法

    下面主要说明一下反编译一个apk的步骤(Mac上操作): 准备工具:1.dex2jar:https://githu...

网友评论

      本文标题:Android-APK安装实质

      本文链接:https://www.haomeiwen.com/subject/tdlayxtx.html