我正在使用gradle-experimental进行ndk项目。我有一个“预构建”库,它实际上是我在gradle任务中通过shell调用生成的库。我正在尝试使该项目的开箱即用非常容易,因此我需要能够在gradle构建之前运行此buildTask。我已经研究了preBuild.dependsOn ...,但不幸的是,实验不支持该功能。有任何想法吗?我目前有一个运行它的.sh文件,但我正试图摆脱它。

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

最佳答案

假设:

  • 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'
    }
    

    10-07 19:20
    查看更多