android 多渠道打包

1、packerNg 式打包

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

<a href=‘https://github.com/mcxiaoke/packer-ng-plugin/blob/master/sample/build.gradle‘ > 对应github地址</a>

2、META-INF 式打包

可以只修改已有apk的渠道标志,快,批量,原理简单

3、Gradle 打渠道包

基本原理是利用Gradle的 manifest merger 功能

这个功能的主要用途是能够在运行时替换AndroidManifest.xml里面的内容

第一步 在AndroidManifest.xml里配置meta-data

<meta-data

android:name="UMENG_CHANNEL"

android:value="${UMENG_CHANNEL_VALUE}" />

第二步 在模块的build.gradle文件的defaultConfig里加上PlaceHolder定义

android {

...

defaultConfig {

...

manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"default_channel" ]

}

}

这里的作用有两个,一是声明UMENG_CHANNEL_VALUE是可替换值的PlaceHolder,二是为其设置默认值。

第三步 在模块的build.gradle文件里添加ProductFlavors配置

android {

productFlavors {

default_channel{}

wandoujia{}

_360{}

yingyongbao{}

xiaomi{}

baidu{}

huawei{}

jifeng{}

}

productFlavors.all { flavor ->

flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]

}

}

第四步 一次生成所有渠道包

到工程目录下运行gradlew assembleRelease。

可以看到这次编译一共产生了对应productFlavors段的不同渠道包。

可以反编译每个apk,打开AndroidManifest.xml看看,发现友盟这一段的配置已经相应的被修改了。

<meta-data

android:name="UMENG_CHANNEL"

android:value="default_channel" />

还可以利用Gradle生成单独的渠道包

如 gradlew assembleWandoujiaRelease

时间: 2024-10-13 02:15:11

android 多渠道打包的相关文章

Android 多渠道打包方式详解

Android 多渠道打包方式详解 面试的时候,如果面试官突然问到:你们渠道包是怎么打的?如果你说是用gradle一个一个编译的,然后他很鄙视的说这个效率太低啦,你们写过什么脚本自己打渠道包没?你肯定心里想,卧槽,这么狂炫吊炸天,自己写脚本打包?!其实这个根本也不是太难啦!!今天就来聊聊多渠道打包的原理以及如何自己DIY多渠道打包的工具! 渠道包出现 当一个产品到发版的时候,我们搞Android的就会面临一个超级尴尬的问题:国内这么多的渠道,渠道统计是必须做滴,那么十多个主要渠道再加无限量的地推

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多渠道打包

产品每次发布,都需要打很多渠道的包.之前用per脚本打包,后来添加了自定义空间属性后,就不能打了.Ant脚本打包又嫌麻烦,引用的工程太多.最后想到一个办法就是反编译. 原理:每个渠道的包只有AndroidManifest.xml文件中渠道的ID不一样.所以反编译APK后,修改AndroidManifest.xml的渠道ID.最后重新打包. 步骤: 1.反编译已经打好包的APK(这里只用了-s,尝试过加上-r,但是AndroidManifest.xml文件没有被反编译,就删掉了) 1 java -

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

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

Android 多渠道打包验证

原文链接:http://my.oschina.net/aibenben/blog/373596 作者自己编写了java验证脚本 使用VeidyapkTol.zip,在c盘根目录解压,会有两个文件夹,把你要验证的apk放到apk文件夹,然后打开apkTol文件夹里面,直接双击test.bat,OK! VeidyapkTol.zip 在文件目录下即可下载

android studio 多渠道打包

第一就是配置:在项目的build.gradle里面配置  先上图,再上代码. 第二步,就是打包.(网上有介绍用命令打包,可是我这人太懒,发现了个小窍门,直接在android studio 里面进行.)上图(另外,后面我还是补上了gradle命令打包的介绍.大家可以看看http://my.oschina.net/aibenben/blog/370985) 如果没有keystore,先创建一个,默认为.jks文件,一样的. 大家这里创建完后,可以再回头看看前面配置的build.gradle里面sig

Gradle实现的两种简单的多渠道打包方法

Android多渠道打包Gradle多渠道打包友盟多渠道打包productFlavors 本来计划今天发Android的官方技术文档的翻译——<Gradle插件用户指南>的第五章的,不过由于昨天晚上没译完,还差几段落,所以只好推后了. 今天就说一下使用Gradle进行类似友盟这样的多渠道打包的方法吧. 本文原创,转载请注意在CSDN上的出处: http://blog.csdn.net/maosidiaoxian/article/details/42000913 目前我掌握的方法有两种,都非常简

Android 新一代多渠道打包神器

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