Android Studio使用gradle实现资源自动拷贝

把下面的代码拷贝到appgradle.build文件内

android.applicationVariants.all{ variant ->
    delete "${buildDir}/intermediates/merged_assets/${variant.dirName}"  // buildDir是app下的build目录
    variant.mergeAssets.doLast{
        def sourceDir = "${buildDir}/../"   // 资源存放目录,这里是app下
        print "${buildDir} \n"  // 打印路径
        copy { // 将from目录下的资源拷贝到into 下目录去
            from "${sourceDir}/fromDir"
            into "${outputDir}/res"
        }
    }
}

注意:上面的配置需要工程使用的 com.android.tools.build:gradle 版本高于3.3.0,低于该版本的存在BUG,可能会报错,另外 2.x的配置参数与上述的不同,需要注意。

如果模块是Android Library,则需要如下配置:

android.libraryVariants.all{ variant ->
    delete "${buildDir}/intermediates/merged_assets/${variant.dirName}"  // buildDir是app下的build目录
    variant.mergeAssets.doLast{
        def sourceDir = "${buildDir}/../"   // 资源存放目录,这里是app下
        print "${buildDir} \n"  // 打印路径
        copy { // 将from目录下的资源拷贝到into 下目录去
            from "${sourceDir}/fromDir"
            into "${outputDir}/res"
        }
    }
}

设置完成后,执行Make Project,

可以看到在 log看到打印的buildDir路径。

之后可以在 工程目录 \app\build\intermediates\merged_assets\debug\mergeDebugAssets\out\res 看到文件已经拷贝过去

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注