Android studio 下gradle配置不同环境的包配置(debug,release,innerRelease等)

本文详细介绍如何使用Gradle配置不同环境下的应用打包,包括测试、正式及内部测试版本,并介绍如何通过BuildConfig区分环境,以及如何配置不同渠道。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目开发中,我们可能需要提供不同环境下的开发包来供测试(调试版本,正式发布版本,内部测试版本)。
所以,我们要构建gradle,来满足不同环境下的自动打包。


1.配置签名信息

 signingConfigs {
        release {
            storeFile file("keystore.inr")
            storePassword "123456"
            keyAlias "liu"
            keyPassword "123456"
        }
    }

这里写图片描述

2.配置不同的环境

2.1 配置不同环境的gradle
buildTypes {
        //测试
        debug {
            minifyEnabled false
            buildConfigField "boolean", "INNER_RELEASE", "false"
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        //正式
        release {
            minifyEnabled true
            buildConfigField "boolean", "INNER_RELEASE", "false"
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        //内部测试
        innerRelease {
            minifyEnabled true
            buildConfigField "boolean", "INNER_RELEASE", "true"
            applicationIdSuffix ".innerRelease"
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
2.2 java中根据不同的环境,返回不同的字段
public static String getMode() {
        //测试
        if (BuildConfig.DEBUG) {
            return "debug";
        }
        //内部测试
        if (BuildConfig.INNER_RELEASE) {
            return "inner_release";
        }
        //正式
        return "release";
    }

3.还可以配置不同的渠道

productFlavors {
        Weixin {
            manifestPlaceholders = [UMENG_CHANNEL: "c002"]
        }
        Official {
            manifestPlaceholders = [UMENG_CHANNEL: "c001"]
        }
        Yingyongbao {
            manifestPlaceholders = [UMENG_CHANNEL: "c003"]
        }
    }

4.注意事项

buildTypes里面的名字不能和productFlavors里面的名字相同,不然会报错。
比如,把productFlavors里面的 Weixin 改成 inner

productFlavors {
        inner {
            manifestPlaceholders = [UMENG_CHANNEL: "c002"]
        }
        Official {
            manifestPlaceholders = [UMENG_CHANNEL: "c001"]
        }
        Yingyongbao {
            manifestPlaceholders = [UMENG_CHANNEL: "c003"]
        }
    }

会爆出下面的错误

Gradle 'DiskCacheDemo' project refresh failed
Error:Cannot add task ':app:assembleInnerRelease' as a task with that name already exists.

5.最后,打包命令

5.1,输出单个包

gradlew assembleOfficialRelease (输出正式包–渠道官网)
gradlew assembleOfficialInnerRelease (输出内部测试包–渠道官网)

5.2,输出所有渠道包

gradlew assembleRelease (所有正式包)
gradlew assembleInnerRelease (输出所有内部测试包)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值