首页 > 其他分享 >Android dex、odex、oat、vdex、art区别

Android dex、odex、oat、vdex、art区别

时间:2024-08-09 14:42:05浏览次数:13  
标签:dex 文件 art odex ELF oat DEX

1.dex

java程序编译成class后,dx工具将所有class文件合成一个dex文件,dex文件是jar文件大小的50%左右.

2.odex(Android5.0之前)全称:Optimized DEX;即优化过的DEX.

Android5.0之前APP在安装时会进行验证和优化,为了校验代码合法性及优化代码执行速度,验证和优化后,会产生ODEX文件,运行Apk的时候,直接加载ODEX,避免重复验证和优化,加快了Apk的响应时间. 注意:优化会根据不同设备上Dalvik虚拟机版本、Framework库的不同等因素而不同,在一台设备上被优化过的ODEX文件,拷贝到另一台设备上不一定能够运行。

3.oat(Android5.0之后)

oat是ART虚拟机运行的文件,是ELF格式二进制文件,包含DEX和编译的本地机器指令,oat文件包含DEX文件,因此比ODEX文件占用空间更大。 Android5.0以后在编译的时候(此处指系统预制app,如果通过adb install或者商店安装,在安装时dex2oat把dex编译为odex的ELF格式文件)dex2oat默认会把classes.dex翻译成本地机器指令,生成ELF格式的OAT文件,ART加载OAT文件后不需要经过处理就可以直接运行,它在编译时就从字节码装换成机器码了,因此运行速度更快。不过android5.0之后oat文件还是以.odex后缀结尾,但是已经不是android5.0之前的文件格式,而是ELF格式封装的本地机器码. 可以认为oat在dex上加了一层壳,可以从oat里提取出dex.

4.vdex

Android8.0以后加入的,包含APK的未压缩DEX代码,另外还有一些旨在加快验证速度的元数据。

5.art (optional)

包含APK中列出的某些字符串和类的ART内部表示,用于加快应用启动速度。

注意:Android5.0以后在/data/dalvik-cache目录下的.dex文件已经不是android5.0之前的dex文件,它是ELF文件,可以使用file命令查看如下:

# file system@app@[email protected]@classes.dex

system@app@[email protected]@classes.dex: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, stripped

标签:dex,文件,art,odex,ELF,oat,DEX
From: https://www.cnblogs.com/linhaostudy/p/18350713

相关文章

  • 用echarts绘制图表时,横坐标数据太多显示不全/堆叠的解决方法
    一、横坐标数据过多可能出现的问题1、横坐标文字堆叠2、横坐标显示不全(数据2,数据4,数据6,数据8,数据10,数据12,数据14均没有显示出来)二、解决方法1、使用rotate属性给echarts的横坐标标签设置旋转角度xAxis:{type:'category',data:xAxis,......
  • 字符产part02
    今天学习了字符串的第二部分。翻转字符串里的单词,先整体翻转,再局部翻转。注意移除空格和前头数组中移除元素类似。右旋转,也是先整体再局部翻转。4.翻转字符串里的单词题目:给定一个字符串,逐个翻转字符串中的每个单词。示例1:输入:"theskyisblue"输出:"blueisskyt......
  • OpenTiny HUICharts开源发布,带你了解一个简单、易上手的图表组件库
    摘要:目前OpenTinyHUICharts已经成功落地在华为内部100多个产品中,持续提升了用户的可视化体验。本文分享自华为云社区《OpenTinyHUICharts正式开源发布,一个简单、易上手的图表组件库》,作者:OpenTiny。引言大家好!我们非常高兴地跟大家宣布,今天正式发布我们的新产品——Open......
  • 「代码随想录算法训练营」第三十三天 | 动态规划 part6
    322.零钱兑换题目链接:https://leetcode.cn/problems/coin-change/文章讲解:https://programmercarl.com/0322.零钱兑换.html题目难度:中等视频讲解:https://www.bilibili.com/video/BV14K411R7yv/题目状态:略微有点思路,但还是有点转不过来。思路:这次是找最小的钱币组合,因此......
  • Diskpart 操作
    DiskPart是Windows操作系统中的一个命令行工具,用于管理磁盘分区。它可以创建、删除、格式化和调整分区大小,还可以设置活动分区等。以下是一些常用的DiskPart命令和操作步骤。一、启动DiskPart打开命令提示符:按Win+R打开运行窗口,输入cmd并按回车。或者在开始菜......
  • 解决端口号占用问题:Spring Boot报错,Web server failed to start. Port 8080 was alrea
    报错信息:Webserverfailedtostart.Port8080wasalreadyinuse.报错原因:端口被占用解决方法:解决方法一:修改端口修改配置文件,加上参数:server.port=8014或者在application.yml文件中添加server:port:8014在访问时,替换对应的端口号即可解决方法二:关闭占用端口的......
  • 字符串part01
    今天学了字符产的第一部分:反转字符串,使用双指针。反转字符串Ⅱ,需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章。数组填充问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。1.反转字符串题目:编写一个函数,其作用是将输入......
  • react中封装Echarts
    下载npxcreate-react-appmy-echarts创建公共组件importReact,{useState,useEffect,useMemo}from'react';import*asechartsfrom"echarts";constEChartsComponent=({option})=>{const[echartsInstance,setEchartsInstance]=u......
  • 专为「亿量级数据」可视化!SciChart 致力满足不同领域图表开发!
    SciChart是一款功能强大的数据可视化工具,广泛应用于各种科学和统计领域,以及商业软件开发中。以下是对SciChart的详细介绍:定义:SciChart是一个基于多种平台(包括Windows、iOS、Android和Web)的数据可视化图表库,它提供了丰富的图表类型和高度可定制的交互功能。特点:SciChart以其......
  • IgniteFAQ-13-GridDhtPartitionsExchangeFuture : Failed to reinitialize local part
    报错2024-08-0815:29:02.532ERROR39656---[ange-worker-#49].c.d.d.p.GridDhtPartitionsExchangeFuture:Failedtoreinitializelocalpartitions(rebalancingwillbestopped):GridDhtPartitionExchangeId[topVer=AffinityTopologyVersion[topVer=1,minorTopVe......