2017-09-15 98 views
0

我有一個有3個模塊,它在Android Studio項目。 A,B,C A依賴於C和B取決於C. 我試圖加快生成時間,我意識到,我每次執行assembleRelease/assembeDebug任務時間構建的所有模塊。 每次我構建模塊A時,只應該構建A和C,因爲B在該任務中沒有依賴關係,對吧? 我如何避免模塊B每次構建模塊A時構建?排除模塊構建Android工作室

模塊A的依賴關係:

dependencies { 
    compile project(path: ':c', configuration: 'release') 
    provided files('libs/some-lib.jar') 
} 

模塊B的依賴關係:

dependencies { 
    compile project(path: ':c', configuration: 'debug') 
} 

模塊C的依賴關係:

dependencies { 
    compile files('libs/other-lib.jar') 
} 
+0

你是如何運行的任務?通過命令行或通過Android Studio中的Gradle對話框? – jdv

+0

我跑離gradle這個對話框任務..從命令行和構建時間,現在的IM正在運行的任務減少了很多..顯然gradle這個對話框建立的所有模塊不管你正在試圖建立 –

+0

正在發生的事情是,(如果你看看小心)從Android Studio運行子模塊任務實際上是從項目的根目錄調用任務。由於根通常包含所有的引用,因此它所配置的構建樹包含所有模塊。如果您啓動運行子模塊任務的Android Studio的第二個實例/窗口,只需創建一個基於該模塊的構建樹並且它是依賴關係。這很容易在Gradle日誌中看到。 – jdv

回答

0

There is a bug in Android Studio:如果你使用的搖籃項目對話框運行的任務,這些任務將在根上下文中運行。也就是說,如果仔細觀察,即使運行子模塊任務,也可以在根級別運行相同的任務。

解決方案:

  1. 使用命令行搖籃或搖籃包裝。
  2. 始終運行Android Studio中的兩個實例(即,有多個項目打開)根settings.gradle文件中
+0

我開始從控制檯使用如下命令構建:** gradlew a:assembleDebug ** ..構建時間減少了很多!謝謝 –

-1

簡單(在這種情況下,B)移除相關模塊的include語句應該從建立停止過Android Studio B,因爲它會將其從整個Gradle項目中排除。該模塊將保持完整,但是如果您打算修改其中的任何代碼,則需要重新添加include語句。另請注意,修改settings.gradle文件需要Android Studio的Gradle Sync才能正常運行。

+0

這就像說你不希望模塊B成爲項目的一部分,這可能不是我們想要在這裏做的。 – jdv

+0

這實際上取決於事情的結構是怎樣的,這是一種自以爲是的觀點。對於我來說,如果模塊目錄是項目的根中,我一個也不會考慮從項目被刪除,即使'''include'''聲明被刪除,它仍然存在,但它不活躍,因此會導致用更少的用量少構建這是OP – ahasbini

+0

是核心點,而Android工作室,至少在2.x中,removed_ _considers它。它甚至會問你是否要將它從模塊列表中移除,並且它將以UI中的正常字體而不是粗體呈現。即使你不「刪除」它,但將它保留在模塊列表中,但是沒有附加到主項目中,將會有各種問題。命令行中的Gradle可能仍然有效,但Android Studio中的同步和其他UI活動將永遠不會看到該模塊。此外,在團隊設置中,這個文件是共享的,調整它會導致各種不必要的混淆。 – jdv