在上一篇关于Flutter的解析文章中,简要介绍了一下代表版本的md5哈希值的由来。在这篇文章里详细阐述哈希值的生成流程。
分析 make_version.py,这里取部分代码
VM_SNAPSHOT_FILES = [ # Header files. 'clustered_snapshot.h', 'datastream.h', 'image_snapshot.h', 'object.h', 'raw_object.h', 'snapshot.h', 'snapshot_ids.h', 'symbols.h', # Source files. 'clustered_snapshot.cc', 'dart.cc', 'dart_api_impl.cc', 'image_snapshot.cc', 'object.cc', 'raw_object.cc', 'raw_object_snapshot.cc', 'snapshot.cc', 'symbols.cc', ] def MakeSnapshotHashString(): vmhash = hashlib.md5() for vmfilename in VM_SNAPSHOT_FILES: vmfilepath = os.path.join(utils.DART_DIR, 'runtime', 'vm', vmfilename) with open(vmfilepath, 'rb') as vmfile: vmhash.update(vmfile.read()) return vmhash.hexdigest()
遍历了VM_SNAPSHOT_FILES
中列出的一些文件,读取数据并依次压入vmhash
而后进行哈希计算。
发表回复