Gradle中productFlavors的使用指南

来源:互联网 发布:节拍器软件 编辑:程序博客网 时间:2024/06/08 18:14

我们都知道gradle非常强大,功能太多,今天就来给大家介绍下productFlavors的逆天用法。productFlavors通常是指同一软件的不同版本,比如收费版,免费版。这个版本的逻辑肯定是不一样的。

如果在使用gradle之前,可能需要比较头痛的写2套代码,但现在,完全可以在一套代码中解决。

比如,我们可以在gradle文件中定义两个flavor。

  productFlavors {        free {            applicationId "com.win16.myapplication2.free"        }        charge {            applicationId "com.win16.myapplication2.charge"        }    }

我这里做了点扩展,为不同的favors生成了不同的包名。

现在我们有了2个flavor。这时,我们需要在src下,建立两个文件夹,分别以这两个flavor命名。工程结构看起来是这样子的
这里写图片描述

分别在这两个目录下创建一些代码。比如:
在Free下,

/** * Created by Rex on 2015/12/24. * blog.csdn.net/zoudifei * email:dfzou@live.com * powered by Win16.com */public class Logic {    public void someFuction(Context context) {        Toast.makeText(context, "This is free version!",Toast.LENGTH_LONG).show();    }}

在Charge下:

/** * Created by Rex on 2015/12/24. * blog.csdn.net/zoudifei * email:dfzou@live.com * powered by Win16.com */public class Logic {    public void someFuction(Context context) {        Toast.makeText(context, "This is charge version!",Toast.LENGTH_LONG).show();    }}

这两个类的接口是相同的,区别是弹出来的Toast不相同。

然后,我们在main文件夹下使用这个类

 new Logic().someFuction(this);

在BuildVarious中,选择chargeDebug
这里写图片描述

这时发现,在charge目录下面的Java变成了蓝色,这时,表示引用的是此目录下的文件。
这里写图片描述

小结
其实不管是buildType或是productFlavor都可以用这种方式进行版本的差异化管理。

0 2
原创粉丝点击