android - 在 Android Studio 中进行 gradle 构建时,如何将资源提取到资源目录中?

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

我的 Android 项目有一些资源没有 checkin 源代码,而是由构建系统下载。我已经弄清楚如何在 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
}

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

最佳答案

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

preBuild.dependsOn(extractAssets)

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

希望对你有帮助!

关于android - 在 Android Studio 中进行 gradle 构建时,如何将资源提取到资源目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24619671/

相关文章:

android - 使用 FLAG_NO_LIMIT 后 SnackBar 落后于 NavigationBar

java - Gradle 构建错误 : Failed to appy plugin[class 'org. gradle.api.plugins.JavaPlugin

Android Studio 无法从连接的设备启动

M1 MacBook Pro 上的 Android Studio 无法使用 ABI armeabi-v7a 模拟系统镜像

android - Gradle NDK 在生成的 Android.mk 中指定 'include' 指令

android - 接收大型 XML 对象

Android Studio & Gradle : Multiple dex files

android - 将 Gradle 从 3.3 降级到 2.14.1

java - 使用 Zxing 条形码的 1 个 Activity 的多个 onActivityResult

android - 在Android上可靠地顺序播放音频