android - 在构建之前,如何获得执行任务的资格?

标签 android gradle android-ndk gradle-experimental

我正在使用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'
    } 
    

    关于android - 在构建之前,如何获得执行任务的资格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621149/

    相关文章:

    java - j2objc 不尊重死代码报告

    java - 错误 : resource android:attr/preserveIconSpacing is private

    Android.mk - 如何汇编和链接 ARM 汇编程序文件

    android - 集成 Spotify Android 库

    android - 使用 Android-NDK-16.1 构建 FFMPEG-3.4 时出错

    Android 10 请求 ACTIVITY_RECOGNITION 权限

    android - 使用 Dagger 时将 RestAdapter.build() 和 .create() 方法分开的原因是什么?

    android - 不是从 Activity 子类获取屏幕尺寸

    android - 标尺自定义 View

    java - 从Java(然后是Eclipse)运行Maven,Gradle或其他基于批处理的脚本