在AndroidStudio 中多渠道打包

我这边使用的是AndroidStudio正式版本3.0.1,gradle插件版本3.0.1,gradle构建版本是

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

在android{}模块中可以包含以下直接配置项:
defaultConfig{} 默认配置,是ProductFlavor类型。它共享给其他ProductFlavor使用
sourceSets{ } 源文件目录设置,是AndroidSourceSet类型。
buildTypes{ } BuildType类型
signingConfigs{ } 签名配置,SigningConfig类型
productFlavors{ } 产品风格配置,ProductFlavor类型
testOptions{ } 测试配置,TestOptions类型
aaptOptions{ } aapt配置,AaptOptions类型
lintOptions{ } lint配置,LintOptions类型
dexOptions{ } dex配置,DexOptions类型
compileOptions{ } 编译配置,CompileOptions类型
packagingOptions{ } PackagingOptions类型
jacoco{ } JacocoExtension类型。 用于设定 jacoco版本
splits{ } Splits类型。

一般配置

defaultConfig,productFlavors,buildTypes,SigningConfigs,

其中defaultConfig主要用来配置最低版sdk和目标版本sdk
defaultConfig {
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

produceFlavors:创建此源集可加入特定构建变体专用的代码和资源。

简单点说就是哪些渠道


 
flavorDimensions "versionCode"
productFlavors { debugProduce { dimension "versionCode" applicationId rootProject.ext.debugapplicationId versionCode rootProject.ext.debugVersionCode versionName rootProject.ext.debugVersionName manifestPlaceholders = [ APP_NAME: "aaaa" ] } releaseProduce { dimension "versionCode" applicationId rootProject.ext.releaseapplicationId versionCode rootProject.ext.realseVersionCode versionName rootProject.ext.realseVersionName manifestPlaceholders = [ APP_NAME: "bbbb" ] }}

与前面的gradle版本不同的是,gradle3.0后修改flavorsdimension为dimension属性(必须要填写否则会报错),基于多个标准构建多个版本

buildType:是构建的类型

buildTypes {
        release {
            buildConfigField("boolean", "API_ENV", "true")
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
           signingConfig signingConfigs.release
        }
        debug {
            buildConfigField("boolean", "API_ENV", "false")
            minifyEnabled false
            signingConfig signingConfigs.debug
        }

可以构建多种,并不仅仅是俩种。

signingconfigs:用于签名的设置

signingConfigs{
    debug{
        keyAlias 'aaa'
        keyPassword 'aaa'
        storeFile file("jks/aaa.jks")
        storePassword 'aaaa'
    }
    release{
        keyAlias 'aaaa'
        keyPassword 'aaaa'
        storeFile file("jks/aaa.jks")
        storePassword 'aaa'
    }
}

根据不同的构建类型,设置不同的签名文件。

android.applicationVariants.all {variant ->
    variant.outputs.all {
        def filename
        if(variant.buildType.name =='release'){
            filename = "app_release_V${getProductFlavors().first().versionName}-${getCurrent()}.apk"
        }else if(variant.buildType.name =='debug'){
            filename = "app_debug_V${getProductFlavors().first().versionName}-${getCurrent()}.apk"
        }
        outputFileName = filename
    }
}

最后生产的包按照app_debug_V1.0-2018-03-23.apk,这种方式重新命名,需要注意的是gradle3.0之后,variant.outputs.each 调用改为variant.outputs.all。

最后通过终端执行

gradle assemble   //仅仅执行项目打包所必须的任务集

gradle build           //执行项目打包所必须的任务集,以及执行自动化测试,所以会较慢

或者通过 

gradle assemble[FlavorsProduce][buildType] 

或者 gradle assemble[FlavorsProduce]

或者 gradle assemble[buildType] 打出需要的类型包





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值