`
isiqi
  • 浏览: 16593707 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

对于Android DEX文件详细说明

阅读更多

对于Android DEX文件详细说明

对于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热修复

    这种方法的关键在于找到一个合适的时间点,将修复后的DEX文件注入到系统的dexElements数组中,这个数组是Android系统加载DEX文件的入口。 首先,我们需要理解Android的类加载机制。当应用启动时,Android系统会调用...

    Dex文件头结构解析器

    解析Dex文件头结构对于逆向工程、性能优化、安全分析以及Android应用的调试都至关重要。通过对这些字段的理解,开发者或分析者可以有效地导航Dex文件,提取出所需信息,从而实现各种目的,如代码混淆的破解、性能...

    安卓反编译dex文件格式实例分析

    ### 安卓反编译dex文件格式实例分析 #### 第一部分:创造一个可供分析的Hello.dex ##### 测试环境 为了进行本次实验,我们...通过以上步骤,我们可以全面了解Dex文件的结构以及它是如何在Android环境中被执行的。

    Android APK+Dex文件反编译及回编译工具 v.1.7.2 正式版

    《APK+Dex文件反编译及回编译工具》 简称:APKDB 是一款,针对Android OS系统的APK程序,直接反编译修改的工具。 APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具; 正常安装后,它直接在【鼠标右键】创建...

    Dex文件提取字符串

    在Android应用开发中,Dex文件是Dalvik虚拟机或ART运行时环境使用的二进制格式,它包含了应用的类定义、方法和字段等信息。提取Dex文件中的字符串是一项重要的逆向工程任务,通常用于分析应用的行为、隐私数据处理等...

    APK+Dex文件反编译及回编译工具

    在Android应用开发中,APK和Dex文件是两个核心组件。APK是Android应用程序的打包格式,而Dex文件则是Dalvik虚拟机执行的字节码文件。本篇文章将详细探讨APK和Dex文件的反编译及回编译技术,并介绍相关的工具。 首先...

    dex2jar-2.0.zip

    这个过程在Android开发和安全分析领域中非常常见,因为原始的.dex文件是编译后的机器码,无法直接阅读或修改。 dex2jar 2.0版本是一个重要的更新,它带来了性能和功能上的提升,包括但不限于: 1. **性能优化**:...

    热更新(添加补丁—dex文件).xmind.zip

    本思维导图着重讲解了热更新过程,特别是针对Android系统中的Dex文件的处理。Dex文件是Dalvik虚拟机(或ART运行时)使用的字节码格式,包含了应用的所有类和方法。 1. **热更新原理** - 热更新的基本思想是将新的...

    android8.0 odex2dex.rar

    `android8.0 odex2dex.txt`很可能是详细说明如何使用`oat2dex.jar`来执行这个转换过程的文档,包括命令行参数和步骤。 转换过程可能如下: 1. 首先,你需要获取到Odex文件和相应的Vdex文件。Vdex文件通常位于 `/...

    android_dex_injection:该项目将帮助您将dex文件加载到目标程序,但是U必须将其与so文件注入器一起使用

    Dex文件是Android系统中用来存储Java字节码的格式,相当于Java应用的.class文件。这种注入方法常用于插件化、热修复或者在不更新整个应用的情况下增加新功能。 在Android系统中,Dalvik虚拟机(以及后来的ART运行...

    Android APK+Dex文件反编译及回编译工具(APKDB)v.1.9.2 正式版

    《APK+Dex文件反编译及回编译工具》 简称:APKDB 是一款,针对Android OS系统的APK程序,直接反编译修改的工具。 APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具; 正常安装后,它直接在【鼠标右键】创建...

    dex转jar工具包以及jar文件查看

    在Android系统中,Java源代码编译成.class文件,然后通过DX工具转换为.dex文件,这是针对Dalvik虚拟机优化的格式。而.jar文件则是Java类库,包含了.class文件和其他资源,适用于Java虚拟机运行。 “dex转jar工具”...

    APK+Dex文件反编译及回编译工具v1.7.2正式版

    总的来说,"APK+Dex文件反编译及回编译工具v1.7.2正式版"是一个强大的工具,它简化了对Android应用内部运作的理解和修改,对于开发、调试和安全分析等领域具有重要作用。正确使用和理解这个工具,能极大地提升工作...

    apk+dex反编译、编译器曾哥制作

    在Android应用开发领域,APK文件是Android应用程序的打包格式,而DEX文件是Dalvik虚拟机执行的字节码文件。本主题主要涉及的是对APK和DEX文件进行反编译、编译以及相关的工具使用,特别是使用了名为"Apktool"的工具...

    dex2jar-2.0 + jd-gui-1.4.0 最新更新日期:2017-11-28

    "dex2jar-2.0 + jd-gui-1.4.0" 是一套经典的Android反编译工具组合,用于将.dex文件转换为.jar文件,然后将.jar文件进一步转换为可阅读的.java源代码。 dex2jar是一个Java工具,它的主要功能是将Dalvik字节码(.dex...

    dex编译 反编译 工具

    在Android应用开发中,Dex文件是Dalvik虚拟机可执行文件的格式,它包含了应用程序的所有字节码。本主题将深入探讨“dex编译”和“反编译”工具,以及如何使用这些工具来处理APK包中的Dex文件。 首先,了解Dex编译...

    dex2jar 反编译工具

    Dex文件是Android系统中运行的字节码格式,而.class文件则是Java虚拟机(JVM)所理解的格式。通过将.dex转换为.class,开发者可以使用Java反编译器(如JD-GUI或ProGuard)查看和分析原始的Java源代码。 在Android...

    APK+Dex文件反编译及回编译工具v1.7.1c测试版

    在Android应用开发中,APK文件是应用程序的打包格式,其中包含了DEX文件,即Dalvik Executable文件,它是Android系统运行应用的字节码。为了理解APK内部的工作原理、修改代码或进行逆向工程,我们需要对APK和DEX文件...

    dex-translator-0.0.9.3.zip

    现在,让我们详细了解一下DEX文件和转换器的相关知识点: 1. **DEX文件**:DEX是Dalvik Executable的缩写,它是Android应用程序的主要组成部件。每个Android应用都包含一个或多个DEX文件,这些文件包含了编译后的...

Global site tag (gtag.js) - Google Analytics