作者:郭孝星

微博:郭孝星的新浪微博

邮箱:allenwells@163.com

博客:http://blog.csdn.net/allenwells

github:https://github.com/AllenWell

因为国内Android市场渠道众多,为了统计每一个渠道的下载以及数据统计,须要我们针对每一个渠道进行单独打包,而Gradle能够帮助我们完毕自己主动多渠道打包。

一多渠道打包流程

(1) 在AndroidManifest.xml中配置PlaceHolder

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

(2) 在build.gradle中配置producFlavors

android {
productFlavors {
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
_360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "_360"]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
}
}

或者批量改动

android {
productFlavors {
xiaomi {}
_360 {}
baidu {}
wandoujia {}
} productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}

附录

apply plugin: 'com.android.application'

def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
} android {
compileSdkVersion 21
buildToolsVersion '21.1.2' defaultConfig {
applicationId "com.boohee.*"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0" // dex突破65535的限制
multiDexEnabled true
// 默认是umeng的渠道
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]
} lintOptions {
abortOnError false
} signingConfigs {
debug {
// No debug config
} release {
storeFile file("../yourapp.keystore")
storePassword "your password"
keyAlias "your alias"
keyPassword "your password"
}
} buildTypes {
debug {
// 显示Log
buildConfigField "boolean", "LOG_DEBUG", "true" versionNameSuffix "-debug"
minifyEnabled false
zipAlignEnabled false
shrinkResources false
signingConfig signingConfigs.debug
} release {
// 不显示Log
buildConfigField "boolean", "LOG_DEBUG", "false" minifyEnabled true
zipAlignEnabled true
// 移除没用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk
def fileName = "boohee_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
} // 友盟多渠道打包
productFlavors {
wandoujia {}
_360 {}
baidu {}
xiaomi {}
tencent {}
taobao {}
...
} productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
} dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:21.0.3'
compile 'com.jakewharton:butterknife:6.0.0'
...
}

最新文章

  1. Hadoop相关日常操作
  2. MySQL 优化数据库对象
  3. 前端学PHP之面向对象系列第一篇——类和对象
  4. git rebase与 git合并(error: failed to push some refs to)解决方法
  5. HttpWatch的时间分析
  6. grep sed
  7. zabbix统一脚本监控方式
  8. python(1) - 输入和输出
  9. smartforms初始化
  10. 输出无名空数组---精android、IOS App应用服务程序开发
  11. hdu_5919_Sequence II(主席树)
  12. iOS之多线程NSOperation
  13. linux 系统状态分析
  14. idea配置svn
  15. 2019Java查漏补缺(二)
  16. Python字节数组【bytes/bytearray】
  17. a标签下载
  18. Excel学习笔记:if({1,0})用法
  19. vue 实现点击图片放大
  20. 【转】Makefile 中:= ?= += =的区别

热门文章

  1. 【bzoj1043】[HAOI2008]下落的圆盘 计算几何
  2. HDU——2093考试排名(string类及其函数的运用以及istringstream)
  3. 【NOI2017】游戏
  4. spring中MessageSource的配置使用方法1
  5. 在vue路由当中使用keep-alive避免多次加载组件,减少消耗
  6. 你如果知道这些css常用命名,绝对事半功倍!--摘抄
  7. Linux spi驱动分析(二)----SPI核心(bus、device_driver和device)
  8. Sublime Text 新文本编辑器(txt3)
  9. yii使用bootstrap分页样式
  10. Yii createCommand CURD操作