2010-05-12 66 views
23

當我生成Javadoc我在Eclipse的Android項目,有很多的警告一樣如何生成鏈接到javadoc中的Android類的引用?

cannot find symbol 
symbol : class TextView 

warning - Tag @see: reference not found: android.app.Dialog 

我也試過

-link http://developer.android.com/reference/ 
-link http://java.sun.com/j2se/1.4.2/docs/api/ 

Extra javadoc options (path names with white spaces must be enclosed in quotes)選項卡Configure Javadoc Arguments( eclipse-> project-> Generate Javadoc的第三個對話框)。

但是隻有-link http://java.sun.com/j2se/1.4.2/docs/api/正在工作,即對於String類 鏈接http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true生成。但對於android.app.Dialog,則不會生成鏈接。

編輯

我也試過在Configure Javadoc arguments for standard doclet(的Eclipse的>項目 - >第二個對話框生成Javadoc), 在Select referenced archives and projects to which links should be generated 選項卡中選擇android.jar但是這創造了本地鏈接到本地​​Android的SDK文檔目錄,而不是像在Java API中那樣的在線Android參考。

回答

42

Javadoc依賴名爲package-list的文件來確定在給定目錄下面記錄了哪些Java包。出於某種原因,這樣的文件是丟失http://d.android.com/reference/,所以「天真」與

-link http://d.android.com/reference/ 

方法行不通–你得到這個軟件包列表無法檢索警告並沒有鏈接生成到您的文檔中。 (注:在第二個日食對話框中的複選框只是組裝-link參數給你,所以這並不真正使任何區別)

然而,Javadoc中提供-linkoffline參數,以便能夠調整精確情況:您想在線鏈接到其他一些Javadoc文檔,但在生成自己的文檔時無法訪問它。以下是它的工作原理:雖然-link只接受一個參數(您要鏈接的JavaDoc文檔的URL),但-linkoffline需要第二個參數。那一個是package-list文件的位置!

所以,鏈接到中文版在線參考文檔,你應該選擇在第二日食對話框中任何複選框,而是在第三對話框添加

-linkoffline http://d.android.com/reference file:/C:/pathtoyour/android-sdk-windows/docs/reference 

額外的Javadoc選項 。通過這種方式,您可以使用本地安裝的Android文檔的package-list,但生成的Javadoc中的鏈接仍然會指向在線版本。

希望它有幫助!

+0

感謝Henning,它的工作!我真的花了很多時間來解決這個問題,但沒有成功。非常感謝。 – Vasu 2010-05-13 05:21:07

+1

我似乎無法得到正確的Mac OS X上的第二個參數的文件路徑。 – idolize 2010-07-23 19:57:55

+0

感謝您的提示,但我無法讓它爲我工作。具體來說,我在Windows上使用Eclipse。我的javadoc包含像「{@link android.widget.Toast}」的引用。當我選擇「生成Javadoc ...」時,我不檢查第二個屏幕上的任何內容,並且包含額外的Javadoc選項「-linkoffline http://d.android.com/reference file:」\ C:\ Program文件(x86)\ Android \ android-sdk-windows \ docs \「'。 Javadoc生成沒有錯誤,但它包括'android.widget.Toast'我期待鏈接。有什麼建議麼?謝謝。 – 2011-03-01 06:10:19

1

儘管我遵循這裏頂部的答案,我發現如果我導出一個ant構建文件(javadoc.xml),並且手動將android.jar文件添加到類路徑,我只能讓它工作。我的javadoc。xml看起來像:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project default="javadoc"> 
    <target name="javadoc"> 
     <javadoc access="private" additionalparam=" -linkoffline http://developer.android.com/reference file:/opt/android-sdk-linux_x86/docs/reference" author="true" classpath=".:/opt/android-sdk-linux_x86/platforms/android-8/android.jar" destdir="doc" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="com.example.mypackagename" source="1.5" sourcepath="gen:src" splitindex="true" use="true" version="true"/> 
    </target> 
</project> 

我可以使用ant -f javadoc.xml生成文檔。我找不到從Eclipse GUI正確執行的方法,因爲即使選擇正確的引用歸檔文件也不會導致Eclipse將android.jar添加到類路徑中。

+1

如果您在導出Javadoc的第4幀中使用Eclipse Indigo,在_Extra Javadoc options_下,可以將屬性'additionalparam'的值粘貼到那裏。 – 2012-03-01 19:21:17

2

經過一些試驗和錯誤(以及從多個網絡搜索中收集到的大量建議)後,我可以使用特定的ANT腳本進行工作,該腳本可以在Eclipse中以「Run As - > Ant Build 」。

我將該文件「javadoc.xml」保存在我的項目目錄中,並與AndroidManifest.xml文件並行存儲。

下面是該文件的內容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project basedir="." default="doc" name="api docs"> 
<target name="doc" description="my docs"> 
<javadoc destdir="docs" doctitle="Testing the Title" verbose="on" 
    use="true" 
    classpath="C:\Android\android-sdk_r04-windows\android-sdk-windows\platforms\android-2.1\android.jar;.\libs\admob-sdk-android.jar" 
    sourcepath="gen;src" 
    linkoffline="http://d.android.com/reference C:\Android\android-sdk_r04-windows\android-sdk-windows\docs\reference" 
    stylesheetfile="C:\Android\android-sdk_r04-windows\android-sdk-windows\docs\assets\android-developer-docs.css" 
    > 
</javadoc> 
</target> 
</project> 
+1

你應該解釋你的本地文件的路徑... – 2012-03-01 19:17:37

0

如果您有與路徑SDK問題,你可以手動創建一個package-list文件(或複製$ANDROID_HOME/docs/reference/package-list下一個)到項目中。

要使用相對路徑,不應使用file:/前綴。如果你把文件sub-directory/package-list的說法是-linkoffline http://d.android.com/reference sub-directory

1

感謝@Henning

這裏是我需要的東西在Ant build.xml文件:

<link offline="true" href="http://d.android.com/reference" packagelistLoc="${android.home}/docs/reference"/> 
+0

這並不適合我。我用這個答案http://stackoverflow.com/a/5193647/624109 – Muzikant 2014-03-05 14:04:07

0

對於我們這些敢於足有切換到不斷髮展的Android Studio Gradle,其中一件事實際上起作用並使事情變得更容易一點是指本地或網上的軟件包列表位置。例如,從Julian下面的代碼生成Javadoc文件:

task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) { 
    title = "Documentation for Android $android.defaultConfig.versionName b$android.defaultConfig.versionCode" 
    destinationDir = new File("${project.getProjectDir()}/doc/compiled/", variant.baseName) 
    source = variant.javaCompile.source 
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" 
    classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) 

    description "Generates Javadoc for $variant.name." 

    options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PRIVATE 
    options.links("http://docs.oracle.com/javase/7/docs/api/"); 
    options.links("http://developer.android.com/reference/reference/"); 
    exclude '**/BuildConfig.java' 
    exclude '**/R.java' 
} 

但由於包列表中沒有這導致了警告構建過程中了(如果它曾經是)在

options.links("http://developer.android.com/reference/reference/"); 

起初我以爲也許是多餘的參考/引用是問題,但包列表也無法在

options.links("http://developer.android.com/reference/"); 

所以,在閱讀後討論在此線程,這一條線是可以改變的指本地參考目錄在SDK中:

options.links("c:\\path-to-sdk-directory\\docs\\reference"); 

在本地找到的包列表,並沒有再顯示警告信息。