42

build.gradle次の内容の非常に単純なファイルがあります。

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()
    }
}

私が望むのは、generateSourcesJava コンパイルが開始される前にタスクを実行することです。のように、それを行う方法をいくつか見つけましcompileJava.dependsOn("generateSources")たが、残念ながらエラーが発生します。

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

私は Gradle を知らず、このコードの何が問題なのか理解できません。したがって、このエラーを修正する方法を知りたいです。

4

5 に答える 5

28

Android で Java コンパイルの前にタスクを実行する適切な方法は、各バリアントのコンパイル タスクをタスクに依存させることです。

afterEvaluate {
  android.applicationVariants.all { variant ->
    variant.javaCompiler.dependsOn(generateSources)
  }
}
于 2016-03-31T12:57:17.770 に答える