android studio 通过flavor变体分包多渠道编译,以及修改默认app run编译变体

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

多渠道或者多地区需要分不同的应用版本,出不同的apk,通过android studio 的flavor变体可以简单实现,也方便管理.


一、如何增加变体

android studio创建项目时默认就有两个变体:debug release,一般都是在这个基础上增加变体

android studio 的变体划分是需要一个维度的的,具体的变体都需要指导一个维度归属,比如划分两个变体:英国版本:en 日本版本:jp,那么这两个变体都需要一个维度归属,我选择地区作为维度:region.
代码实现:

build.gradle文件中

	    defaultConfig {
			flavorDimensions += "region" //分包维度
			//增加更多维度可以直接同样格式写下面 如下
			//    	flavorDimensions += "region" //分包维度
    		//		flavorDimensions += "qq" //分包维度
    		//		flavorDimensions += "aa" //分包维度
    		//		flavorDimensions += "dd" //分包维度
    		//或者  flavorDimensions += listOf("region", "qq", "aa", "dd")
	    }
	    
        productFlavors {
	        en {
	            dimension "region"  //指定所属维度
	            // 设置特定属性
	        }
	        jp{
	            dimension "region" //指定所属维度
	            // 设置特定属性
	        }
    	}

sync一下,此时项目中已经多了变体,可以在编译选项中看到
在这里插入图片描述

二、不同变体差异化代码实现

1.创建分包目录,文件差分

这里演示的是代码文件,资源文件以及AndroidManifest.xml也可以同样差分
如下:
右键src-new-Directory
在这里插入图片描述
选择对应变体和使用的语言就行,我用的时候ide只有一种变体可以选,但是手动创建同名的目录也可以识别
在这里插入图片描述
同名文件会导致冲突,方案是删掉原来的文件,只留下分包目录下的文件,不同分包可以有同名文件
在这里插入图片描述
在这里插入图片描述

2.代码中判断编译的变体做差分

上面代码文件分包会有多份同名文件,有时候改动可能只有一行代码,可以直接在代码中判断编译的变体
代码如下(示例):

build.gradle文件中

    buildFeatures {
        buildConfig true
    }
代码文件中

        if ("jp".equals(BuildConfig.FLAVOR)) {

        } else if ("en".equals(BuildConfig.FLAVOR)) {

        }

3.修改编译默认变体

这里可以修改run app的默认变体
在这里插入图片描述
在这里插入图片描述

总结

地区渠道免费付费,同一个应用的不同差分版本通过flavor来做可以很方便的修改和管理,但是不同维度的变体之间不同的排列组合,导致维度多的话编译数量会激增

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值