如何在同步或构建期间将资源文件从其他目录复制到Android项目?

时间:2016-10-21 21:42:12

标签: android android-studio gradle

问题

当您需要在Android项目中使用资源文件(例如图像)时,通常将它们放在res目录中(例如res/drawable),并且Android构建过程会将它们选中默认。但是,如果您的资源文件来自Android项目之外的目录,该怎么办?如何在同步或构建期间将它们复制到res/drawable这样的文件夹中?

我尝试了什么

我觉得解决方案是编写Gradle代码,但我不知道该怎么做。我在app模块build.gradle文件中尝试了以下代码:

task copyResources(type: Copy) {
    from '../../../images'
    into 'res/drawable'
}

但就我所知,它并没有复制任何东西。这可能只是我对如何使用Gradle的无知,我可以使用一些帮助。

我意识到我可以手动从../../../images复制到res/drawable,但是让我们说这些文件经常更改,我想在每次同步时自动获取当前版本,或者每当我建立。如果可以,我会很高兴知道如何做到这一点。如果不可能,我也想知道。

2 个答案:

答案 0 :(得分:2)

一般来说,你不想这样做。原因在于它使复制文件混淆了原本干净的源控制系统。

更好的想法是建立一个安装在单独项目中的Android库(AAR),然后通过将AAR添加为父项目的依赖项来使用它们。

答案 1 :(得分:2)

请参阅How to run copy task with android studio into assets folder

可以添加

preBuild.dependsOn copyResources

任务copyResources(){...}之后 在你的build.gradle中。

但是,这不是复制资源的好方法。