在当前的构建脚本中,我有特殊的/ res /和/ assets文件夹,它们在构建时会复制到文件的工作版本中。在/ assets /中,是 bundle 数据(sql和文本文件),而在/ res / values /中,我有一个connection.xml值文件。
这些文件在工作目录中已经存在重复,但是在构建时,我想使用项目的/ config /文件夹中的文件,并将它们复制到当前构建的/ res和/ assets中。
在我详细的日志记录中,我得到一个
尝试复制文件时出现“com.android.ide.common.res2.DuplicateDataException”。
任何想法如何处理?我可以使文件名唯一,但是里面的键/值对不是吗?这样可以解决问题吗?
我的Build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.0'
}
}
apply plugin: 'android'
android {
compileSdkVersion "Google Inc.:Google APIs:18"
buildToolsVersion "17"
signingConfigs {
release {
storeFile file("../../TioClient/keystore/android.keystore")
storePassword "REDACTED"
keyAlias "pge-android"
keyPassword "lightmaker"
}
}
buildTypes {
dev {
signingConfig signingConfigs.release
}
tps {
signingConfig signingConfigs.release
}
production {
signingConfig signingConfigs.release
}
}
defaultConfig {
minSdkVersion 8
targetSdkVersion 15
}
dependencies {
compile project(':TioClient');
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = []
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
tps {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = []
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res','config/tps/res']
assets.srcDirs = ['assets', 'config/tps/assets']
}
instrumentTest.setRoot('tests')
}
}
最佳答案
您可以通过在src
中包含适当的文件夹来在构建类型级别或产品 flavor 级别定义 Assets 。
构建类型资源将覆盖 flavor 资源,而 flavor 资源将覆盖主要资源。
关于android - Gradle + Android,想要用buildFlavor中的自定义文件夹覆盖/assets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18795344/