Android Studio实现多个类似应用在同一个项目中管理

近期由于公司项目需要复制好多个应用出来,但要求应用名与图标以及闪屏不同,也就是应用主要功能相同但是每个应用又可独立存在。在这样的背景下,本来是每复制一个应用创建一个项目的,但是随着复制应用数量的不断增多打包以及修改bug时出问题了,我必须把所有项目打开挨个把问题代码复制一遍,这样导致出错率很高而且很浪费时间。

无意间我了解到ios的项目是在一个工程目录中进行管理的,由此我问了一下ios开发的同事,用了是叫一个target的东西去区分配置每个应用的。所以我在想既然ios有这样的功能那么android是不是也有呢。我查了好多的网上资料,大概总结有两种方式,一种是把项目中公共部分提取出来做成module,�第二种是通过Grandle去动态设置应用名包名以及资源文件。第一种方法我在试用过程中由于问题较多所以我进行到一半放弃了,下面我要说的是第二种方法。

首先你要复制多个应用你要先理清需求,像我们的应用就是应用多但要发布的渠道少,也就是每个应用的渠道除了渠道号没有区别,但不同应用之间会有一些区别


Android Studio实现多个类似应用在同一个项目中管理_第1张图片

往常productFlavors中是分不同的渠道打包的,那么每一个复制应用都算是一个渠道,通过上图可以看出每一个渠道都配置了应用名、包名、第三方sdk的key值、接口地址公共部分,所有本地不同的地方的配置信息都要在这儿写出来。方便项目中代码或者xml文件中调用。

有人会问你这样把渠道配置给占用了那如果以后我想打不同渠道的包是不是还要一个个把渠道名挨个改掉,这个总是我也注意到了我是如下图这样做的


Android Studio实现多个类似应用在同一个项目中管理_第2张图片

我的方法是把buildTypes分为debug,release两个版本,然后有几个渠道创建几个版本并以渠道名命名,这样在调试时就可以在build variant中选择对应的应用渠道进行调试。

上面是讲了配置上的参数不同怎么去配置,下面讲的是代码与布局文件和资源文件不同怎么去配置


Android Studio实现多个类似应用在同一个项目中管理_第3张图片

这张图不知道能不能看得明白,在src路径下根据productFlavors中的名字对应创建不同的包名,在每个包下都可以创建布局文件以及资源文件像复制应用中的闪屏页以及图标都可以在各自的文件夹中配置好,(需要注意的一点是如果是代码不同业务逻辑不同那么main中是不能有对应部分的代码的,不然打包时会冲突,但是我还没有验证过希望验证的朋友可以确认下。)所有的配置都已经完成。下面就是打包然后发布此处不再细说。

你可能感兴趣的:(Android Studio实现多个类似应用在同一个项目中管理)