新一代Android渠道打包工具:1000个渠道包只需要5秒


♥♥♥  原文转自极分享更多详情及更新查看原文 ♥♥♥


最新版本

v1.0.4 - 2016.01.19 - 完善获取APK路径的方法,增加MarketInfo

v1.0.3 - 2016.01.14 - 增加缓存,新增ResUtils,更有好的错误提示

v1.0.2 - 2015.12.04 - 兼容productFlavors,完善异常处理

v1.0.1 - 2015.12.01 - 如果没有读取到渠道,默认返回空字符串

v1.0.0 - 2015.11.30 - 增加Java和Python打包脚本,增加文档

v0.9.9 - 2015.11.26 - 测试版发布,支持全新的极速打包方式

源码:https://github.com/mcxiaoke/packer-ng-plugin

项目介绍

packer-ng-plugin 是下一代Android渠道打包工具Gradle插件,支持极速打包,1000个渠道包只需要5秒钟,速度是 gradle-packer-plugin 的1000倍以上,可方便的用于CI系统集成,支持自定义输出目录和最终APK文件名,依赖包:com.mcxiaoke.gradle:packer-ng:1.0.+ 简短名:packer,可以在项目的 build.gradle 中指定使用,还提供了命令行独立使用的Java和Python脚本。实现原理见本文末尾。

使用指南

Maven Central

.

.


代码部分 

.

.

.

实现原理

PackerNg原理 

优点

使用APK注释字段保存渠道信息和MAGIC字节,从文件末尾读取渠道信息,速度快

实现为一个Gradle Plugin,支持定制输出APK的文件名等信息,方便CI集成

提供Java版和Python的独立命令行脚本,不依赖Gradle插件,支持独立使用

由于打包速度极快,单个包只需要5毫秒左右,可用于网站后台动态生成渠道包

缺点

没有使用Android的productFlavors,无法利用flavors条件编译的功能

文件格式

Android应用使用的APK文件就是一个带签名信息的ZIP文件,根据 ZIP文件格式规范,每个ZIP文件的最后都必须有一个叫Central Directory Record 的部分,这个CDR的最后部分叫"end of central directory record",这一部分包含一些元数据,它的末尾是ZIP文件的注释。注释包含Comment Length和File Comment两个字段,前者表示注释内容的长度,后者是注释的内容,正确修改这一部分不会对ZIP文件造成破坏,利用这个字段,我们可以添加一些自定义的数据,PackerNg项目就是在这里添加和读取渠道信息。

细节处理

原理很简单,就是将渠道信息存放在APK文件的注释字段中,但是实现起来遇到不少坑,测试了好多次。

同类工具

gradle-packer-plugin - 旧版渠道打包工具,完全使用Gradle系统实现,能利用Android提供的productFlavors系统的条件编译功能,无任何兼容性问题,方便集成,但是由于每次都要重新打包,速度比较慢,不适合需要大量打包的情况。(性能:200个渠道包需要一到两小时)

Meituan-MultiChannelTool - 使用美团方案的实现,在APK文件的META-INF目里增加渠道文件,打包速度也非常快,但读取时需要遍历APK文件的数据项,比较慢,而且以后可能遇到兼容性问题

MultiChannelPackageTool - 将渠道写入APK文件的注释,这个项目没有提供Gradle插件,只有命令行工具,不方便CI集成,使用ZIP文件注释的思路就是来自此项目


转自极分享    阅读原文


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,634评论 25 709
  • 前面我们曾经讲过两种Android的渠道打包方式,包括其中的原理都有所涉及。今天给大家讲解的是packer-ng-...
    非著名程序员阅读 1,740评论 3 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • 目录一、Python打包及优化(美团多渠道打包)二、Gradle打包三、其他打包方案:修改Zip文件的commen...
    守望君阅读 5,822评论 4 17
  • @亚行之家 请对今天凌晨在清迈机场办理登机手续时被无理刁难之事给予一个解释!我与家人于2016.1.17由香港乘机...
    智者的石头阅读 367评论 0 0