Android gradle在合并时更改资源

Android gradle在合并时更改资源,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我有一个json配置文件,我把它放在res/raw文件夹中。以前,我有一个gradle脚本,可以在必要时更新文件内容 def fetchMeta(buildVariant) { def flavor = buildVariant.productFlavors.get(0).name def buildType = buildVariant.buildType.name def middleMetaFolder = "${buildDir}/intermediates/me

我有一个json配置文件,我把它放在res/raw文件夹中。以前,我有一个gradle脚本,可以在必要时更新文件内容

def fetchMeta(buildVariant) {
    def flavor = buildVariant.productFlavors.get(0).name
    def buildType = buildVariant.buildType.name
    def middleMetaFolder = "${buildDir}/intermediates/meta/${flavor}"
    def pathToMiddleMeta = "${middleMetaFolder}/latest.json"
    def rawFolder = "${buildDir}/intermediates/res/merged/${buildVariant.dirName}/raw/"

    def f = new File(pathToMiddleMeta)
    boolean doDownload = (!f.exists()) || (f.lastModified() < (System.currentTimeMillis() - 86400000))
    // Force on production release
    if (doDownload || (flavor == "production" && buildType == "release")) {
        new File(middleMetaFolder).mkdirs()

        def serverAddress = "https://example.com"
        String srcUrl = serverAddress + "/latest.json"
        println "Downloading Meta from: " + srcUrl + " to " + pathToMiddleMeta
        new URL(srcUrl).withInputStream { i -> f.withOutputStream { it << i } }
    } else {
        println "Skipping Meta as it exists here: " + pathToMiddleMeta
    }

    copy {
        from pathToMiddleMeta
        into rawFolder
    }
}
android.applicationVariants.all { variant ->
    variant.mergeResources.doLast {
        fetchMeta(variant)
    }
}
def fetchMeta(buildVariant){
def flavor=buildVariant.productFlavors.get(0).name
def buildType=buildVariant.buildType.name
def middleMetaFolder=“${buildDir}/mediates/meta/${flavor}”
def pathToMiddleMeta=“${middleMetaFolder}/latest.json”
def rawFolder=“${buildDir}/intermediates/res/merged/${buildVariant.dirName}/raw/”
def f=新文件(pathToMiddleMeta)
布尔值doDownload=(!f.exists())| |(f.lastModified()<(System.currentTimeMillis()-86400000))
//强制生产放行
if(doDownload | |(flavor==“生产”和&buildType==“发布”)){
新文件(middleMetaFolder).mkdirs()
def服务器地址=”https://example.com"
字符串srcUrl=serverAddress+“/latest.json”
println“正在从“+srcUrl+”下载元数据到“+pathToMiddleMeta”
新URL(srcUrl).withInputStream{i->f.withOutputStream{it
variant.mergeResources.doLast{
fetchMeta(变体)
}
}

但是从android gradle plugin 3.0开始,合并策略发生了变化,文件的扩展名是扁平的。在这些变化之后,我如何更新文件的内容?

也有同样的问题,从aapt更新到aapt2

问题已在google问题跟踪程序中分配

作为一种解决方法,现在可以在gradle.properties中设置android.enableApt2=false