在 Android AAR 中公开 gradle 任务

问题描述 投票:0回答:1

我有一个通过 Maven 作为 AAR 分发的 Android 库。为了让我的库正常工作,应用程序需要下载一个文件并将其存储到其资产文件夹中。我在我的库的

build.gradle
文件中创建了一个任务来执行此操作。

当应用程序通过 Maven 使用我的 AAR 时,它无法找到任务。怎么了?

我的任务:

tasks.register('customDownload', CustomDownloadTask)

class CustomDownloadTask extends DefaultTask {
    @TaskAction
    void doTask() {
        //Do the work
    }
}

在图书馆项目中我可以做:

./gradlew customDownload

但是如果我在应用程序项目中这样做,通过 maven 下载 AAR 就会失败,并显示

Task 'customDownload' not found in root project...

这可以实现吗?如何实现?

android gradle
1个回答
0
投票

由于您的项目是一个多模块项目,因此您不能只按原样运行

customDownload
任务,正如错误告诉您该任务在根项目中不存在一样,因此您将拥有在任务前面添加项目路径前缀(例如
:lib:
)以使其正常工作。这也记录在命令行用法中

在多项目构建中,可以使用 : 分隔子项目名称和任务名称来执行子项目任务。从根项目运行时,以下内容是等效的:

$ gradle :subproject:taskName
$ gradle subproject:taskName

您还可以使用仅包含任务名称的任务选择器为所有子项目运行任务。

以下命令在从项目根目录调用时运行所有子项目的测试任务:

$ gradle test

假设您的库位于

library/
文件夹(其中有
build.gradle
/
build.gradle.kts
文件):

./gradlew :library:customDownload

如果您使用的 IDE 显示项目所具有的 Gradle 任务的树视图(例如 IntelliJ),您还可以尝试从那里手动调用 Gradle 任务。

© www.soinside.com 2019 - 2024. All rights reserved.