android javadoc android-gradle

Documentación de Gradle, Javadoc y Android.



android-gradle (2)

Ahora estoy usando Gradle para todos mis proyectos, e incluso para la generación 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'' } }

Con ese código conseguí que todo funcionara, excepto una cosa: objetos regulares de la API de Android como Activity, Bitmap, etc. Los enlaces de Java funcionan bien.

La documentación final generada no se vincula a http://d.android.com/reference . Probé ambos opciones.links () y options.linksOffline() sin éxito.

EDITAR

Gracias a @ejb, el problema era que no puede proporcionar múltiples options.links() al mismo tiempo. Así que utilicé ambos options.links() para la documentación de Java y options.linksOffline() para la documentación de 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"); }


Para Android Gradle plugin 1.1.2+ (com.android.tools.build:gradle:1.1.+)

libraryVariants - ya no funciona

utilizar:

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 /") : ubique javadocs en la raíz del directorio del proyecto (de esta forma, el complemento jenkins javadoc podría encontrarlo y mostrarlo en el panel de documentos especiales)

failOnError false : para suprimir las advertencias que pueden provocar una compilación errónea en jenkins

Alternativa para Gradle JavaDocs

Doxygen - herramienta de documentación de referencia cruzada.

podría ejecutarse desde la interfaz de usuario o terminal: http://www.stack.nl/~dimitri/doxygen/manual/doxygen_usage.html

Generando javadoc disponible lanzar herramienta java: '' javadoc ''

Ejecutar desde la línea de comando:

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

documentos - carpeta de destino


Pude enlazar con éxito a http://d.android.com/reference utilizando el siguiente fragmento de código que es funcionalmente exactamente lo que tienes (por lo que puedo decir).

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

Así que hay algo más mal aquí.

Debe crear el javadoc fuera de línea, ya que no parece que la package-list esté disponible en la ruta del servicio web. Tal vez compruebe que tenga los documentos cargados localmente y asegúrese de que haya una package-list en el directorio /[android-sdk]/docs/reference .

Si aún no puede resolverlo, tal vez podría publicar la salida.

Otra cosa que puede verificar es ./build/tmp/[taskname]/javadoc.options , el head de dicho archivo debe mostrar las opciones apropiadas cuidadosamente establecidas. Las cosas que se deben verificar incluirían la inclusión adecuada de android.jar en la ruta de clase y la presencia de linksOffline con los argumentos esperados: -linksoffline extDocURL packageListLoc

javadoc.options debería tener ambas opciones con solo los argumentos respectivos:

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

EDITAR : android.getBootClasspath() es mejor, gracias a P-chan.