java - 使用 gradle 从 javadoc 中排除 R.java 的正确方法

标签 java android gradle javadoc

我正在使用此 gradle 任务为我的 Android 项目生成 javadoc:

android.applicationVariants.all { variant ->
    task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
        description "Generates Javadoc for $variant.name."
        source = variant.javaCompile.source
        classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath())
        exclude '**/BuildConfig.java'
        exclude '**/R.java'
        options.links("http://docs.oracle.com/javase/7/docs/api/");
        options.linksOffline("http://d.android.com/reference","${android.sdkDirectory}/docs/reference");
        options {
            failOnError false
        }
        destinationDir = file("${project.projectDir}/javadoc")
    }
}

它排除了 R.java,所以我在输出目录中没有得到 R.html。 但是,在为我常用的 java 类生成文档的过程中,我遇到了非常烦人的错误 cannot find symbol class R,在 import com.mypackagename.R 行中。我使用常见的 android 东西,比如 R.string.string_res,所以我不能删除这个导入。 是否有适当的方法将符号 R 包含到索引中,但不将其包含到 javadoc 中,或者至少只是为了抑制此错误?

最佳答案

您可以尝试将接下来的两行添加到您的代码中:

classpath += files("build/generated/source/r/${variant.flavorName}/release")
classpath += files("build/generated/source/buildConfig/${variant.flavorName}/release")

但在这种情况下,您的任务应该取决于生成 R 类的任务之一。

关于java - 使用 gradle 从 javadoc 中排除 R.java 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313205/

相关文章:

java - 如何将另一个项目中的应用程序用作库?

java - Java 中的秒数计算

java - 如何将 PDF 转换为 XML

java - 如何添加 onClickListener 而不是替换监听器?

java - 无法解析 ListView 适配器中的 getSystemService 方法

java - 我应该使用哪些 Android API?简单的 map 应用

android - 好像是第一次还是从命令行编译Android项目?

java - 通知不再起作用。如何修复它?

java - 下面的比赛在 Espresso

android - 有条件地在 Android list 文件中包含元数据