创建预构建事件以将文件复制到Android应用程序中的assets文件夹

时间:2015-12-17 12:16:07

标签: android android-studio gradle build.gradle pre-build-event

我有这个项目结构: 的 ProjectFolder / IosFolder,AndroidFolder,CommonFolder 现在Android应用程序使用其资源文件夹中的文件。 但我们决定为相同的文件制作Common文件夹。

你能帮我制作函数吗会将文件从 Common 文件夹中复制(这个文件夹在我的项目下,所以在Android Studio中我不会看到它)到android 应用程序构建之前的资源文件夹?

在Common文件夹中会有一些.json文件和字体文件。

据我了解,我需要在build.gradle文件中编写此函数 类似的东西:

@company

这是我的档案:

task copyFiles(type: Copy)

    copyFiles {
        description = 'Copy files'
        from 'Common/'
        into 'Android/{projectName}/app/src/main/assets'
    }

你能告诉我在哪里可以看到Gradle Console中已执行方法的结果吗?

我需要使用哪条路径以及build.gradle文件在哪里放置此方法?

希望你能帮助我。

2 个答案:

答案 0 :(得分:6)

您可以尝试这种配置:

gradle.projectsEvaluated {
     preBuild.dependsOn(copyFiles)
}

更新: 复制任务可以为您执行许多命令。来自这里的文档是例子:

task anotherCopyTask(type: Copy) {
// Copy everything under src/main/webapp
from 'src/main/webapp'
// Copy a single file
from 'src/staging/index.html'
// Copy the output of a task
from copyTask
// Copy the output of a task using Task outputs explicitly.
from copyTaskWithPatterns.outputs
// Copy the contents of a Zip file
from zipTree('src/main/assets.zip')
// Determine the destination directory later
into { getDestDir() }

}

如果您只想从一个源目录复制到另一个源目录,则可以执行以下操作:

task copyFiles(type: Copy) {
    from 'pathToMyAssets'
    into 'AndroidStudioAssetsFolderPath'
}

更新在应用程序的build.gradle底部执行此操作:

task copyFiles(type: Copy) {
    from 'Users/kostya/repo_amc_mobile_promo/Common/'
    into 'Users/kostya/repo_amc_mobile_promo/Android/AMC_Mobile_Promo2/app/src/main/assets'
}

preBuild.dependsOn(copyFiles)

答案 1 :(得分:0)

根据documentation,这里是如何通过graddle复制文件:

task myCopyTask(type: Copy) {
    from file("${buildDir}/reports/my-report.pdf")
    into file("${buildDir}/toArchive")
}

要在构建之前执行此操作,您必须添加以下行:

preBuild.dependsOn(myCopyTask)

您可以使用可能使用某些project propertiesabsoluterelative路径。为了确保项目属性的路径,请不要犹豫,使用:

打印它
println file('${buildDir}')