使用 Android Gradle 插件在编译前运行任务 [英] Run task before compilation using Android Gradle plugin
问题描述
我有一个非常简单的 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屋!