android - Gradle + Android,想要用buildFlavor中的自定义文件夹覆盖/assets

标签 android gradle

在当前的构建脚本中,我有特殊的/ 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/

相关文章:

Android Couchbase Lite 复制

gradle - gradle-从关系中的依赖项目建立耳朵

node.js - Node 尝试查找很早才在:app:bundleReleaseJsAndAssets阶段删除的包

Android WifiLock 在 Android 上无法正常工作

java - 检索类或对象的实例

java - LinkedHashMap 到 LinkedHashMap 或 ArrayList 的逆序

java - Soap登录使用5个参数android

gradle - 如何使用gradle将资源添加到sourceSet?

android - 使用android在gradle上单独集成测试任务

android - 如何增加 Gradle 守护程序的最大堆大小?