web-dev-qa-db-ja.com

Gradle、JavadocおよびAndroidドキュメント

現在、すべてのプロジェクトで、さらにはjavadocの生成でさえ、Gradleを使用しています。

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

}
_

そのコードで、1つを除いてすべてが機能しました:通常のAndroidアクティビティ、ビットマップなどのAPIオブジェクト。Javaのリンクは正常に機能しています。

最終的に生成されたドキュメントは http://d.Android.com/referenceリンクしません。 options.links()とoptions.linksOffline()の両方を試しましたが、成功しませんでした。

[〜#〜]編集[〜#〜]

@ejbのおかげで、複数のoptions.links()を同時に提供できないという問題がありました。したがって、Javaのドキュメントにはoptions.links()を、Androidのドキュメントにはoptions.linksOffline()の両方を使用しました。

_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");
}
_
25
shkschneider

次のスニペットを使用して http://d.Android.com/reference に正常にリンクできましたこれは機能的に正確にあなたが持っているものです(限り私がわかるように)。

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

だからここに何か他の問題があります。

package-listがWebサービスのパスで使用できないように見えるため、Javadocをオフラインで構築する必要があります。ドキュメントがローカルに読み込まれていることを再確認し、package-listディレクトリに/[Android-sdk]/docs/referenceがあることを確認してください。

それでもわからない場合は、おそらく出力を投稿できます。

チェックする可能性のあるもう1つのことは、./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 [〜#〜]:P-chanのおかげでAndroid.getBootClasspath()がより良くなりました。

28
ejb

Android Gradleプラグイン1.1.2 +(com.Android.tools.build:gradle:1.1.+)の場合

libraryVariants-機能しなくなりました

use:

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 /")-プロジェクトディレクトリのルートでjavadocsを見つけます(このようにして、jenkins javadocプラグインはそれを見つけて、特別なドキュメントパネルに表示できます)

failOnError false-jenkinsでビルドの失敗を引き起こす可能性がある警告を抑制します


Gradle JavaDocsの代替

Doxygen-相互参照ドキュメントツール。

uIまたはターミナルから実行できます: http://www.doxygen.nl/manual/doxygen_usage.html


利用可能なjavadocを生成しますthrow Java tool: 'javadoc'

コマンドラインから実行:

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

docs-宛先フォルダー

14
Flinbor