Android Gradle-仅在“真正构建”库之后,如何在构建库之后调用外部命令?

时间:2019-06-12 20:39:58

标签: android gradle android-gradle

按照其他有关如何在构建库项目后在gradle中调用外部命令的主题,我设法使其工作。

我的情况是,Android NDK应用程序项目具有静态C ++库作为其依赖项模块。我想要的是在构建完成后将构建的库(* .a文件)复制到某个位置。因此,我准备了任务postBuildTask()来进行文件复制,并让它在任务externalNativeBuild之后被调用。可以。

task postBuildTask(type:Exec) \
{
    workingDir '.'
    commandLine 'cmd', '/c', 'copyLibrary.bat ARGUMENT_1 ARGUMENT_2 ARGUMENT_3'
}

tasks.whenTaskAdded
{ task ->
    if(task.project.name == 'NativeStaticLib')  // NativeStaticLib is a native C++ static library proj
    {
        if(task.name.indexOf("externalNativeBuild") != -1) //The task building native library by CMake
        {
            task.finalizedBy(postBuildTask) //Calls "copyLIbrary.bat" upon completion
        }
    }
}

我的问题

现在,我想优化我的任务,因为无论该C ++库的代码是否更改,总是会调用任务postBuildTask(),这是无用的,并且在大多数情况下会降低构建速度。 我需要找到一种方法来检测C ++静态库是否真正被重建,然后调用postBuildTask()

我只能看到控制台中显示以下消息,因为该库的代码未更改,因此该库没有任何内容可以构建:

> Task :NativeStaticLib:externalNativeBuildDebug
Build NativeStaticLib arm64-v8a
ninja: no work to do.

那么我如何检测C ++静态库是否真正构建?

0 个答案:

没有答案