我目前正在使用gradle中的構建過程掙扎。我的目標是在特定風格的最終.apk中沒有特定的java類。 的邏輯是這樣的:Android Studio - Gradle組裝任務
1)編譯我的項目刪除MyClass.java和MyClass.java組裝APK副本回到我原來的文件夾
之後將其複製到一個臨時文件夾2)前
3.)刪除臨時文件夾
只有當我建立一個特定的味道,所以它不會發生所有構建變種。當我僅構建一種風味和一種構建變體時,我的代碼完美工作,例如assembleFlavorRelease,但如果我不想讓我的代碼適用於多種構建類型;如果我運行assembleFlavor,它應該像flavorRelease一樣創建flavorDebug。 然而,我的邏輯僅在第一次出現低谷時才停止,因此flavorDebug是使用MyClass構建的,它不應該是這樣,而flavorRelease在.apk中不包含MyClass,因爲我的代碼第一次運行。
下面是代碼的樣子:
task copyResource << {
copy {
from 'src/main/java/MyClass.java'
into 'src/temp'
}
}
task deleteResource << {
delete {
'src/main/java/MyClass.java'
}
}
task deleteTemp << {
delete {
'src/temp'
}
}
task copyBackToSource << {
copy {
from 'src/temp/MyClass.java'
into 'src/main/java'
}
deleteTemp.execute()
}
android.applicationVariants.all { variant ->
if (variant.name.contains('flavor')) {
deleteResource.dependsOn copyResource
variant.javaCompile.dependsOn deleteResource
variant.assemble.doLast {
copyBackToSource.execute()
}
}
}
我認爲,我在我的代碼使用目錄在某種程度上鎖定試圖執行的全過程,第二次是什麼時候?
謝謝你的回答,我知道這種解決方案。問題是我的應用程序結構很複雜,我有7種不同的風格,這意味着我將不得不在包含它的src中多次複製MyClass.java,再加上src結構在Android Studio中不可見Android視圖,因爲我知道。我想避免這個解決方案,我更喜歡我的解決方案,我的應用程序結構。我有沒有其他的方式來排除特定的類? – box
「這意味着我將不得不多次複製MyClass.java」是不正確的。我給出了兩個解決方案,一個是如果你需要一個單一的風格的文件,另一個包括一個單一的源目錄兩個或更多的味道,沒有重複的源文件。 「加上風格的src結構在Android視圖下不可見,因爲我知道」如果是這樣的話,我會感到驚訝。 –
哦,是的,對不起,你是對的,我可以把班上的共同點。我之前曾嘗試過,但正如我所說的那樣,它在項目結構中不太好,而且會產生一些其他問題。我發佈了正確的解決方案,下面是乾淨的,很好地工作。 – box