android多渠道打包插件,Android几种多渠道打包的步骤详解
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几种多渠道打包的步骤详解相关推荐
- 小米盒子 android 版本,小米盒子刷成原生安卓系统操作步骤详解
本帖最后由 山阴路的夏天 于 2017-11-1 10:23 编辑 现在的小米盒子虽然在各方面都很受用户的欢迎,但还是有一点一直被吐槽的,那就是广告真的太多了,让整个的用户体验感极速下降,如果你想知道 ...
- android项目打包apk,Android Studio将程序打包成APK的步骤详解
第一步:先点击Build选择GenerateSigned APK 第二步:如果之前有编译成APK的话,就直接选择Choose existing已经存在的key:如果没有编译成APK那就选择Create ...
- android收藏功能demo,Android使用Realm数据库实现App中的收藏功能(代码详解)
前 言 App数据持久化功能是每个App必不可少的功能,而Android最常用的数据持久化方式主要有以下的五种方式: 使用SharedPreferences存储数据: 文件存储数据: SQLite数据 ...
- Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(一)
文章大纲 引言 一.Android Storage Access Framework 二.Storage Access Framework 的主要角色成员 1.Document Provider 文件 ...
- Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(二)
文章大纲 引言 一.DirectFragment 1.当选中DirectoryFragment中RecyclerView的Item时 2.选中DirectoryFragment中RecyclerVie ...
- python数组对应元素相乘_python的几种矩阵相乘的公式详解
1. 同线性代数中矩阵乘法的定义: np.dot() np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义.对于一维矩阵,计算两者的内积.见如下Python代码 ...
- SSO单点登录三种情况的实现方式详解
SSO单点登录三种情况的实现方式详解 单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子 ...
- python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...
- 安卓判断服务器返回的状态码,关于服务器返回的十四种常见HTTP状态码详解
原标题:关于服务器返回的十四种常见HTTP状态码详解 HTTP状态码 状态码是由3位数字和原因短语组成的(比如最常见的:200 OK),其中第一位数字表示响应类别,响应类别从1到5分为五种 add:其 ...
最新文章
- R语言with函数和within函数:with函数基于表达式在dataframe上计算、within函数基于表达式在dataframe上计算并修改原始数据
- ArduinoIDE安装与配置与第一个程序的烧录和运行——人人都能玩硬件
- android c 电话联系人,Android 联系人按中文拼音排序
- 正整数 java_JAVA语言:正整数A+B(Java)PAT团体程序设计题解
- 三足鼎立 —— GPM 到底是什么?(一)
- Java 阿里巴巴数据源_阿里P7教你如何使用 Spring 配置动态数据源实现读写分离
- 使用Preference保存设置
- python 调用外部程序 终端异常_python调用外部命令
- 下载并在Eclipse中关联Android源代码
- 苹果电脑怎样清理DNS缓存?
- C# 抖音无水印视频下载教程,教你你如何抓取抖音无水印接口
- 100大产业链全景图(2020版)及智能制造50大产业链
- wap建站程序源码_织梦程序搭建网站实例教程,想尝试搭建网站的朋友赶紧保存了...
- 如何使用NFC读卡器读取NFC卡片的UID
- Objective-C ------ 多态
- h5py基本使用教程
- 装机注意事项:一次装机差点翻车的经历
- 1.6Java-接口、抽象类
- 【HDU 6656】Kejin Player
- linux 实现监听热插拔事件