[英]gradle: Android Studio inherit buildtype
我在gradle(Android Studio)中有4种构建类型
android {
buildTypes {
release { ... }
debug { ... }
kindle { ... }
kindle_debug { ... }
}
}
而且我知道,我的src
文件夹可以为每个构建类型都有一个文件夹。 所以它最终变成
src/
-- debug
-- kindle
-- kindle_debug
-- main // used for every project
-- release
目前, kindle
与release
相同, kindle_debug
与debug
相同。
如何避免重复src文件夹? 有没有一种方法可以从release
和debug
继承,或者我可以自己在build.gradle
文件中设置src文件夹?
编辑:一种似乎可行的解决方案是设置符号链接,但是我想使用Mac OS和Windows OS,并不是每个新用户都希望自己设置符号链接。
编辑2:我现在使用产品口味,因此,我可以进行调试/发布,并且可以使用该Google,亚马逊和三星。 这是我达到目的的最佳解决方案。
您可以继承如下的构建类型:
buildTypes {
release { ... }
debug { ... }
kindle {
initWith buildTypes.release
...
}
kindle_debug {
initWith buildTypes.debug
...
}
}
答案可能有点晚,但是我遇到了类似的问题,并通过执行以下操作设法解决了这个问题:
android {
sourceSets {
kindle {
java.srcDirs = ["src/release/java", "src/main/java"]
}
kindle_debug {
java.srcDirs = ["src/debug/java", "src/main/java"]
}
}
}
如果将其添加到build.gradle文件中,kindle构建类型将仅使用release和main文件夹中的java文件,kindle_debug构建类型将使用debug和release文件夹。
当然,您可以添加kindle文件夹或kindle_debug文件夹:
java.srcDirs = ["src/kindle/java", "src/release/java", "src/main/java"]
java.srcDirs = ["src/kindle_debug/java", "src/debug/java", "src/main/java"]
但是您可能会遇到重复的类错误。
如果我正确理解了这一点,那么您只希望调试和发行版之间只有几个文件有所不同? 在这种情况下,以下方法应该起作用(我的用例与您的用例相同):
https://stackoverflow.com/a/28279105/1041533
为了完整起见,我将上述答案的相关部分粘贴到此处:
目的是根据发布或调试版本来修改每个客户的xml文件夹中的文件。 这可以通过相应的文件夹结构来实现。 根据最初的问题,我们有3个客户,每个客户都有一个调试和一个发布版本。 对于每个客户和构建类型,上述xml文件都是不同的。 因此,以下目录结构为:
src/
- customerA
//Contains all relevant resource files specific to customer A
- customerB
//Contains all relevant resource files specific to customer B
- customerC
//Contains all relevant resource files specific to customer C
- customerADebug
//Contains debug server-settings file for customer A
- customerBDebug
//Contains debug server-settings file for customer B
- customerCDebug
//Contains debug server-settings file for customer C
- customerARelease
//Contains release server-settings file for customer A
- customerBRelease
//Contains release server-settings file for customer B
- customerCRelease
//Contains release server-settings file for customer C
因此,每种产品口味的主要内容都在与口味相同的文件夹中(customerA,customerB等,请参见上面代码片段的第一部分)。 现在,将这个文件(基于每个客户的调试版本或发布版本而有所不同)放入相应的文件夹中,例如customerADebug->包含具有调试模式等服务器设置的文件。
例如,在构建customerA时,如果您构建调试或发布版本,则将选择正确的文件。
请让我知道是否需要进一步澄清。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.