如何更改 Android productFlavors 的根文件夹
How to change the root folders for Android productFlavors
是否可以更改默认的 flavors 根路径?
发件人:
---src
-----main
-----flavor1
-----flavor2
-----flavor3
收件人:
---src
-----main
-----flavors
--------flavor1
--------flavor2
--------flavor3
您可以使用 sourceSets
来实现。
productFlavors {
flavor2 {
}
flavor1 {
}
}
sourceSets{
flavor2 {
manifest.srcFile 'AndroidManifest-flavor2.xml'
res.srcDirs = ['res-flavor2', 'res']
java.srcDirs = ['src/flavor2/java','src/commonFiles/java']
resources.srcDirs = ['src/flavor2/java','src/commonFiles/java']
aidl.srcDirs = ['src/flavor2/java','src/commonFiles/java']
renderscript.srcDirs = ['src/flavor2/java','src/commonFiles/java']
}
flavor1 {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src/flavor1/java','src/commonFiles/java']
resources.srcDirs = ['src/flavor1/java','src/commonFiles/java']
aidl.srcDirs = ['src/flavor1/java','src/commonFiles/java']
renderscript.srcDirs = ['src/flavor1/java','src/commonFiles/java']
res.srcDirs = ['res-flavor1','res']
assets.srcDirs = ['assets']
}
}
是的,这可以使用 sourceSets
实现,但正确且更简单的解决方案是:
productFlavors{
flavor1 {}
flavor2 {}
}
sourceSets{
flavor1.setRoot('src/flavors/flavor1')
flavor2.setRoot('src/flavors/flavor2')
}
如果您不想每次添加风味时都在 sourceSets 中添加一行,您可以像这样使用闭包
productFlavors{
flavor1 {}
flavor2 {}
all { flavor ->
sourceSets[flavor.name].setRoot("src/flavors/${flavor.name}")
}
}
是否可以更改默认的 flavors 根路径?
发件人:
---src
-----main
-----flavor1
-----flavor2
-----flavor3
收件人:
---src
-----main
-----flavors
--------flavor1
--------flavor2
--------flavor3
您可以使用 sourceSets
来实现。
productFlavors {
flavor2 {
}
flavor1 {
}
}
sourceSets{
flavor2 {
manifest.srcFile 'AndroidManifest-flavor2.xml'
res.srcDirs = ['res-flavor2', 'res']
java.srcDirs = ['src/flavor2/java','src/commonFiles/java']
resources.srcDirs = ['src/flavor2/java','src/commonFiles/java']
aidl.srcDirs = ['src/flavor2/java','src/commonFiles/java']
renderscript.srcDirs = ['src/flavor2/java','src/commonFiles/java']
}
flavor1 {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src/flavor1/java','src/commonFiles/java']
resources.srcDirs = ['src/flavor1/java','src/commonFiles/java']
aidl.srcDirs = ['src/flavor1/java','src/commonFiles/java']
renderscript.srcDirs = ['src/flavor1/java','src/commonFiles/java']
res.srcDirs = ['res-flavor1','res']
assets.srcDirs = ['assets']
}
}
是的,这可以使用 sourceSets
实现,但正确且更简单的解决方案是:
productFlavors{
flavor1 {}
flavor2 {}
}
sourceSets{
flavor1.setRoot('src/flavors/flavor1')
flavor2.setRoot('src/flavors/flavor2')
}
如果您不想每次添加风味时都在 sourceSets 中添加一行,您可以像这样使用闭包
productFlavors{
flavor1 {}
flavor2 {}
all { flavor ->
sourceSets[flavor.name].setRoot("src/flavors/${flavor.name}")
}
}