Android项目中gradle文件里面的productFlavors一些常用配置

本文介绍了如何在Android项目中使用gradle的productFlavors进行环境配置,包括不同环境的API地址、更新标志、清单文件的app_key和app_id以及根据不同环境引入不同的依赖包。通过设置flavorDimensions和buildConfigField,可以实现开发、测试和生产环境的差异化配置。

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

看看发生了什么:

配置选择

当然,相应的打包时的项目选择也多了起来:

打包选择

2.添加一些项目常用配置 现在有那么多环境的包,有啥用?在每个不同环境的包里面配置自己需要的东西啊,比如咱们刚才说的,每个环境的API地址不一样,怎么;再比如说,我开发环境需要支持自动升级,可我正式环境不想支持了,需要一个常量做一个标示,怎么办?盘他就得了!


flavorDimensions “mode”

productFlavors{

dev{

dimension “mode”

buildConfigField(“String”, “HTTP_BASE”, ‘“https://www.xxx.com/dev/”’)

buildConfigField(“boolean”, “UPDATE”, “true”)//那里需要用了,直接BuildConfig.UPDATE就取出来了,就这么简单

}

tes{

dimension “mode”

buildConfigField(“String”, “HTTP_BASE”, ‘“https://www.xxx.com/tes/”’)

buildConfigField(“boolean”, “UPDATE”, “false”)

}

pro{

dimension “mode”

buildConfigField(“String”, “HTTP_BASE”, ‘“https://www.xxx.com/pro/”’)

buildConfigField(“boolean”, “UPDATE”, “false”)

}

}

把格式说一下 buildConfigField(“常量类型”,“常量名称”,“常量值”)

这样会在项目构建的是后,在项目的Build.config中生成项目的配置文件,类似这样:

你选择的是开发环境,那么这里面的配置就是dev环境下的地址,同理tes,pro环境一样.

3.可以用来配置清单文件里面的值


这个最常用的就是在清单文件里面需要配置app_key,app_id的时候了,很多的三方SDK是需要配置这个东西的,比如某盟,某语音等等一大堆,这个时候,开发是用的key和id肯定不能正是环境也用,或者给不同的客户打不同的包,用的也不能一样,这是后,需要进行一些配置: 在清单文件(AndroidManifest)里面,application节点下这样配置:

<meta-data

android:name=“app_id”

android:value="${app_id_value}" />//占位符

<meta-data

android:name=“app_key”

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

在刚刚的productFlavors下面这样配置:

productFlavors{

dev{

dimension “mode”

buildConfigField(“String”, “HTTP_BASE”, ‘“https://www.xxx.com/dev/”’)

manifestPlaceholders = [app_id_value : “123456”

,app_key_value : “654321”]

}

tes{

dimension “mode”

buildConfigField(“String”, “HTTP_BASE”, ‘“https://www.xxx.com/tes/”’)

manifestPlaceholders = [app_id_value : “111111”

,app_key_value : “222222”] //替换两个以上的用逗号隔开

}

pro{

dimension “mode”

buildConfigField(“String”, “HTTP_BASE”, ‘“https://www.xxx.com/pro/”’)

manifestPlaceholders = [app_id_value : “223344”

,app_key_value : “556677”]

}

}

除了设置这些之外,还可以给不同环境配置不同的包名,版本号,版本名称,并且在选择不同环境运行或者打包的时候,显示的包名是不一样的,这个我验证过了,上个全的:

flavorDimensions “mode”

productFlavors{

dev{

dimension “mode”

applicationId “com.liucl.dev.app”

versionName “1.0.0”

versionCode 10

buildConfigField(“String”, “HTTP_BASE”, ‘“https://www.xxx.com/dev/”’)

buildConfigField(“boolean”, “UPDATE”, “true”)

manifestPlaceholders = [app_id_value : “123456”

,app_key_value : “654321”]

}

tes{

dimension “mode”

applicationId “com.liucl.tes.app”

versionName “2.0.0”

versionCode 20

buildConfigField(“String”, “HTTP_BASE”, ‘“https://www.xxx.com/tes/”’)

buildConfigField(“boolean”, “UPDATE”, “true”)

manifestPlaceholders = [app_id_value : “111111”

,app_key_value : “222222”]

}

pro{

dimension “mode”

versionName “3.0.0”

versionCode 30

applicationId “com.liucl.pro.app”

buildConfigField(“String”, “HTTP_BASE”, ‘“https://www.xxx.com/pro/”’)

buildConfigField(“boolean”, “UPDATE”, “false”)

manifestPlaceholders = [app_id_value : “223344”

,app_key_value : “556677”]

}

}

[]

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

( )4.根据不同的productFlavors,引入不同的依赖包:


举个例子:我dev环境想用刘氏财团的 发财_aar 包 ; tes环境用 长寿_aar 包 ; 正式环境用 喜庆_aar包,改咋办? 1.新加节点configurations, 2.在dependencies中添加以下配置

configurations {

dev

tes

pro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值