美文网首页
如何在library中使用productFlavors

如何在library中使用productFlavors

作者: o动感超人o | 来源:发表于2017-06-15 16:47 被阅读547次

源地址:http://blog.csdn.net/yulyu/article/details/70257015?utm_medium=referral&utm_source=itdadao

前言:

前面笔者介绍过,如果用一套代码,定制化多个app。那就是使用productFlavors。
一般情况下都没有问题,但是在library的gradle里面,直接使用productFlavors是不允许的。所以下面我们就来介绍一下如何在library中使用productFlavors。

1.基础

前面介绍过如何使用productFlavors,不了解的朋友需要先看看这篇文章
活用productFlavors,批量定制化
http://blog.csdn.net/yulyu/article/details/59111697

2.场景介绍

首先我们引用了一个picmodule,然后picmodule里面有一个正常的产品,两个定制化的产品

image.png

main是普通产品,red和blue是定制化产品(这里只是里面使用的图片不一样)

3.解决方法

于是我们就在picmodule的gradle配置productFlavors,但是picmodule是属于一个library,所以这样做是不允许的,项目将找不到引入的picmodule

image.png

那么如何解决呢?
首先我们需要在picmodule的gradle里面加入一句话(记住不要漏了)

publishNonDefault true
image.png

接着我们在application下的build.gradle里面加入一些配置
Android模块内加入

productFlavors{
    common{}

    red{}

    blue{}
}

在gradle最外层加入

configurations {
    commonCompile
    redCompile
    blueCompile
}
image.png

接着修改一下引入picmodule的方法
平时引入module是这样的

compile project(':picmodule')

我们改成下面这样

commonCompile project(path: ':picmodule', configuration: 'commonRelease')
redCompile project(path: ':picmodule', configuration: 'redRelease')
blueCompile project(path: ':picmodule', configuration: 'blueRelease')

这里library我是用的Release包,如果要用debug版的library也可以改成下面这样

commonCompile project(path: ':picmodule', configuration: 'commonDebug')
redCompile project(path: ':picmodule', configuration: 'redDebug')
blueCompile project(path: ':picmodule', configuration: 'blueDebug')

然后同步一下就可以了
这个时候如果找不到R文件,那么clean一下或者重启一下as都可以

相关文章

网友评论

      本文标题:如何在library中使用productFlavors

      本文链接:https://www.haomeiwen.com/subject/vpkuqxtx.html