zoukankan      html  css  js  c++  java
  • android ART

    frameworks/native/cmds/installd/commands.c

    APK在安装的过程中,会通过dex2oat工具生成一个OAT文件

     

    art/runtime/oat_file.c

    OatFile类,通过调用它的静态成员函数Open可以在本进程中加载OAT文件;

     OatFile类的静态成员函数OpenElfFile的;

    OpenElfFile创建了一个OatFile对象后,就调用它的成员函数ElfFileOpen来执行加载OAT文件的工作;ElfFile类来手动加载参数file指定的OAT文件,实际上就是按照ELF文件格式来解析参数file指定的OAT文件,并且将文件里面的oatdata段和oatexec段加载到内存中来。我们可以将ElfFile类看作是ART运行时自己实现的OAT文件动态链接器。一旦参数file指定的OAT文件指定的文件加载完成之后,我们同样是通过两个导出符号oatdata和oatlastword来获得oatdata段和oatexec段的起止位置。同样,如果参数requested_base的值不等于0,那么就要求oatdata段必须要加载到requested_base指定的位置去;

    OpenElfFile最后也是调用OatFile类的成员函数Setup来解析其中的oatdata段

  • 相关阅读:
    Netty实现Http客户端
    Netty实现Http服务端
    Netty实现Tcp客户端
    Netty实现Tcp服务端
    MySQL进阶系列:一文详解explain
    spring boot 获取运行时的yml里的active配置
    eureka 注册中心添加认证
    zuul 负载
    jenkins spring cloud
    秒杀系统如何设计?
  • 原文地址:https://www.cnblogs.com/vendanner/p/5054901.html
Copyright © 2011-2022 走看看