当前位置:首页 > 科技  > 软件

你认识Class、Dex、Arsc文件结构吗?

来源: 责编: 时间:2023-12-14 16:38:19 353观看
导读class文件class文件是Java源代码经过编译后生成的二进制文件,它包含了Java程序的字节码。这些class文件可以被Java虚拟机(JVM)执行。在计算机上,class文件通常以“.class”作为文件扩展名。class文件结构如下:「魔数(Magic

class文件

class文件是Java源代码经过编译后生成的二进制文件,它包含了Java程序的字节码。这些class文件可以被Java虚拟机(JVM)执行。在计算机上,class文件通常以“.class”作为文件扩展名。0YF28资讯网——每日最新资讯28at.com

class文件结构如下:0YF28资讯网——每日最新资讯28at.com

  • 「魔数(Magic Number)」:class文件的前4个字节是固定的魔数,用于识别文件格式,通常为0xCAFEBABE。
  • 「版本信息」:紧接着魔数的4个字节是版本信息,分别表示编译器的版本和目标JVM的版本。
  • 「常量池(Constant Pool)」:紧接着版本信息的部分是常量池,用于存储字面量和符号引用。常量池的结构复杂,包括各种类型的常量,如字符串、类和接口名、字段和方法名等。
  • 「访问标志(Access Flags)」:紧接着常量池的部分是访问标志,用于表示该类或接口的访问权限,例如public、final、abstract等。
  • 「类信息」:包括类的父类和实现的接口。
  • 「字段表(Fields)」:描述类或接口中声明的字段。
  • 「方法表(Methods)」:描述类或接口中声明的方法。
  • 「属性表(Attributes)」:包含与类、字段或方法相关的附加信息,如源文件名、行号表、局部变量表等。
  • 「其他信息」:除了上述主要部分外,class文件还包含一些其他信息,如内部类、异常表等。

Java的class文件结构是非常复杂的,包含了丰富的信息和字节码指令,用于在JVM上执行Java程序。0YF28资讯网——每日最新资讯28at.com

dex文件

DEX(Dalvik Executable)文件是Android应用程序编译后生成的可执行文件,它包含了应用程序的字节码、资源文件和其他相关信息。DEX文件是Dalvik虚拟机的可执行文件格式,它通过将Java字节码转换为Dalvik字节码来实现在Android设备上运行应用程序。在Android应用程序的开发和部署过程中,DEX文件扮演着非常重要的角色。0YF28资讯网——每日最新资讯28at.com

DEX文件结构如下:0YF28资讯网——每日最新资讯28at.com

  1. 「魔数和版本号」:DEX文件以一个固定的魔数开头,用来识别文件格式,紧接着是版本号。
  2. 「校验和」:用于校验DEX文件的完整性。
  3. 「签名」:用于验证DEX文件的合法性。
  4. 「文件头部」:包含了DEX文件的一些基本信息,如字节顺序、字节码偏移量等。
  5. 「字符串列表」:包含了DEX文件中使用的所有字符串。
  6. 「类型列表」:包含了DEX文件中定义的所有类型(类、接口等)的列表。
  7. 「原型列表」:包含了DEX文件中的方法原型列表。
  8. 「字段列表」:包含了DEX文件中定义的所有字段的列表。
  9. 「方法列表」:包含了DEX文件中定义的所有方法的列表。
  10. 「类定义」:包含了DEX文件中定义的所有类的信息。
  11. 「数据区域」:包含了实际的字节码、资源和其他数据。

以上是DEX文件的基本结构,它是Android应用程序在Dalvik虚拟机上运行的重要组成部分。0YF28资讯网——每日最新资讯28at.com

class文件与dex文件结构对比图:0YF28资讯网——每日最新资讯28at.com

图片图片0YF28资讯网——每日最新资讯28at.com

arsc文件

ARSC文件是Android资源文件的一种,它包含了Android应用程序的本地化字符串和其他资源。ARSC文件通常存储在APK(Android应用程序包)中,用于在不同的语言和地区之间提供本地化支持。ARSC文件可以包含应用程序的字符串、颜色值、尺寸、布局等资源信息。0YF28资讯网——每日最新资讯28at.com

在Android开发中,ARSC文件是非常重要的,它可以帮助应用程序在不同的语言环境下提供正确的本地化支持,使得应用程序能够更好地适应不同的用户群体。0YF28资讯网——每日最新资讯28at.com

ARSC文件结构如下:0YF28资讯网——每日最新资讯28at.com

- 头部信息  - 魔数(Magic Number)  - 文件头大小(Header Size)  - 资源包大小(Package Size)  - 资源包偏移量(Package Offset)  - 资源ID偏移量(Resource ID Offset)  - 资源类型偏移量(Resource Type Offset)  - 资源项数量(Resource Count)- 资源项信息  - 资源项大小(Entry Size)  - 资源项偏移量(Entry Offset)  - 资源项标志(Entry Flags)  - 资源项ID(Entry ID)  - 资源项名称偏移量(Entry Name Offset)  - 资源项名称大小(Entry Name Size)  - 资源项值偏移量(Entry Value Offset)  - 资源项值大小(Entry Value Size)- 资源值信息  - 资源值大小(Value Size)  - 资源值偏移量(Value Offset)  - 资源值数据类型(Value Type)  - 资源值数据(Value Data)

图片图片0YF28资讯网——每日最新资讯28at.com

ARSC文件结构包含头部信息、资源项信息和资源值信息,用于存储应用程序的资源信息,如字符串、布局、图片等。0YF28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-45499-0.html你认识Class、Dex、Arsc文件结构吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Vue3 学习笔记,如何使用 Watch 监听数据变化

下一篇: 基于Vue后台管理框架推荐,各有优缺点

标签:
  • 热门焦点
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • 华为和江淮汽车合作开发百万元问界MPV?双方回应来了

    8月1日消息,郭明錤今天在社交平台发文称,华为正在和江淮汽车合作,开发售价在100万元的问界MPV,预计在2024年第2季度量产,销量目标为上市首年交付5万辆。
  • 电博会上海尔智家模拟500平大平层,还原生活空间沉浸式体验

    电博会为了更好地让参展观众真正感受到智能家居的绝妙之处,海尔智家的程传岭先生同样介绍了展会上海尔智家的模拟500平大平层,还原生活空间沉浸式体验。程传
  • 亲历马斯克血洗Twitter,硅谷的苦日子在后头

    文/刘哲铭  编辑/李薇  马斯克再次挥下裁员大刀。  美国时间11月14日,Twitter约4400名外包员工遭解雇,此次被解雇的员工的主要工作为内容审核等。此前,T
Top