umeng-muti-channel-build-tool

友盟渠道打包工具
授权协议 GPL
开发语言 C# Groovy
所属分类 手机/移动开发、 手机开发工具
软件类型 开源软件
地区 国产
投 递 者 阎建华
操作系统 Windows
开源组织
适用人群 未知
 软件概览

友盟渠道打包工具主要是提供基本的通过工程源码打包的功能。

常见错误见这里目前不支持的Apk特性见这里(可能会导致发布的SDK产生严重bug)。

Google 现在已经发布了最新的构建系统(New Building System) , 在 Android Studio 中已经支持了最新的 构建系统,如果开发者已经迁移,可以使用新的系统方面的生成渠道包,这是取代渠道打包工具的最佳方式。

1. 工程结构

工程结构图 :

- CommonTools 共用的工具类,包括对 `Apktool` , `Jarsigner` , `zipalign` 的封装
- UIControls_35   共用的UI类,对大部分控件的样式都是在这里设置的
- UmengMarket  Marekt 组件,现在还没有实现
- UmengPackage 打包组件
- UmengTools 工程主要UI,管理 UmengMarket, UmengPackage, UmengTools 三个组件
- UmengWidget 小工具组件,目前仅有解包分析的功能

打包工具组件:

- Source - Builder - ApkBuilder.cs     通过 APK 打包的 Builder 实现
                   - Builder.cs            抽象 Builder 类,提供打包的主要逻辑
                   - SourceBuilder.cs通过源码打包的 Builder 实现 (目前代码还没有实现)

         - Worker.cs 打包过程对外接口

3. 打包流程

V2.0 版本仅实现了通过 .apk 打包的方式,本质上对  apk 文件进行反编译,修改 AndroidManifest.xml 文件后,再重新打包,我们使用的工具是开源的拆包工具 Apktool

  1. 将  apktool  添加到当前 process 的环境变量

  2. 执行 apktool d --no-src -f xxxx.apk temp 拆解apk

  3. 替换或者添加 AndroidManifest.xml 中的 友盟channel

  4. 执行apktool b temp  unsigned.apk 重新打包apk

  5. 执行 SignApk.jar 生成签名后的 apk 文件

  6. 执行 zipAlign 生成对齐优化后的 apk 文件

  7. 回到 3 替换新的渠道

  8. 完成打包

使用  JarSigner.jar 给 Apk 签名, SignApk.jar  文件是我们修改过的 apk 签名工具,实现了和 ADT 中一样的签名方式,使用如下:

Usage: signapk file.{keystore} keystore_password key_entry key_password
input.apk
output.apk
  • 为什么需要这个工具 1、国内应用市场繁多,上线的apk应用需要知道自己在哪个渠道下载的; 2、简直是急速啊:5M的apk,1秒种能打300个; 3、因为是急速,可以做网页下载时动态打渠道包功能(如:分享apk给好友,好友下载打开apk后直接计算准确的分享量); 该工具的原理 利用的是Zip文件“可以添加comment(摘要)”的数据结构特点,在文件的末尾写入任意数据,而不用重新解压zip文件(a

  • 现在随着友盟这类统计工具在项目中集成,根据不同渠道打不同的APK包也成为日常工作之一。神马?你还在手动改渠道号一个一个打包?!那你一定是个非常勤奋的程序员- -!正好尝试使用Android Studio,稍微了解了下Android Studio的使用的构建工具:Gradle。 什么是Gradle 你可以看一下Gradle主页。 简单来说,Gradle是一个自动化编译部署测试工具。Gradle内容很

 相关资料
  • 国内Android应用下载有360、小米、豌豆荚、百度等等非常多的渠道, 如果我们想统计每个渠道的下载量和活跃度,就需要使用统计平台. 我们以友盟统计为例,介绍如何配置渠道信息并执行自动化打包. 1.在AndroidMainfest.xml配置可动态替换的渠道参数 友盟集成文档中有说明,使用友盟统计需要在AndroidMainfest.xml配置相应的渠道号: <meta-data andro

  • 我们在日常开发中多多少少都会遇到多渠道打包的情况。这些版本可能会上传到不同的应用市场,也可能是是线下多渠道推荐。有时候可能不同的渠道使用的资源图片都不一样。古老的做法就是,需要打多少个渠道包拉出多少份代码分支,分别替换对应的资源文件和包名配置信息等。这种做法非常的耗时耗力。Gradle 可以帮我们用一份代码通过配置实现打出所有的渠道包。 1. 创建多渠道资源文件目录 首先,我们新创建一个工程,然后

  • 本文向大家介绍Android Studio多渠道打包套路,包括了Android Studio多渠道打包套路的使用技巧和注意事项,需要的朋友参考一下        说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的。按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值:        上面的v

  • 本文向大家介绍Android多渠道打包时获取当前渠道的方法,包括了Android多渠道打包时获取当前渠道的方法的使用技巧和注意事项,需要的朋友参考一下 作为Android app,发布多个分发平台是常规操作。然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码。 这里把简单的代码记一下。 首先,分渠道打包很简单。 在项目的bui

  • sbt 是一个简单的 Scala 项目构建工具,要求 Java 1.5 或者更高。

  • 本文向大家介绍Android Studio多渠道打包的配置方法,包括了Android Studio多渠道打包的配置方法的使用技巧和注意事项,需要的朋友参考一下 说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的。按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值: 上面的value值Cha