Android Studio Javadoc:找不到符号

Android Studio Javadoc:找不到符号,android,android-studio,gradle,javadoc,Android,Android Studio,Gradle,Javadoc,我正在尝试准备Android库并将其上载到Bintray,该过程的一部分运行以下javadoc任务: task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } 此任务是此处更大gradle脚本的一部分: 运行javadoc

我正在尝试准备Android库并将其上载到Bintray,该过程的一部分运行以下javadoc任务:

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
此任务是此处更大gradle脚本的一部分:

运行
javadoc
任务时,会出现以下问题:

  • 项目中的每个@NonNull和@Nullable注释都报告一个错误“错误:找不到符号”
  • 我为Android类编写的每个Javadoc引用,比如{@link Toolbar},都会报告一个错误“error:reference not found”
  • 在生成javadoc时,如何更正这些引用问题

    编辑
    看起来并不是所有的Android类链接都会产生问题,可能只是来自Android支持库的类(这也是注释的来源)。要链接到gradle dependencies中的源文件,是否需要执行一些特殊操作?

    您还应该将所有依赖项添加到javadoc.classpath。试试这个:

    task javadoc(type: Javadoc) {
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }
    
    afterEvaluate {
        javadoc.classpath += files(android.libraryVariants.collect { variant ->
            variant.javaCompileProvider.get().classpath.files
        })
    }
    

    因此,这些错误意味着JavaDoc无法链接不在同一模块中的类(无需进一步配置)。如果您不关心这一点(例如,在模块外有指向类的超链接),您可以使用忽略错误

    task javadoc(type: Javadoc) {
        failOnError false
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }
    

    欢迎使用stackoverflow,请不要只发布代码,还要解释代码的作用以及为什么工作。您能解释一下为什么我们必须在“afterEvaluate”中添加这些文件,而不是直接将它们添加到“javadoc()”任务中吗?不幸的是,javadoc任务的主体在android.libraryVariants填充之前被调用。因此,我们必须等待android.libraryVariants被填充。不能使用上述解决方案将同一项目中的另一个模块添加为依赖项。就我而言,我面临着这个问题,有人知道吗?@swooby你应该用
    javaCompileProvider.get()替换
    javaCompileProvider
    。所以整行应该是这样的:
    variant.javaCompileProvider.get().classpath.files
    。然后它就可以正常工作了。