2013-04-25 70 views
4

我想用Gradle構建一個Android項目。android - gradle多項目包含和排除庫

它具有以下結構:

ProjectA----- MainProject, 
LibA  ---- Library project, 
LibB  ---- Library project, 
LibC  ---- Library project, 
LibD  ---- Library project, 
etc... 

基於situtation,我需要包括庫,有時需要包括所有庫,庫1,2或3等基於口味。 在設置文件中我包含了所有的項目。

有人知道如何根據口味包含/排除庫嗎?

我試過依賴塊,那裏我得到錯誤。
下面是示例代碼

dependencies { 
if (task.name.matches('compileFlovor1'){ 
    exclude module: 'LibD' 
    } 
} 

錯誤是:找不到方法排除()爲參數[{模塊= LIBD}]。

請指引我解決這個問題

回答

6

做添加您必須配置根據配置的味道具體的依賴。 假設你有味道的「自由」和「祈禱,」

android { 
    productFlavors { 
     free 
     paid 
    } 
} 

,那麼你可以通過以下方式設置風味特殊的依賴關係的依賴塊:

dependencies { 
    compile project(':library1') //library1 used in free and paid flavour 
    freeCompile project(':library2') 
    paidCompile project(':library3')  
    paidCompile project(':library4')  
    paidCompile project(':library5')  
} 

希望幫助,

歡呼聲, René

+0

謝謝Rene Grieschke ...它對我有用。非常感謝你..也可以排除嗎? – user2318724 2013-04-26 15:37:06

+0

我們以自定義的方式處理依賴項,並且不提供排除依賴項的方法。我不確定這將如何工作。唯一的方法是除去頂層依賴(及其所有傳遞dep),因爲任何其他可能會破壞構建。也可能只是在需要它的風味中聲明它。 – 2013-04-27 17:41:59

+0

繼續回答上述問題,庫是如何作爲ProjectA主項目的apk文件的一部分包含在內的。在ProjectA/build/class/flavor /中,只包含庫項目類文件,這些文件在ProjectA編譯時需要,並且只有該庫可以工作。我的東西是即插即用庫。意思是一個庫可以提供一個服務,並且不會在ProjectA中使用任何位置或導入,只包含在ProjectA的清單文件中。在這種情況下,如何包含這些庫。對於例如:在eclipse中,它將捆綁在一起,但在我的情況下不會發生同樣的情況......在此先感謝 – user2318724 2013-04-30 10:02:50

相關問題