gpt4 book ai didi

android - Gradle:构建Android库后如何运行自定义任务?

转载 作者:IT老高 更新时间:2023-10-28 11:20:53 32 4
gpt4 key购买 nike

我有一个 Android 库,它正在生成 debug.aar 和 release.aar,我需要将 release.aar 复制到另一个文件夹作为对项目其他部分的引用。

我现在所做的是在这个 Android Library build.gradle 中我定义了一个任务:

task copyAARToCommonLibs(type: Copy) {
from('../build/outputs/aar') {
include '*-release.arr'
}
into '../SomeSampleApps/libs'
}

我正在尝试在生成 arr 后运行此任务,我认为这是 assembleRelease 阶段,所以我尝试在此 build.gradle 中执行此操作

assembleRelease.doLast{
copyAARToCommonLibs
}

我使用

构建整个项目
 gradle build

但是这个任务是在整个过程的最开始运行的。

我也试过这个:

 applicationVariants.all { variant ->
variant.assemble.doLast {
copyAARToCommonLibs
}
}

inside android{} 属性(我猜这就是它的名字?)运行 gradle build,得到这个错误:找不到属性 'applicationVariants'

然后我发现了这个 fragment :

tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn copyAARToCommonLibs }

但这似乎使任务在编译后运行,我不知道如何修改它以在汇编后运行。

有人可以纠正我在哪里做错了吗?在生成 .arr 文件后如何让这个复制任务工作?

最佳答案

似乎 finalizedBy 可能会有所帮助。

assembleRelease.finalizedBy(copyAARToCommonLibs)

请注意,以下方式不会定义依赖项:

assembleRelease.doLast {
copyAARToCommonLibs
}

实际上.. 它什么也没做。您需要执行任务:

assembleRelease.doLast {
copyAARToCommonLibs.execute()
}

但不鼓励以以下方式运行任务,这是非常糟糕的做法。

你也可以试试:

assembleRelease.doLast {
copy {
from('../build/outputs/aar') {
include '*-release.aar'
}
into '../AscendonSDKSamples/libs'
}
}

关于android - Gradle:构建Android库后如何运行自定义任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878383/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com