2015-09-06 60 views
2

我有三個BuildTypes發佈,調試&自定義。我想保留自定義生成版本中的少量文件。 buildTypes允許我使用'custom.initWith'保留所有內容。 sourceSets有類似的東西嗎?Android/Gradle:包含幾個文件從一個味道到另一個味道?

buildTypes { 
     release { // release stuff} 
     debug { // debug stuff} 
     custom.initWith(buildTypes.release) 
     custom { // custom stuff } 
       } 
sourceSets { 
     main.setRoot('src/main') 
     release.setRoot('build-types/release') 
     debug.setRoot('build-types/debug') 
     custom.setRoot(//Want to include some files from 'build-types/release' 
          and all files from 'build-types/custom') 

這是可能的,通過Android中的Gradle?

setRoot讓我只包括「集結類型/自定義」。 將'build-types/release'文件夾中的所需文件改爲'build-types/custom'是可能的。這有一個缺點。在釋放和自定義文件夾

  1. 重複文件。
  2. 此外,如果我們在發佈修改一些需要定製進行修改。

其他問題只有針對資源文件的特定需求。 Android Flavors : Multiple java and src directories for each flavor。我想共享來自其他文件夾的文件,其中包含資源,java,&清單。

回答

1

您可以包含多個文件夾中的資源通過沿

sourceSets { 
    custom.manifest.srcFile 'AndroidManifest.xml' 
    custom.java.srcDirs = ['src/commonFiles/java'] 
    custom.resources.srcDirs = ['src/commonFiles/java'] 
    custom.aidl.srcDirs = ['src/commonFiles/java'] 
    custom.renderscript.srcDirs = ['src/commonFiles/java'] 
    custom.assets.srcDirs = ['assets'] 
    custom.res.srcDirs = ['src/custom/res', src/main/res'] 
} 

行腳本或者把custom自己的塊:

sourceSets { 
    custom { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src/commonFiles/java'] 
     resources.srcDirs = ['src/commonFiles/java'] 
     aidl.srcDirs = ['src/commonFiles/java'] 
     renderscript.srcDirs = ['src/commonFiles/java'] 
     assets.srcDirs = ['assets'] 
     res.srcDirs = ['src/custom/res', src/main/res'] 
    } 
} 

參見Resource Merging

+0

這一個僅適用於資源文件的「src/custom/res」。我是否需要爲java,資產和清單包含相同的內容? – wangadu

+0

@wangadu請參閱編輯答案,不能說我已經使用所有這些,但 – Kai

+0

謝謝你的工作! – wangadu

相關問題