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

san*_*ith 10 java android javadoc gradle

我正在使用这个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")
    }
}
Run Code Online (Sandbox Code Playgroud)

它排除了R.java,所以我没有在输出目录中获得R.html.但是,我在cannot find symbol class R为我常用的java类生成doc的过程中遇到了非常烦人的错误import com.mypackagename.R.我使用常见的android之类的东西R.string.string_res,所以我无法删除此导入.有没有一种正确的方法来包含符号R索引,但不包括它到一个javadoc,或者,至少,只是为了抑制这个错误?

小智 3

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

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

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