常识背景
Android studio降级到3.0之后,gradle减少了多维度治理配置,便于同一个我的项目中创立利用的不同版本,别离治理依赖项并签订配置。创立产品风味与创立构建类型相似:只需将它们增加到productFlavors {}代码块,并配置您想要的设置。产品风味反对与 defaultConfig雷同的属性,这是因为defaultConfig实际上属于ProductFlavor类。
工程中配置Flavor
如下这个是module外面的build.gradle局部代码(android节点下),这外面次要减少的是productFlavors,这个就是用来配置不同我的项目的参数。
在这里我配置了三个我的项目,别离是intermodalTransport、onlineBattle、convergence。不同的我的项目ID当然须要不同,配置ID的办法有两种:
- 第一种就是间接应用applicationId这个属性,间接给intermodalTransport配置一个ID属性即可。
- 第二种就是应用applicationIdSuffix这个属性,这个的意思是在defaultConfig的默认ID根底上,在前面追加一段,如下图示例代码。
android { defaultConfig { applicationId "com.flavor.myapp" } productFlavors { intermodalTransport{ applicationIdSuffix ".a" } onlineBattle { applicationIdSuffix ".b" } }}
Ps: 如上是build.gradle文件配置,配置实现后可在如下截图的Build Variants处看到相应配置的抉择菜单,截图如下:
资源文件配置
我在build.gradle配置了三个我的项目,那么相应的须要建设三个资源文件夹,main属于工程主体,如下图所示。
Ps:在这三个文件夹外面创立资源的时候肯定要和main的文件格式统一,这个格局统一是指包名必须雷同。在配置Flavor中,在进行构建的时候会将选中的Flavor和main进行联合构建,说白了就是如果Flavor没有的货色就会应用main外面的代替,一般来说都会各自用各自的资源,比拟好治理。
Java文件:要求flavor中只寄存各自个性的java文件代码,main中搁置多个flavor公共的java文件代码。
清单文件Manifest
清单文件不像Java代码文件那样,每个我的项目雷同的Java代码文件不能够和main中的Java代码文件共存,而是main和每个我的项目都能够有清单文件,然而又不会像res资源文件那样,我的项目中的res资源文件会笼罩main的res资源文件。
在编译的时候Android studio会把main的清单文件和选中我的项目的清单文件合并,然而合并就会呈现抵触。在这里只介绍两种合并办法:merge和replace
具体配置属性地位如下截图:
Application属性字段:node
Merge属性:一般来说以main中为主题,其余flavor为分支差别版本配置的时候应用,个别都是把flavor与main的清单文件合并取交加。
Replace属性:在呈现flavor与main中有雷同的属性名的时候,或优先应用flavor中的清单属性替换main,这个属性不倡议应用。
如何代码辨认以后处于哪个flavor开发环境?
代码中获取配置文件"BuildConfig.java"中的各变量,以实现对应型号产品特定的性能和逻辑。