我有一个Eclipse项目,它使用Gradle从命令行构建.
有一个单独的资源文件夹,其中包含应该用于发布版本的应用程序图标.
这是我正在尝试做的事情:
sourceSets {
main {
res.srcDirs = isRelease() ? ['res', 'res-release'] : ['res']
}
}
Run Code Online (Sandbox Code Playgroud)
Gradle拒绝覆盖图标:
Execution failed for task ':myapp:mergeApphanceDebugResources'.
> /myapp/res-release/drawable-xhdpi/app_icon.png: Error: Duplicate resources: /myapp/res-release/drawable-xhdpi/app_icon.png:drawable-xhdpi/app_icon, /myapp/res/drawable-xhdpi/app_icon.png:drawable-xhdpi/app_icon
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉Gradle覆盖冲突?
编辑:我想保留默认的Eclipse项目结构(即没有main/java).
Mark的答案是正确的,但是由于你在另一个答案中评论了Eclipse支持,我将创建一个新的答案.
正如Mark所说,使用src/release/res(或调试)只发布你的发布图标.他们会自动覆盖其中的那些src/main/res
现在,如果您想继续支持Eclipse,只需重新定位发布源集,就像重新定位主源集一样:
android {
sourceSets {
main {
res.srcDirs = ['res']
}
release {
res.srcDirs = ['res-release']
}
}
}
Run Code Online (Sandbox Code Playgroud)
所有生成类型(默认情况下你必须debug和release),以及所有你的口味(默认为无香精),自动创建的默认值sourceSets src/<name>/[java|res|...].所有这些sourceSets都可以通过DSL重新配置以重新定位文件夹.
| 归档时间: |
|
| 查看次数: |
1310 次 |
| 最近记录: |