原tinker dex文件格式的dump工具tinker-dex-dump

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原tinker dex文件格式的dump工具tinker-dex-dump相关的知识,希望对你有一定的参考价值。

序言

Tinker是微信推出的热更新开源项目,同其它热更新方案相比具有补丁包小,支持类,so,资源文件的替换等优点。其中在类替换的方案里自主研发了DexDiff算法,使得补丁包变的更小。DexDiff算法最终生成的产物虽然也以.dex作为格式后缀,但和实际虚拟机中的dex文件是二种完全不同的格式。  

 

关于tinker-dex-dump

  tinker-dex-dump是针对dexdiff生成的.dex格式文件,查看其内部数据的工具。主要目的是帮助大家对dexdiff生成的dex格式有一个更加直观的了解。如果使用该工具能让你更容易了解tinker相关原理,那该工具的目的也就达到了,也算是个人对Tinker的致敬。该工具已上传到github,github地址为https://github.com/LaurenceYang/tinker-dex-dump

 

tinker-dex-dump的使用方法  

1、首先下载tinker-dex-dump.jar文件

下载地址

2、通过命令行方式执行  

命令格式

 java -jar tinker-dex-dump.jar --dex *.dex [--header] [--section section-name]

--dex           必选项,后接需要dump的dex路径  

--header      可选项,显示header区域信息

--section      可选项,显示section区域信息,后接要显示的section名字  

--section参数列表,参数的意义同其命名

  • StringData
  • TypeId
  • ProtoId
  • FieldId
  • MethodId
  • ClassDef
  • TypeList
  • AnnotationSetRefList
  • AnnotationSet
  • ClassData
  • Code
  • DebugInfo
  • Annotation
  • StaticValue
  • AnnotationsDirectory

范例一:显示头部信息  

java -jar tinker-dex-dump.jar --dex classes.dex --header

技术分享

 

范例二:显示StringData区域信息  

java -jar tinker-dex-dump.jar --dex classes.dex --section StringData

技术分享

 

范例三:显示帮助信息  

java -jar tinker-dex-dump.jar --help

技术分享

 

tinker dex格式参考

tinker dex格式主要包括两大部分:头部和各个section区域的操作列表,如下图:

 技术分享

 

更多关于tinker dex格式可以参考Tinker项目的DexPatchGenerator文件

 

更多Tinker源码解析的文章请参考:

 

转载请标明本文来源:http://www.cnblogs.com/yyangblog/p/6282118.html
更多内容欢迎star作者的github:https://github.com/LaurenceYang/
如果发现本文有什么问题和任何建议,也随时欢迎交流~

以上是关于原tinker dex文件格式的dump工具tinker-dex-dump的主要内容,如果未能解决你的问题,请参考以下文章

热修复Tinker(二)补丁包加载源码分析

原Android热更新开源项目Tinker源码解析系列之三:so热更新

360加固保dump出来的dex怎么修复

Tinker 源码解析-代码修复和资源修复

Tinker 源码分析之DexDiff / DexPatch

如何从ArcGIS中导出已经生成好的tin图层为tin文件?