【问题标题】:How to copy resources files from other directory into Android project during sync or build?如何在同步或构建期间将资源文件从其他目录复制到 Android 项目中?
【发布时间】:2017-03-04 07:22:36
【问题描述】:

问题

当您需要在 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,但是假设这些文件经常更改,我希望在同步或构建时自动获取当前版本。如果这是可能的,我将不胜感激知道如何去做。如果不可能,我也想知道。

【问题讨论】:

  • “但据我所知,它没有复制任何东西”——你运行任务了吗?任务不会自行执行。要么您自己执行它们,要么您编写一些额外的 Gradle 代码以将它们添加到现有的构建任务系列中。

标签: android android-studio gradle


【解决方案1】:

How to run copy task with android studio into assets folder


可以添加

preBuild.dependsOn copyResources

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

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

【讨论】:

  • 谢谢!就是这样!但是为什么说“这不是复制资源的好方法”?您会建议像其他答案所说的那样创建一个库,还是有其他原因您这么说?
  • 如果缺少一些图像文件(或重命名),编辑器可能会与@drawable 等混淆。我认为批处理文件是一种替代方案。
【解决方案2】:

通常你不想这样做。原因是它会使原本干净的源代码控制系统被复制的文件弄糊涂。

一个更好的主意是构建一个位于单独项目中的 Android 库 (AAR),然后通过将该 AAR 作为依赖项添加到父项目来使用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多