Android Gradle Pluginでは、sourceSets
として以下のようなものが指定できる。
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
ディレクトリ構造を変えたくて上記を変更しようとしたとき、上記のうちres
とresources
は何が違うのか?という点がすぐには分からなかったのでメモ。
Gradle Plugin User Guide には以下のように書いてある。
To replace the default source folders, you will want to use srcDirs
instead, which takes an array of path. This also shows a different way
of using the objects involved:sourceSets { main.java.srcDirs = ['src/java'] main.resources.srcDirs = ['src/resources'] }
For more information, see the Gradle documentation on the Java plugin
here.
sourceSets
で設定できるものはすべてAndroidプラグイン独自のものなのではなくJavaプラグイン由来のものとAndroid独自のものがある。
つまり、resources.srcDirs
はJavaでいうリソースなので.properties
ファイルなどを配置するディレクトリのこと。
なので、Androidでいうリソースファイル(res
フォルダ以下のXMLなど)の配置はsourceSets.main.res.srcDirs
で設定するのが正しい。