Android productFlavors 差异化打包

最近有个教育类项目,需要四个app端,主题样式差不多有不少公共代码,如果创建四个AS工程,不利与代码管理且后期维护的难度加大。本着面向度娘编程的原则搜索了一波解决办法,发现gradle自带的productFlavors差异化打包工具 这个好东西,有效解决我以上问题,记录一下踩坑过程。

一. 配置productFlavors

二. 创建工程结构

三. 快乐编码

四. 调试、打包、注意事项

一. 配置productFlavors

在build.gradle(app)文件中:

配置了 parents 和 school 家长和学校端 ,配置各端applicationId...属性,则学校端包名为com.xxx.xxx.parents,注册第三方appkey时需使用该包名

Android productFlavors 差异化打包_第1张图片

 

1. manifestPlaceholders : 配置不同属性:

在mian-AndroidManifest.xml中使用manifestPlaceholders 中定义的属性值(公共权限、公共组件注册、第三方Appkey配置在该文件中)

Android productFlavors 差异化打包_第2张图片

2.buildConfigField:自定义区分 (公共代码中区分是哪一个app在运行)

可以通过 BuildConfig.FLAVOR  或 buildConfigField自定义的名字区分

Android productFlavors 差异化打包_第3张图片

3. implementation   /  schoolimplementation: 全部依赖第三方库/ 仅家长端依赖

二. 创建工程结构

Android productFlavors 差异化打包_第4张图片

红色为默认main包,里面写一些公共utils,application,base基类...等。手动新建如果紫色main同级parents工程目录

三. 快乐编码

Android productFlavors 差异化打包_第5张图片

注意事项:

子项目(school)中代码可以调用公共类(main)中的代码,公共类中不能出现调用子项目的代码

四. 调试、打包

选择不同子项目调试

Android productFlavors 差异化打包_第6张图片

一起打包

Android productFlavors 差异化打包_第7张图片

 

你可能感兴趣的:(android,Android)