博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android多渠道打包
阅读量:6255 次
发布时间:2019-06-22

本文共 2219 字,大约阅读时间需要 7 分钟。

转载请标明出处,维权必究: 

 

因为要统计各个市场的下载量和其他数据,所以在打包的时候就需要针对每个渠道单独打包,于是,多渠道打包自然就出现了。

不然一个一个打可真是要命。

1、在AndroidManifest.xml文件的</application>标签里面设置:

 

2、app的build.gradle里面设置(android {}里面):

 

(1)、defaultConfig {}里面加上:flavorDimensions "default"

 

(2)、productFlavors里面写上渠道名与渠道号

productFlavors {
//渠道1。渠道名:v1,渠道号v1_100 v1 { manifestPlaceholders = [ APP_CHANNEL_VALUE: "v1_100" ] } //渠道2。渠道名:v2,渠道号:v2_100 v2 { manifestPlaceholders = [ APP_CHANNEL_VALUE: "v2_100" ] }}

 

(3)、设置输出的apk名称(方便查看):

buildTypes {     release {         minifyEnabled false         proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),                  'proguard-rules.pro'         applicationVariants.all { variant ->             variant.outputs.all { output ->                 def outputFile = output.outputFile                 if (outputFile != null && outputFile.name.endsWith('.apk')) {                     def fileName = "novel_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"                     outputFileName = fileName                 }             }         }     } }

这个是apk的名称:

def fileName

= "novel_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"

 

defaultConfig.versionName:版本号。

releaseTime():时间(具体方法接下来说)

variant.productFlavors[0].name:渠道名(这里为v1或者v2)

 

apk名称为novel_v  +  版本号   +   时间   +   渠道名

 

(4)、releaseTime()方法(写在build.gradle的最外层)

def releaseTime() {    return new Date().format("MMdd", TimeZone.getTimeZone("UTC"))}

 

3、验证:

(1)、代码中获取渠道号

private String getMetaChannel() {     try {         ApplicationInfo appInfo = getPackageManager()                  .getApplicationInfo(this.getPackageName(),                 PackageManager.GET_META_DATA);         String value = appInfo.metaData.getString("APP_CHANNEL_VALUE");         return value;     } catch (PackageManager.NameNotFoundException e) {         e.printStackTrace();     }     return ""; }

 

(2)、打debug包

然后运行,便可以打v1渠道的包,在看代码中打印出来的渠道是否正确

 

若是所有的渠道都是相同的渠道号,可以这样:

productFlavors.all {     flavor -> flavor.manifestPlaceholders = [             APP_CHANNEL_VALUE: “渠道号”,     ] }

 

哪里有不对的地方欢迎指出。

 

若是有疑问,或许这两篇能够帮到你:

 

转载于:https://www.cnblogs.com/tangZH/p/10764726.html

你可能感兴趣的文章
BAT涉足汽车产业后对汽车后市场的影响是什么?
查看>>
LeetCode:Remove Nth Node From End of List
查看>>
删除链表的第 n 个结点
查看>>
drawable(1、canvas)
查看>>
Java过滤器,SpringMVC拦截器之间的一顺序点关系
查看>>
Git学习笔记(七)分支标签管理
查看>>
Vue学习计划基础笔记(四) - 事件处理
查看>>
python中的浅拷贝与赋值不同
查看>>
tensorflow安装
查看>>
【老叶茶馆】MySQL复制中slave延迟监控
查看>>
android onPause OnSavedInstance
查看>>
[PHP] - Laravel - CSRF token禁用方法
查看>>
python的序列类
查看>>
分享在MVC3.0中使用jQue“.NET研究”ry DataTable 插件
查看>>
使用Lombok插件需要注意的问题
查看>>
2018-2019-2 20165232 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
查看>>
Visual Studio中“后期生成事件命令行” 中使用XCopy命令
查看>>
代码导读
查看>>
Atlas读写分离[高可用]
查看>>
shell实现rpm -e 一键卸载所有相关包以及依赖
查看>>