Gradle,Javadoc和Android文档

我现在正在使用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对象,如活动,位图等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"); } 

Solutions Collecting From Web of "Gradle,Javadoc和Android文档"

我能够成功地链接到http://d.android.com/reference使用以下片段,这是function正是你所拥有的 (据我所知)。

  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' } } 

所以这里还有其他的麻烦。

您必须离线构buildjavadoc,因为似乎web服务path上的package-list不可用。 也许仔细检查一下,你是否真的拥有本地加载的文档,并确保在/[android-sdk]/docs/reference目录中有一个package-list

如果你仍然无法弄清楚,也许你可以发布输出。

另一件你可能会检查的是./build/tmp/[taskname]/javadoc.optionshead文件应该显示适当的选项,仔细设置。 需要检查的内容包括将android.jar正确包含在-classpath中,并将链接与预期参数一起存在: -linksoffline extDocURL packageListLoc

javadoc.options应该只有两个参数:

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

编辑android.getBootClasspath()更好,谢谢P-chan。

对于Android Gradle插件1.1.2+ (com.android.tools.build:gradle:1.1.+)

libraryvariant – 不再工作

使用:

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

destinationDir = file(“../ javadoc /”) – 在项目目录的根目录下findjavadocs(这样jenkins javadoc插件可以find它并显示在特殊的文档面板中)

failOnError false – 用于抑制可能导致jenkins失败的警告


Gradle JavaDocs的替代方法

Doxygen – 交叉参考文档工具。

可以从UI或terminal运行: http : //www.stack.nl/~dimitri/doxygen/manual/doxygen_usage.html


生成javadoc可用的抛出java工具:' javadoc '

从命令行运行:

 javadoc -d docs -sourcepath app/src/main/java -subpackages com 

文档 – 目标文件夹