美文网首页Android知识
关于Android studio Gradle 实现多渠道打包

关于Android studio Gradle 实现多渠道打包

作者: 柴江朋 | 来源:发表于2016-11-24 12:02 被阅读171次

    最近项目用到了友盟的渠道,正常情况下在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表达式 就可以使用了,友盟的多渠道打包也就不会报错直接使用了。

    相关文章

      网友评论

        本文标题:关于Android studio Gradle 实现多渠道打包

        本文链接:https://www.haomeiwen.com/subject/mdsbpttx.html