1、什么是多渠道打包

在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。在安装包中添加不同的标识,以此区分各个渠道,方便统计app在市场的各种。

2、几种打包方式

友盟 UMeng

Android Studio自带

美团 Walle

3、开始使用

3.1 友盟UMeng

第一步:在AndroidManifest中添加

android:name="UMENG_CHANNEL"

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

第二步:在build.gradle中添加,baidu {}为指定渠道名称简写

build {

......

productFlavors {

baidu {}

xiaomi {}

qihu360 {}

yingyongbao {}

huawei {}

}

productFlavors.all {

flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL: name]

}

}

第三步:设置输出APK名称

Android Studio 2.3版本:

build {

......

applicationVariants.all { variant ->

variant.outputs.each { output ->

def outputFile = output.outputFile

if (outputFile != null && outputFile.name.endsWith('.apk')) {

def fileName = "driver_${variant.productFlavors[0].name}_v${defaultConfig.versionName}.apk"

output.outputFile = new File(outputFile.parent, fileName)

}

}

}

}

Android Studio 3.0版本:

build {

......

applicationVariants.all { variant ->

variant.outputs.all {

outputFileName = "driver_${variant.productFlavors[0].name}_v${variant.versionName}.apk"

}

}

}

Gradle后如果出现如下报错

则需要配置flavor dimension的维度是该版本号,这样维度就是都是统一的了

build {

......

defaultConfig {

......

flavorDimensions "versionCode"

}

}

第四步:编译打包

Build - Generate Signed Bundle or APK - 选择Release或Debug

3.2 Android Studio自带

Android Studio多形态打包与友盟打包方式相同,但是标签中name可自行定义,不限制为"UMENG_CHANNEL"

android:name="UMENG_CHANNEL" //可以随意定义

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

3.3 美团 Walle

第一步:配置根build.gradle

buildscript {

dependencies {

classpath 'com.mcxiaoke.packer-ng:plugin:2.0.1'

}

}

第二步:配置App build.gradle

apply plugin: 'packer'

dependencies {

......

implementation 'com.mcxiaoke.packer-ng:helper:2.0.1'

}

第三步:插件配置

build {

......

packer {

archiveNameFormat = '${buildType}-v${versionName}-${channel}' // 定义输出APK名称

archiveOutput = new File(project.rootProject.buildDir, "apks") // 设置APK输出目录

channelFile = new File(project.rootDir, "channel.txt") // 添加渠道配置文件

}

}

第四步:新建渠道配置文件channel.txt

在工程根目录下新建channel.txt文件,如图

文件内容为渠道名称,要求:必须每一行一个渠道

第五步:编译打包

使用Terminal命令:

gradlew clean apkRelease

4、获取渠道信息

1、友盟 和 Android Studio获取方式

通过读取AndroidManifest中标签

private String getChannel() {

try {

PackageManager pm = getPackageManager();

ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);

String channel = appInfo.metaData.getString(key); // key为标签中的name

if (!TextUtils.isEmpty(channel)) {

return channel;

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

2、美团 Walle获取方式

美团集成自带获取方法

private String getChannel() {

try {

PackageManager pm = getPackageManager();

ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);

String channel = appInfo.metaData.getString(key); // key为标签中的name

if (!TextUtils.isEmpty(channel)) {

return channel;

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

总结

以上所述是小编给大家介绍的Android几种多渠道打包的步骤详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

android多渠道打包插件,Android几种多渠道打包的步骤详解相关推荐

  1. 小米盒子 android 版本,小米盒子刷成原生安卓系统操作步骤详解

    本帖最后由 山阴路的夏天 于 2017-11-1 10:23 编辑 现在的小米盒子虽然在各方面都很受用户的欢迎,但还是有一点一直被吐槽的,那就是广告真的太多了,让整个的用户体验感极速下降,如果你想知道 ...

  2. android项目打包apk,Android Studio将程序打包成APK的步骤详解

    第一步:先点击Build选择GenerateSigned APK 第二步:如果之前有编译成APK的话,就直接选择Choose existing已经存在的key:如果没有编译成APK那就选择Create ...

  3. android收藏功能demo,Android使用Realm数据库实现App中的收藏功能(代码详解)

    前 言 App数据持久化功能是每个App必不可少的功能,而Android最常用的数据持久化方式主要有以下的五种方式: 使用SharedPreferences存储数据: 文件存储数据: SQLite数据 ...

  4. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(一)

    文章大纲 引言 一.Android Storage Access Framework 二.Storage Access Framework 的主要角色成员 1.Document Provider 文件 ...

  5. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(二)

    文章大纲 引言 一.DirectFragment 1.当选中DirectoryFragment中RecyclerView的Item时 2.选中DirectoryFragment中RecyclerVie ...

  6. python数组对应元素相乘_python的几种矩阵相乘的公式详解

    1. 同线性代数中矩阵乘法的定义: np.dot() np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义.对于一维矩阵,计算两者的内积.见如下Python代码 ...

  7. SSO单点登录三种情况的实现方式详解

    SSO单点登录三种情况的实现方式详解 单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子 ...

  8. python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  9. 安卓判断服务器返回的状态码,关于服务器返回的十四种常见HTTP状态码详解

    原标题:关于服务器返回的十四种常见HTTP状态码详解 HTTP状态码 状态码是由3位数字和原因短语组成的(比如最常见的:200 OK),其中第一位数字表示响应类别,响应类别从1到5分为五种 add:其 ...

最新文章

  1. R语言with函数和within函数:with函数基于表达式在dataframe上计算、within函数基于表达式在dataframe上计算并修改原始数据
  2. ArduinoIDE安装与配置与第一个程序的烧录和运行——人人都能玩硬件
  3. android c 电话联系人,Android 联系人按中文拼音排序
  4. 正整数 java_JAVA语言:正整数A+B(Java)PAT团体程序设计题解
  5. 三足鼎立 —— GPM 到底是什么?(一)
  6. Java 阿里巴巴数据源_阿里P7教你如何使用 Spring 配置动态数据源实现读写分离
  7. 使用Preference保存设置
  8. python 调用外部程序 终端异常_python调用外部命令
  9. 下载并在Eclipse中关联Android源代码
  10. 苹果电脑怎样清理DNS缓存?
  11. C# 抖音无水印视频下载教程,教你你如何抓取抖音无水印接口
  12. 100大产业链全景图(2020版)及智能制造50大产业链
  13. wap建站程序源码_织梦程序搭建网站实例教程,想尝试搭建网站的朋友赶紧保存了...
  14. 如何使用NFC读卡器读取NFC卡片的UID
  15. Objective-C ------ 多态
  16. h5py基本使用教程
  17. 装机注意事项:一次装机差点翻车的经历
  18. 1.6Java-接口、抽象类
  19. 【HDU 6656】Kejin Player
  20. linux 实现监听热插拔事件

热门文章

  1. Zemax学习笔记——多重结构使用方法
  2. 博弈论的诡计(读书摘要)
  3. mysql建索引 heidi_MySQL使用HeidiSQL工具改库名
  4. JavaScript(三十九)——鼠标滚轮、滚动窗口制作
  5. weui uploader java_微信小程序 WeUI·Uploader
  6. 深入递归、深搜dfs、回溯、剪纸学习。
  7. ap统计学需要什么计算机,AP统计学考什么
  8. unity生成安卓Logo和名字更换配置
  9. 1024 - 在这里起航!
  10. 电信、网通、铁通各地DNS