我有一个 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'
}
}
https://stackoverflow.com/questions/32878383/