普通的多渠道打包方案

Android Gradle Plugin

Gradle Plugin本身提供了多渠道的打包策略:

首先,在AndroidManifest.xml中添加渠道信息占位符:

<meta-data android:name="InstallChannel" android:value="${InstallChannel}" />

然后,通过Gradle Plugin提供的productFlavors标签,添加渠道信息:

productFlavors{    "YingYongBao"{
        manifestPlaceholders = [InstallChannel : "YingYongBao"]
    }    "360"{
        manifestPlaceholders = [InstallChannel : "360"]
    }
}

这样,Gradle编译生成多渠道包时,会用不同的渠道信息替换AndroidManifest.xml中的占位符。我们在代码中,也就可以直接读取AndroidManifest.xml中的渠道信息了。

这样会打包时会生成多个渠道的安装包,

但是,这种方式存在一些缺点:

  1. 每生成一个渠道包,都要重新执行一遍构建流程,效率太低,只适用于渠道较少的场景。
  2. Gradle会为每个渠道包生成一个不同的BuildConfig.java类,记录渠道信息,导致每个渠道包的DEX的CRC值都不同。一般情况下,这是没有影响的。但是如果你使用了微信的Tinker热补丁方案,那么就需要为不同的渠道包打不同的补丁,这完全是不可以接受的。(因为Tinker是通过对比基础包APK和新包APK生成差分补丁,然后再把补丁和基础包APK一起合成新包APK。这就要求用于生成差分补丁的基础包DEX和用于合成新包的基础包DEX是完全一致的,即:每一个基础渠道包的DEX文件是完全一致的,不然就会合成失败)
 
时间: 2024-09-29 20:46:22

普通的多渠道打包方案的相关文章

Gradle实战:Android多渠道打包方案汇总

查看原文:http://blog.csdn.net/u010818425/article/details/52319382 Gradle实战系列文章: <Gradle基本知识点与常用配置> <Gradle实战:不同编译类型的包同设备共存> <Gradle实战:发布aar包到maven仓库> <Gradle实战:执行sql操作hive数据库> 本文将延续之前几篇博客的风格,先从基本概念入手,这有助于我们对后文的理解: 在后续的代码中如果忘了某个概念的具体意义,

Android 多渠道打包方案

常规Build 我们先来回顾一下通过Ant或者Gradle进行多渠道批量打包,通常是在AndroidManifest中配置: <meta-data android:name="CHANNEL" android:value="xxx" /> meta-data通过配置value来动态改变渠道名称,然后我们可以在代码中这样去获取Channel private String getChannelNameFromManifest(){ try { return

Android 新一代多渠道打包神器

关于作者: 李涛,腾讯Android工程师,14年加入腾讯SNG增值产品部,期间主要负责手Q动漫.企鹅电竞等项目的功能开发和技术优化.业务时间喜欢折腾新技术,写一些技术文章,个人技术博客:www.ltlovezh.com . ApkChannelPackage是一种快速多渠道打包工具,同时支持基于V1和V2签名进行渠道打包.插件本身会自动检测Apk使用的签名方法,并选择合适的多渠道打包方式,对使用者来说完全透明. Github地址: https://github.com/ltlovezh/Apk

美团多渠道打包

新旧打包方法原理对比: 传统方式 在AndroidManifest定义渠道的年代,多渠道打包无非以下两种方案: 方案一:完全的重新编译,即在代码重新编译打包之前,在AndroidManifest中修改渠道标示: 方案二:通过ApkTool进行解包,然后修改AndroidManifest中修改渠道标示,最后再通过ApkTool进行打包.签名. 这两种打包方式,不管是哪种,效率都很低,方案一毫无效率可言,而且打包的渠道规模非常小,第二种方案效率稍微高些,打包的渠道规模也还可以,但是这两种方案速度慢的

安全高效多渠道打包App

开发出一款app后经常会遇到一些问题,比如想统计一些运营数据,就要多渠道打包,但是android studio打包多渠道包的速度比较慢,打20几个包要半个多小时,实在不能忍:又或是你打包上传后被人反编译了,后果更是不好.为了避免这些问题,我们团队发布一款app之前的步骤是:混淆–> 签名–>360加固–>美团多渠道打包 1:混淆(增加安全性) 敬请移驾:Android代码混淆之混淆规则 2:签名(标识app的唯一性) 敬请移驾:为App签名(为apk签名) 3:360加固(增加安全性)

借腾讯开源 VasDolly,谈谈 Android 签名和多渠道打包的原理!

一.前言 Hi,大家好,我是承香墨影! 当我们需要发布一款 App 到应用市场的时候,一般需要我们针对不同的市场生产不同的渠道包,它们使用的是同一套代码,只是会包含一些各自的渠道信息,用于我们做数据分析. 前几天,企鹅电竞团队开源了自己的 Android Apk 多渠道打包工具:VasDolly,比美团的 Walle 更全面一些. 正好借这个机会,来讲解一下 Android 的不同版本的签名机制的差异. 二.Android 的签名 2.1 应用签名 通过对 Apk 进行签名,开发者可以证明对 A

多渠道打包,生成不同包名的包

来对多渠道打包,并生成不同的包名的知识点做个总结.需要生成不同包名的原因是为了运营的ASO. 方法: 1.直接建立渠道的文件夹,修改Manifest里面的包名 2.利用占位符 当然上面两种方法各有优劣,最后说一下他们的各自的一些特点. 首先来说第一种方法,步骤: 1.根据需要生成多少个包名的包建立和main同级的文件夹. 例如:我这里需要两个不同包名的包,那就需要建立两个不同渠道的文件夹. 2.在文件夹里面新建Maifest文件 因为包名是在Manifest文件里面定义的,所以需要建立Manif

Android多渠道打包:极简实现方法

做安卓开发多年,总是在产品业务功能上兜兜转转,近来终于在了一个App完整的全流程开发体验:不仅是业务功能的开发,更介入到了App推广技术的领域,包括安装包快速下载.免填邀请码安装.排重防盗刷等等,对App推广技术的了解,让我感触很深,认识到产品业务功能再好,推广运营能力不行,也会在市场上举步维艰. 在对app推广技术的了解过程中,我发现了一款不错的安卓多渠道打包工具openinstall,它有几个优点值得称道,我在此推荐给大家.它的几个优点是: 优点一,首先是免费的: 优点二,openinsta

Android自动化构建之Ant多渠道打包实践(上)

前言 Ant是历史比较悠久的一个自动化构建工具,Android开发者可以通过它来实现自动化构建,也可以实现多渠道打包,关于apk打包的方式一般有Ant.Python.Gradle三种,这三种打包方式都各自有优点和缺点,本篇博文先给大家介绍如何使用Ant来实现自动构建和多渠道发布. 开发环境 Window7 Ant jdk android sdk mac系统下所需要的运行环境也是类似的,我们都需要配置Ant.jdk.sdk的环境变量,我们可以看一下window下是环境变量配了些什么: ANT_HO