龙空技术网

Android多版本flavor配置之资源文件和清单文件合并介绍

忱小梓说娱 112

前言:

而今朋友们对“多个文件java”大体比较注重,看官们都想要知道一些“多个文件java”的相关知识。那么小编也在网上搜集了一些对于“多个文件java””的相关内容,希望你们能喜欢,小伙伴们一起来了解一下吧!

知识背景

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基础上,在后面追加一段,如下图示例代码。

<pre class="prettyprint hljs xquery" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">android {    defaultConfig {        applicationId "com.flavor.myapp"    }    productFlavors {       intermodalTransport{            applicationIdSuffix ".a"        }       onlineBattle {            applicationIdSuffix ".b"        }    }}</pre>

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"中的各变量,以实现对应型号产品特定的功能和逻辑。

来源:

标签: #多个文件java