使用 Android Gradle 插件在编译前运行任务 [英] Run task before compilation using Android Gradle plugin

查看:39
本文介绍了使用 Android Gradle 插件在编译前运行任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个非常简单的 build.gradle 文件,内容如下:

I have a very simple build.gradle file with the following content:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.1'
    }
}

apply plugin: 'android'

android {
    buildToolsVersion "17.0.0"
    compileSdkVersion 17

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
}

task generateSources {
    doFirst {
        def script = "python GenerateSources.py".execute()
        script.in.eachLine {line -> println line}
        script.err.eachLine {line -> println "ERROR: " + line}
        script.waitFor()
    }
}

我想要的是在java编译开始之前运行generateSources任务.我找到了几种解决方案,比如 compileJava.dependsOn("generateSources"),但不幸的是他们给出了一个错误:

What I want is to run generateSources task before java compilation is started. I found several solutions how to do that, like compileJava.dependsOn("generateSources"), but unfortunately they give an error:

A problem occurred evaluating root project 'Android'.
> Could not find property 'compileJava' on root project 'Android'.

我不了解 Gradle,也无法理解这段代码有什么问题.所以我想知道如何解决这个错误.

I don't know Gradle and can't understand what's wrong with this code. So I would like to know how I can fix this error.

推荐答案

在 Android 上编译 Java 之前运行任务的正确方法是根据您的任务为每个变体制作一个编译任务.

The proper way to run a task before Java compilation on Android is to make a compilation task for each variant depend on your task.

afterEvaluate {
  android.applicationVariants.all { variant ->
    variant.javaCompiler.dependsOn(generateSources)
  }
}

这篇关于使用 Android Gradle 插件在编译前运行任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆