我的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?
答案 0 :(得分:3)
在您的gradle文件中,您可以指定在构建之前执行的任务:
preBuild.dependsOn(extractAssets)
这将在构建之前执行“extractAssets”
希望它有所帮助!