android - Gradle、Javadoc 和 Android 文档

标签 android javadoc android-gradle-plugin

我现在将 Gradle 用于我的所有项目,甚至用于生成 javadoc。

android.libraryVariants.all { variant ->

    task("generate${variant.name}Javadoc", type: Javadoc) {
        title = "$name $version API"
        source = variant.javaCompile.source
        ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
        ext.googlePlayServicesJar = "${android.plugin.sdkDirectory}/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar"
        classpath = files(variant.javaCompile.classpath.files, ext.androidJar, ext.googlePlayServicesJar)
        options.links("http://docs.oracle.com/javase/7/docs/api/");
        options.links("http://d.android.com/reference/");
        //options.linksOffline("http://d.android.com/reference", "${android.plugin.sdkDirectory}/docs/reference");
        exclude '**/BuildConfig.java'
        exclude '**/R.java'
    }

}

使用该代码,我一切正常,除了一件事:常规的 Android API 对象,如 Activity、Bitmap 等。 Java 的链接工作正常。

最终生成的文档没有链接http://d.android.com/reference . 我尝试了 options.links() 和 options.linksOffline() 都没有成功。

编辑

感谢@ejb,问题是您不能同时提供多个options.links()。 因此,我将 options.links() 用于 Java 的文档,将 options.linksOffline() 用于 Android 的文档:

options {
    links("http://docs.oracle.com/javase/7/docs/api/");
    linksOffline("http://d.android.com/reference", "${android.plugin.sdkDirectory}/docs/reference");
    //stylesheetFile = new File(projectDir, "stylesheet.css");
}

最佳答案

我能够成功链接到 http://d.android.com/reference使用下面的代码 fragment 这在功能上正是你所拥有的(据我所知)。

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

所以这里还有其他问题。

您必须离线构建 javadoc,因为在 Web 服务的路径上似乎没有 package-list 可用。也许仔细检查您是否确实在本地加载了文档,并确保 /[android-sdk]/docs/reference 目录中有一个 package-list

如果你还是不明白,也许你可以发布输出。

您可能会检查的另一件事是 ./build/tmp/[taskname]/javadoc.options ,所述文件的 head 应仔细显示适当的选项.要检查的内容包括在 -classpath 中正确包含 android.jar 以及是否存在带有预期参数的 linksOffline:-linksoffline extDocURL packageListLoc

javadoc.options 应该有两个选项,只有各自的参数:

-linksoffline 'http://d.android.come/reference' '[sdkDir]/docs/reference'
-links 'http://docs.oracle.com/javase/7/docs/api/' 

EDIT:android.getBootClasspath() 更好,感谢 P-chan。

关于android - Gradle、Javadoc 和 Android 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23297562/

相关文章:

android - 仅使用 kv 文件在 kivy 中创建 DropDown

java - 类和方法之间注释中的 # 是什么意思?

java - 如何为 .java 文件中的非公共(public)类生成 javadoc

android - 在 API < 21 上更新 build.gradle 后停止使用矢量绘图的项目

Android 项目引用的 Android 库中的 Java 库抛出 NoClassDefFounderror

java - 不带帖子的 JSOUP Cookie ID

java - 为 Javadoc 注释不稳定的类/方法

android - 如何使用 Gradle 命令在 Android 中运行单个测试类?

android - 没有可用于离线模式的gradle缓存版本

javascript - ERR_ADDRESS_UNREACHABLE 在 Chrome Android 中打开我的本地主机