Gradle中productFlavors的使用指南

我们都知道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命名。工程结构看起来是这样子的
Gradle中productFlavors的使用指南_第1张图片

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

/**
 * Created by Rex on 2015/12/24.
 * blog.csdn.net/zoudifei
 * email:[email protected]
 * 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:[email protected]
 * 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
Gradle中productFlavors的使用指南_第2张图片

这时发现,在charge目录下面的Java变成了蓝色,这时,表示引用的是此目录下的文件。
Gradle中productFlavors的使用指南_第3张图片

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

你可能感兴趣的:(Gadle,gradle)