Apk打包-zip文件格式和apk多渠道打包探讨

参考:http://blog.csdn.net/a200710716/article/details/51644421

zip文件格式:

 [文件头+文件数据+数据描述符]{此处可重复n次}+核心目录+目录结束标识

当压缩包中有多个文件时,就会有多个[文件头+文件数据+数据描述符]

压缩源文件数据区

[local file header + file data + data descriptor]

记录着压缩的所有文件的内容信息,每个压缩文件都由local file header 、file data、data descriptor三部分组成,在这个数据区中每一个压缩的源文件/目录都是一条记录。

local file header 文件头

用于标识该文件的开始,记录了该压缩文件的信息。文件头标识,值固定(0x04034b50)

Central directory 核心目录

记录了压缩文件的目录信息,在这个数据区中每一条纪录对应在压缩源文件数据区中的一条数据。文件标示,值固定(0x02014b50)

 目录结束标识

目录结束标识存在于整个归档包的结尾,用于标记压缩的目录数据的结束。每个压缩文件必须有且只有一个EOCD记录。标记头(0x06054b50)

主要看这个结构的注释。

OffsetBytesDescription
0 4 End of central directory signature = 0x06054b50 核心目录结束标记(0x06054b50)
4 2 Number of this disk 当前磁盘编号
6 2 number of the disk with the start of the central directory 核心目录开始位置的磁盘编号
8 2 total number of entries in the central directory on this disk 该磁盘上所记录的核心目录数量
10 2 total number of entries in the central directory 核心目录结构总数
12 2 Size of central directory (bytes) 核心目录的大小
16 4 offset of start of central directory with respect to the starting disk number 核心目录开始位置相对于archive开始的位移
20 2 .ZIP file comment length(n) 注释长度
22 n .ZIP Comment 注释内容

即:

1.zip注释可随意修改(最大长度2个字节即256长度)

2.如何寻找注释内容?找标记头位移20位

如:看某个apk注释

此apk的注释内容为: 

是个json数据:{"pn":"MFW","sf":0} 其中 末尾的13 是 回车 00 是空字符

apk多渠道探讨:

1.由此可见此注释内容可以写,apk渠道信息。

2.在安装到手机号找到对应apk获取此注释内容存本地。

美团模式:

参考:https://tech.meituan.com/mt-apk-packaging.html

每打一个渠道包只需复制一个apk,在META-INF中添加一个使用渠道号命名的空文件即可。

原文地址:https://www.cnblogs.com/wjw334/p/7687328.html