最近项目用到了友盟的渠道,正常情况下在AndroidManifest.xml做以下修改:

android:name="UMENG_CHANNEL"

android:value="YINGYONGBAO"/>

渠道少的话可以直接修改value值直接打包即可,由于Android市场众多,每次版本更新都需要多次打包,所以研究了下使用studio gradle 多渠道打包,首先得把value改成:

android:name="UMENG_CHANNEL"

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

其中value的值${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值

build.gradle文件就利用productFlavors这样写:

productFlavors {

default_channel{}

YingYongBao{}

JinLi{}

HuaWei{}

WanDouJia{}

}


productFlavors.all { flavor ->

flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE:name ]

}

android.applicationVariants.all { variant ->

variant.outputs.each { output ->

defoutputFile = output.outputFile

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

File outputDirectory =newFile(outputFile.parent);

deffileName

if(variant.buildType.name =="release") {

fileName="app_v${defaultConfig.versionName}_${packageTime()}_${variant.productFlavors[0].name}.apk"

}else{

fileName = "app_v${defaultConfig.versionName}_${packageTime()}_beta.apk"

}

output.outputFile =newFile(outputDirectory, fileName)}}}

其中name的值对相对应各个productFlavors的选项值;fileName对应的是打包好的名字,我是这样写的:

fileName="jihe_${variant.productFlavors[0].name}.apk"

build.gradle文件中defaultConfig还需要这样写:

defaultConfig {

applicationId"***************"

minSdkVersion15

targetSdkVersion23

versionCode5

versionName"1.1"

manifestPlaceholders = [UMENG_CHANNEL_VALUE:"default_channel"]

}

这样就可以多渠道打包了,如下:


关于Android studio Gradle 实现多渠道打包_第1张图片

你就可以选择一次打一个包或者多个包了。

由于中间使用了jdk1.8的Lambda表达式,所以还须配置下:

下载安装jdk8,配置JAVA8_HOME到环境变量中,配置%JAVA8_HOME%\bin到PATH

配置JDK Location,File->Project Structure->SDK Location:


然后在build.gradle文件中这样配置:

buildscript {

repositories {

jcenter()

mavenCentral()

}

dependencies {

classpath'com.android.tools.build:gradle:2.1.0'

classpath'me.tatarka:gradle-retrolambda:3.2.5'

}

}

applyplugin:'com.android.application'

applyplugin:'me.tatarka.retrolambda'

然后在build.gradle文件中android中这样写:

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_8

targetCompatibility JavaVersion.VERSION_1_8

}

至此Java jdk1.8的Lambda表达式 就可以使用了,友盟的多渠道打包也就不会报错直接使用了。

更多相关文章

  1. android 添加文件打开方式,找了很久终于找到了,收藏起来吧
  2. Android读取文件
  3. freetype 在android编译时上的一个makefile文件
  4. Android 数据存储(二) 文件的使用
  5. android保存文件到手机内存
  6. 安卓布局文件中控件的各种属性的含义
  7. 每周总结20130821——android控件的尺寸、http文件上传

随机推荐

  1. 风格化的 Toggle Buttons
  2. Android实现增量更新
  3. 3.【小萌伴Android】新闻/H5游戏模块及广
  4. Android(安卓)NDK编译本地文件以及引用第
  5. Android瀑布流照片墙实现,体验不规则排列
  6. 《Android深入透析》之界面
  7. android页面布局时定义控件ID时@id/XX和@
  8. Intent应用详解
  9. 【专访】爱图腾高级架构师 李鹏军:手机音
  10. 【255期门诊集锦】一起步入Android应用开