在Android Studio中进行gradle构建期间,如何将资产提取到assets目录?

时间:2014-07-07 20:51:57

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

我的Android项目有一些资源没有使用源代码检入,而是由构建系统下载。我已经想出如何在gradle中下载和提取它们,但我似乎在构建过程中做得太晚了,因为它们没有被复制到apk。

def assetsDir = new File(projectDir, 'src/main/assets')

task extractAssets(type: Exec) {

  def wd = assetsDir
  def extractDir = 'extractedStuff'

  outputs.dir "${wd}/${extractDir}"

  workingDir wd
  commandLine 'tar', 'xzf', 'assets-to-extract.tgz', extractDir
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn extractAssets
}

我第一次在干净之后运行它,它将资产提取到assets目录中,但不包括在我的apk中。在那之后,每当我构建时,它都包含apk中的资产。我的结论是,我应该让我的extractAssets任务在构建过程中更早发生(在mergeAssets之前?)。如果是这样,我在哪里添加dependsOn?

1 个答案:

答案 0 :(得分:3)

在您的gradle文件中,您可以指定在构建之前执行的任务:

preBuild.dependsOn(extractAssets)

这将在构建之前执行“extractAssets”

希望它有所帮助!