.kxp 格式

.kxp 格式全称 KitX Extensions Package, 是一种封装格式, 用于打包单个插件, 并记录一些额外信息, .kxp 格式顺序记录所有信息

文件结构:

Struct NameSizeDescr
KXP File Header16 bytesProve it's a .kxp file.
MD5 Hash Header16 bytesStorage Hash code of all behind value.
File Map Length8 bytesStorage a Int64 value indicated files count.
File Map Item (multi)16 bytesTwo Int64 for File Name Length and File Body Length.
File Item (multi)VARFile Name and File Body.
Loader Struct Length8 bytesA Int64 value indicated how long does Loader Struct took.
Loader StructVARA string in json format that storage ths Loader Struct.
Plugin Struct Length8 bytesA Int64 value indicated how long does Plugin Struct took.
Plugin StructVARA string in json format that storage ths Plugin Struct.
  • KXP 文件校验头 16 字节 用来标明这是一个 kxp 文件, 值固定为 49 74 20 69 73 20 61 20 4B 58 50 20 66 69 6C 65 也就是 "It is a KXP file" 的 ASCII 码

  • MD5 哈希校验值 16 字节 存放后文所有字节的 MD5 哈希校验值

  • 文件地图长度 8 字节 一个 64 位的整数, 表示文件地图的长度

  • 文件地图项 (多个) 16 字节 两个 64 位的整数, 分别表示 文件名的长度 和 文件体的长度

  • 文件项 (多个) 可变长度 文件名 与 文件体

  • 加载器结构长度 8 字节 一个 64 位的整数, 表示加载器结构的长度

  • 加载器结构 可变长度 一个 JSON 格式的字符串, 存放加载器结构

  • 插件结构长度 8 字节 一个 64 位的整数, 表示插件结构的长度

  • 插件结构 可变长度 一个 JSON 格式的字符串, 存放插件结构

其中, 文件地图部分标明了每个文件名, 文件体的长度, 同时记录了文件结构, 方便解码器进行解码, 每个文件地图项都一一对应一个文件项