如何在library中使用productFlavors

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

前言:

前面筆者介紹過,如果用一套代碼,定制化多個app。那就是使用productFlavors。
一般情況下都沒有問題,但是在library的gradle里面,直接使用productFlavors是不允許的。所以下面我們就來介紹一下如何在library中使用productFlavors。

1.基礎(chǔ)

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

2.場景介紹

首先我們引用了一個picmodule,然后picmodule里面有一個正常的產(chǎn)品,兩個定制化的產(chǎn)品

image.png

main是普通產(chǎn)品,red和blue是定制化產(chǎn)品(這里只是里面使用的圖片不一樣)

3.解決方法

于是我們就在picmodule的gradle配置productFlavors,但是picmodule是屬于一個library,所以這樣做是不允許的,項目將找不到引入的picmodule

image.png

那么如何解決呢?
首先我們需要在picmodule的gradle里面加入一句話(記住不要漏了)

publishNonDefault true
image.png

接著我們在application下的build.gradle里面加入一些配置
Android模塊內(nèi)加入

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都可以

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容