最近项目用到了友盟的渠道,正常情况下在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"]

}

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


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

由于中间使用了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(安卓)SDK目录结构介绍
  2. android 添加文件打开方式,找了很久终于找到了,收藏起来吧
  3. Android下媒体库的实现
  4. Android(安卓)學習之旅!(2)
  5. Android应用程序目录结构分析
  6. Android读取文件
  7. freetype 在android编译时上的一个makefile文件
  8. Android(安卓)权限管理 — 只防君子不防小人
  9. Android(安卓)skia 和open skia的比较

随机推荐

  1. android 设置状态栏全透明,背景延伸到状态
  2. Android之Button样式
  3. Could not find gradle wrapper within A
  4. Android(安卓)Property实现介绍
  5. android代码实现按钮自旋转
  6. android之Switch开关
  7. android后台上传数据demo
  8. android actionbar tab style
  9. Android(安卓)中常用 MimeType 及对应文
  10. Android(安卓)获取手机屏幕大小两种方法