带有 Androidx 库的 Javadoc gradle 任务

问题描述

一个生成 Javadoc 输出的任务,但问题是当我们实现 androidx.core.app.ActivityCompat 类时它会导致错误。但其他任务编译没有错误

task generateJavadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
configurations.implementation.setCanBeResolved(true)
classpath += project.files(android.getbootclasspath().join(File.pathSeparator)) + 
configurations.implementation
destinationDir = file("release/javadoc/")
failOnError false
}

tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none','-quiet')
options.addStringOption('encoding','UTF-8')
options.addStringOption('charSet','UTF-8')
options.memberLevel = JavadocmemberLevel.PRIVATE
options.windowTitle("API Documentation (${project.android.defaultConfig.versionName})")
}

错误是:

WifiManagerUtils.java:10: error: package androidx.core.app does not exist
import androidx.core.app.ActivityCompat;

感谢您的帮助

解决方法

我已经解决了这个问题。我认为问题是这个 gradle 任务无法正确获取依赖项。方法; classpath +=configuration.implementation 似乎无法获得某些库的依赖权限。

此方法以正确的方式获取第三方依赖项。

afterEvaluate {
generateJavadoc.classpath += files(android.libraryVariants.collect { variant ->
    variant.getJavaCompileProvider().get().classpath.files
})}