zoukankan      html  css  js  c++  java
  • 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中添加一个使用渠道号命名的空文件即可。

  • 相关阅读:
    python之路day10命名空间和作用域、函数嵌套,作用域链、闭包
    20200719 千锤百炼软工人第十四天
    20200720 千锤百炼软工人第十五 天
    JavaScript中基本数据类型和引用数据类型的区别
    js 经纬度坐标格式化 度分秒转度 度转度分秒
    export ,export default 和 import 区别 以及用法
    10月28日学习日志
    10月20日学习日志
    10月29日学习日志
    10月27日学习日志
  • 原文地址:https://www.cnblogs.com/wjw334/p/7687328.html
Copyright © 2011-2022 走看看