Gradle的使用技巧

1.让buildType支持继承

如果想新增一个buildType,又想继承之前配置的一些参数,则用**init.with()**很适合。

 buildTypes {
        release {
            //true:开启混淆/压缩
            minifyEnabled true
            //proguard-android-optimize.txt是Android SDK默认混淆配置文件,
            //proguard-rules.pro是我们自定义混淆配置文件
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug.initWith(buildTypes.release)//继承release配置
        debug {
            minifyEnabled false //覆盖release中的一些配置
        }
    }

让Flavor支持继承

在开发的过程中,有开发版本、提交测试版本、内部测试版本、预发版本、正式版本等多个版本。为了识别这些版本,需要用到Flavor的高级用法。
使用flavorDimensions风味维度的配置
Flavor其实是一个多维度的定义,下面举个实际的四维例子。
【是否免费】+【渠道】+【针对用户】+【Debug/Release】
示例:
新建项目,然后在app/build.gradle文件里配置两个风味维度(“company”,“channel”),如下:

defaultConfig {
	        applicationId "com.voctex.flavorsapp"
	        minSdkVersion 18
	        targetSdkVersion 27
	        versionCode 1
	        versionName "1.0"
	        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
	
	        flavorDimensions "company","channel"
	    }

然后进行产品的多维度配置:

productFlavors{
	        //随便命名,建议根据该维度的具体信息进行命名
	        companyA{
	            dimension "company"
	        }
	        companyB{
	            dimension "company"
	        }
	        channelA{
	            dimension "channel"
	        }
	        channelB{
	            dimension "channel"
	        }
	    }

这么配置之后,一共就有了4种风味的包了。
可以在AS 最右边的Gradle-Tasks-build查看
在这里插入图片描述
打包构建之后就会出现多个维度的产品,对应如下,如图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210310140207913.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d6al93aGF0X3doeV9ob3c=,size_16,color_FFFFFF,t_7在这里插入图片描述

可以理解为总共有两个维度,公司(company)和渠道(channel),这里公司的维度排前面(排序先后有要求,下面会讲到),所以所有的产品就是,A公司的A渠道产品,A公司的B渠道产品,B公司的A渠道产品,B公司的B渠道产品。
每增加一个维度,Flavor的个数会呈指数级增加。可见,增加维度之后,版本差异化的内容就更为丰富了。
在java代码中,开发者可以很容易地进行二维判断,代码也比较直观

if(BuildConfig.IS_FOR_TEST){
	Switch(BuildConfig>FLAVOR_channel){
		case "A":
		//....
		break;
		case "B":
		//...
		break;
	}
}

当然,很多时候,只是用到了一个维度而已version。

ref:

[1] 金凯 Android 工程化最佳实践[M].北京:电子工业出版社, 2019:228-236.
[2]Android Studio3.0 flavorDimensions多维度理解(版本差异化打包)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值