使用Winrar打开apk文件时(用w打开压缩文件)。 我在apk中打包了一堆文件。 其中classes.dex是其中之一。 我的问题是此文件的作用是什么,如果我们修改/删除同一文件,它将影响apk吗?

要制作APK文件,首先会编译Android程序,然后将其所有部分打包到一个文件中。它包含该程序的所有代码(这些是.dex files),资源,资产,证书和清单文件。

程序通常用Java编写并编译为bytecode。然后将它们从Java Virtual Machine-compatible .class files转换为Dalvik-compatible .dex(Dalvik可执行文件)文件,然后再安装到设备上。紧凑的Dalvik Executable格式旨在适用于受内存和处理器速度限制的系统。

classes.dex:Dalvik虚拟机可以理解的以dex文件格式编译的类

As the .dex files holds the APK resources, any edit on these files

will directly effect the APK.

好答案。 您是否偶然知道为什么在有多个.class文件的情况下只有一个classes.dex? 这是否归因于通过dexing进行的优化或其仅仅是某种打包文件,例如.jar文件?

dex文件不包含我相信的资源。 它们在classes.dex创建之后合并。

为什么我有多个此文件? classes2.dex,classs3.dex等。

.dex文件

编译的Android应用程序代码文件。

从Android API指南

Android程序被编译为.dex (Dalvik Executable)文件,这些文件又被压缩为设备上的单个.apk文件。可以通过自动翻译以Java编程语言编写的已编译应用程序来创建.dex文件。

是的,如果您删除这些文件,它将影响APK。

classes.dex本质上是所有应用程序逻辑。给定应用程序的代码用Java编写,然后编译为类文件,然后将这些类文件交叉编译(经过很多优化)为dalvik VM格式。请注意,可能还存在一些.so文件,它们也是应用程序代码,但是这些文件是在使用NDK时生成的。

您无法删除此文件。但是,您可以通过首先运行该实用程序https://github.com/JesusFreke/smali来更改它,该实用程序将从此编译的dex生成smali代码,该代码与Java有点相似并且可以理解。您也可以使用工具ApkOneClick或ApkMultiTool从smali文件中获取Java源代码,但是这些工具可能并不完美,需要进一步修复。更改代码后,您应该再次构建classes.dex并将它们放入现有的zip / apk文件中。请注意,那么现有的证书文件(META-INF)将不再有效,您将需要删除此文件夹并注销apk软件包才能在电话或仿真器上安装它。

有关更多信息,您也可以检查此问题。Android中的.dex文件是什么?

这也是关于使用现有工具反汇编dex文件的很棒的教程http://blog.vogella.com/2011/02/14/disassemble-android-dex

What is the role of this file?

classes.dex在Android中的作用类似于纯Java中的JAR文件。这是一个包含字节码的文件。在Android情况下,字节码是Dalvik字节码,与Java字节码不同。

If we modify/delete the same file will it effect the apk?

如果您修改classes.dex,则您正在修改程序的行为,在重新打包后,该行为可能会或可能不会起作用。如果删除classes.dex,则您的应用程序没有代码,您不应期望它能正常工作。

apk中的.dex文件是压缩文件,由应用程序代码中的所有java类组成。它与jar文件不同。 jar文件是隔离的.class文件的集合。如果解压缩.jar,我们将分别获得所有类。另一方面,.dex文件是由应用程序代码中的所有.class文件组成的单个文件。

代码编译流程:

多个.java文件->多个.classes文件->单个.dex文件

.dex文件是由DVM ... Dalvik虚拟机(这是Android的运行时)执行的可执行文件。

.dex将永远不会包含资源。资源在.apk的/ res文件夹中单独维护

android dex文件是什么,关于android:apk文件中classes.dex文件的作用相关推荐

  1. linux中文件重命名_如何在Linux中重命名文件?

    linux中文件重命名 This tutorial will walk you through the simple steps to rename a file in Linux. 本教程将引导您完 ...

  2. 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 )

    文章目录 前言 一.exec_utils.cc#Exec 函数分析 二.exec_utils.cc#ExecAndReturnCode 函数分析 前言 在上一篇博客 [Android 逆向]ART 脱 ...

  3. Android RecyclerView复杂布局 实现多Item,item中含视频文件播放

    效果(随手画的啊,哈哈哈) 主要就是Adapter里面的内容 import android.content.Context; import android.content.SharedPreferen ...

  4. python模糊查找文件夹名字_python实现在目录中查找指定文件的方法

    本文实例讲述了python实现在目录中查找指定文件的方法.分享给大家供大家参考.具体实现方法如下: 1. 模糊查找 复制代码 代码如下: import os from glob import glob ...

  5. tomcat下只有.class文件 没有java文件_解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题...

    今天部署项目到tomcat,发布完后,启动tomcat,报class not found: 临时找了个解决方案,由于项目是copy过来的,于是就将原来项目的classes下面编译好的class文件也一 ...

  6. linux里如何创建c文件夹,使用c语言在Linux中的/ tmp文件夹中创建文本文件

    #include // Defines fopen(), fclose(), fprintf(), printf(), etc. #include // Defines errno C程序mkstem ...

  7. 注册表中shell文件不见了_win7系统注册表中的shell文件不小心被删除的解决方法...

    我们在操作电脑的时候,win7系统注册表中的shell文件不小心被删除的问题对于我们来说其实是比较少见的,一般情况下的正常使用都不会遇到win7系统注册表中的shell文件不小心被删除的状况.但在wi ...

  8. php soap 下载文件,允许下载SOAP API响应(PHP)中的PDF文件get(作为附件)

    调用SOAP API并使用XML(在下面添加)和一个附件(正文中的二进制PDF不在标头中)给出响应.我想要的是在获得响应时下载该PDF文件.当我在SOAP UI工具中调用API时获取附件. 当我为响应 ...

  9. abaqus python 读取文件_通过Python脚本从Abaqus中的excel文件导入幅度数据

    我在从excel文件导入幅度数据时在Abaqus中创建了以下宏.然后尝试运行此脚本以从同一个excel文件创建另一个幅度但不幸的是,我有以下错误.在这方面有人可以帮助我吗? 脚本: # Do not ...

  10. ccs读取dat文件c语言程序,详解CCS中的.dat文件

    CCS支持的.dat文件的格式为: 文件头为 定数 数据格式 起始地址 页类型 数据块大小 1651             1                  80000000         0 ...

最新文章

  1. 【CF1209E】Rotate Columns【状压DP】【位运算】【贪心】
  2. 罐中研讨会:设置JBoss BRMS全日研讨会
  3. C 之父:C 的成功属于意料之外,C 11是转折点
  4. oracle如何获取自增id,oracle实现自增id
  5. 解决CodeBlocks中文不显示的问题
  6. C++中的cin cout
  7. 连通性1 求无向图的low值
  8. ubuntu20.04 合并两个磁盘
  9. 优雅的处理Exception
  10. vestacp调整php.ini,VestaCP中roundcube的SMTP配置方法
  11. 苹果怎么换字体_苹果手机电池不行了怎么办,换什么牌子好?
  12. springboot 配置RedisTemplate 报:Field redisTemplate in XXX required a bean of type 'org.springframework
  13. pdf 对ie的兼容方法
  14. App小程序 时间Note
  15. PTA 1055 集体照 (25 分) C++实现
  16. 智联物联路由器openvpn客户端连接linux服务器通讯基本配置
  17. 基于java的航空机票订票系统的开发——计算机毕业设计
  18. QT实现一个图片显示器,有登录界面(附图片,源码可直接使用)
  19. 2021中国IC封装基板市场现状及未来发展趋势
  20. 再谈目前QQ空间主流的赚钱方法

热门文章

  1. get/post在线接口
  2. 链家上海2018年9月二手房
  3. pdf文档怎样转换成word文档?2022pdf转word软件推荐
  4. oracle数据库怎么切换实例,oracle切换数据库实例
  5. 网络带宽测试工具iperf3(arm<->PC)
  6. linux yum资源下载,yumdownloader命令 – 从yum存储库下载rpm包
  7. 【论文阅读】Speicher: Securing LSM-based Key-Value Stores using Shielded Execution
  8. cocos2dx图片加密解密(npk方式)
  9. 如何实现阿里云短信接口使用短信业务
  10. word批量转PDF