源地址: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里面有一個正常的產(chǎn)品祷膳,兩個定制化的產(chǎn)品
main是普通產(chǎn)品,red和blue是定制化產(chǎn)品(這里只是里面使用的圖片不一樣)
3.解決方法
于是我們就在picmodule的gradle配置productFlavors屡立,但是picmodule是屬于一個library直晨,所以這樣做是不允許的,項目將找不到引入的picmodule
那么如何解決呢?
首先我們需要在picmodule的gradle里面加入一句話(記住不要漏了)
publishNonDefault true
接著我們在application下的build.gradle里面加入一些配置
在Android模塊內加入
productFlavors{
common{}
red{}
blue{}
}
在gradle最外層加入
configurations {
commonCompile
redCompile
blueCompile
}
接著修改一下引入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都可以