摇篮+ Android的,要在buildFlavor自定义文件夹覆盖/资产 [英] Gradle + Android, want to overwrite /assets with custom folder in buildFlavor

查看:163
本文介绍了摇篮+ Android的,要在buildFlavor自定义文件夹覆盖/资产的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我目前的构建脚本我有特殊的/ RES /和/资产的文件夹,我拷过来的文件在生成时工作的版本。在/资产/捆绑数据(SQL和文本文件),而在/ RES /值/我有一个connection.xml值文件。

有已经在工作目录中的这些文件的副本,但是在编译的时候我想从我的项目的/配置/文件夹中使用的那些,并复制它们在中/ RES的那些和/资产当前建立。

在我详细的记录,我收到了
com.android.ide.common.res2.DuplicateDataException当它试图复制的文件。

任何想法是怎么来处理呢?我可以使文件名唯一的,但它里面的键/值对会不会?那会解决这一问题?

我的build.gradle

  buildscript {
    库{
        mavenCentral()
    }
    依赖{
        类路径'com.android.tools.build:gradle:0.5.0
    }
}
应用插件:'机器人'安卓{
    compileSdkVersion谷歌Inc.:Google的API:18
    buildToolsVersion17    signingConfigs {
        发布 {
            storeFile文件(../../ TioClient /密钥库/ android.keystore)
            storePassword绝密
            keyAlias​​PGE-机器人
            keyPasswordlightmaker
        }
    }    buildTypes {
        开发{
            signingConfig signingConfigs.release
        }
        TPS {
            signingConfig signingConfigs.release
        }
        生产 {
            signingConfig signingConfigs.release
        }
    }    defaultConfig {
        8的minSdkVersion
        targetSdkVersion 15
    }    依赖{
       编制项目(':TioClient');
    }    sourceSets {
        主要{
            manifest.srcFile'的Andr​​oidManifest.xml
            java.srcDirs = []
            resources.srcDirs = ['src'中]
            aidl.srcDirs = ['src'中]
            renderscript.srcDirs = ['src'中]
            res.srcDirs = ['水库']
            assets.srcDirs = ['资产']
        }
        TPS {
            manifest.srcFile'的Andr​​oidManifest.xml
            java.srcDirs = []
            resources.srcDirs = ['src'中]
            aidl.srcDirs = ['src'中]
            renderscript.srcDirs = ['src'中]
            res.srcDirs = ['资源','配置/ TPS / RES']
            assets.srcDirs = ['资产','配置/ TPS /资产]        }
        instrumentTest.setRoot(测试)
    }
}


解决方案

您可以通过在你的的src 相应的文件夹定义在buildtype级别或产品风味水平的资产。

构建资源型香精替代资源,覆盖主要资源。

In my current build scripts I have special /res/ and /assets folders that I copy over the working versions of the files at build time. In /assets/ is bundled data (sql and a text file) while in /res/values/ I have a connection.xml values file.

There are already duplicates of these files in the working directory, however at build time I want to use the ones from the /config/ folder of my project and copy them over the ones in the /res and /assets for the current build.

In my verbose logging I get a "com.android.ide.common.res2.DuplicateDataException" when it tries to copy the file.

Any idea's how to handle this? I can make the filename unique, but the key/value pairs inside it will not be? Would that solve the issue?

My 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')
    }


}

解决方案

You can define assets at the buildtype level or product flavor level by including appropriate folders in your src.

Build type resources override flavor resources which override main resources.

这篇关于摇篮+ Android的,要在buildFlavor自定义文件夹覆盖/资产的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆