在构建之前如何让gradle运行任务?

时间:2016-07-27 19:00:29

标签: android gradle android-ndk gradle-experimental

我正在使用gradle-experimental使用ndk项目。我有一个“预构建”的库,它实际上是我在gradle任务中使用shell调用生成的库。我试图让这个项目很容易开箱即用,所以我需要能够在gradle构建之前运行这个buildTask。我调查了preBuild.dependsOn ...,但不幸的是,这在实验中并不受支持。有任何想法吗?我目前有一个运行它的.sh文件,但我正试图摆脱它。

编辑:不重复,因为gradle-experimental不支持preBuild,正如我已经说过的那样。

1 个答案:

答案 0 :(得分:0)

假设:

  • NDK moduleName foo
  • 支持ABI armeabi
  • Variants 调试 发布

您必须为添加到abiFilters的每个变体和ABI创建组合。

build.gradle

中创建一个RuleSource类
class FooRuleSource extends RuleSource {

    @Mutate
    void validatePreCompileFooDebugEnvironmentArmeabi(
        @Path('tasks.compileFooArmeabiDebugSharedLibraryFooMainCpp') Task compileTask) {
        validateEnvironment(compileTask)
    }

    @Mutate
    void validatePreCompileFooReleaseEnvironmentArmeabi(
        @Path('tasks.compileFooArmeabiReleaseSharedLibraryFooMainCpp') Task compileTask) {
        validateEnvironment(compileTask)
    }

    private void validateEnvironment(compileTask) {
        compileTask.dependsOn("desiredTask")
    }

}

build.gradle

中创建任务
task desiredTask(type:Exec){
    commandLine 'echo', 'hi'
}