2010-05-12 6 views
23

जब मैं ग्रहण में मेरे Android परियोजना के लिए जावाडोक उत्पन्न, वहाँjavadoc में एंड्रॉइड क्लासेस के संदर्भ के लिंक कैसे उत्पन्न करें?

cannot find symbol 
symbol : class TextView 

और

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

मैं भी Configure Javadoc Arguments में Extra javadoc options (path names with white spaces must be enclosed in quotes) टैब में

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

की कोशिश की तरह चेतावनी के बहुत सारे (हैं ग्रहण का तीसरा संवाद-> परियोजना-> जावाडोक उत्पन्न करें)।

लेकिन केवल -link http://java.sun.com/j2se/1.4.2/docs/api/ स्ट्रिंग क्लास लिंक http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true लिंक के लिए i.e काम कर रहा है। लेकिन android.app.Dialog के लिए, कोई लिंक उत्पन्न नहीं हुआ है।

संपादित

मैं भी Configure Javadoc arguments for standard doclet (2 eclipse-> परियोजना> की जावाडोक उत्पन्न संवाद), में Select referenced archives and projects to which links should be generated टैब में android.jar का चयन करने की कोशिश की, लेकिन यह स्थानीय Android-SDK निर्देशिका में दस्तावेज़ में स्थानीय लिंक बनाता है , जावा एपीआई के लिए ऑनलाइन एंड्रॉइड संदर्भ नहीं है।

उत्तर

42

जावाडोक package-list नामक फ़ाइल पर निर्भर करता है यह निर्धारित करने के लिए कि किसी दिए गए निर्देशिका के नीचे जावा पैकेज दस्तावेज किए गए हैं। किसी कारण से, इस तरह के एक फ़ाइल, http://d.android.com/reference/ के लिए लापता है इसलिए "अनुभवहीन"

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

साथ दृष्टिकोण – आप एक चेतावनी है कि पैकेज की सूची प्राप्त नहीं किया जा सकता है मिल काम नहीं करता है और कोई लिंक हैं आपके दस्तावेज़ों में उत्पन्न हुआ। (नोट: यह है कि 2 ग्रहण संवाद में चेक बॉक्स सिर्फ तुम्हारे लिए -link मानकों को इकट्ठा, ताकि वास्तव में कोई फर्क नहीं है)

हालांकि, जावाडोक ठीक इस स्थिति के लिए समायोजित करने के लिए सक्षम होने के लिए -linkoffline पैरामीटर प्रदान करता है: आप ऑनलाइन कुछ अन्य जावाडोक दस्तावेज से लिंक करना चाहते हैं, लेकिन आप अपने स्वयं के दस्तावेज़ बनाने के समय इसे एक्सेस नहीं कर सकते हैं। यहां बताया गया है कि यह कैसे काम करता है: -link केवल एक पैरामीटर (जावाडॉक दस्तावेज़ों का यूआरएल जो आप लिंक करना चाहते हैं) लेते हैं, -linkoffline दूसरा लेता है। वह package-list फ़ाइल का स्थान है!

तो, ऑनलाइन एंड्रॉयड संदर्भ दस्तावेज़ से जोड़ने के लिए, आप 2 ग्रहण संवाद में किसी भी चेक बॉक्स का चयन नहीं करना चाहिए, लेकिन इसके बजाय 3 संवाद मेंअतिरिक्त जावाडोक विकल्पों में

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

जोड़ने । इस तरह आप अपने स्थानीय रूप से स्थापित एंड्रॉइड दस्तावेज़ों के package-list का उपयोग करते हैं, लेकिन आपके जेनरेट किए गए जावाडोक में लिंक अभी भी ऑनलाइन संस्करण को इंगित करेंगे।

उम्मीद है कि यह मदद करता है!

+0

धन्यवाद हेनिंग, यह काम किया !! मैंने वास्तव में इसे हल करने में काफी समय बिताया लेकिन सफल नहीं हुआ। बहुत बहुत धन्यवाद। – Vasu

+1

मुझे लगता है कि मैक ओएस एक्स – idolize

+0

पर दूसरे तर्क में फ़ाइलपैथ सही नहीं लगता है, लेकिन मैं इसे मेरे लिए काम करने में सक्षम नहीं था। विशेष रूप से, मैं विंडोज पर ग्रहण का उपयोग कर रहा हूँ। मेरे जावाडोक में "{@link android.widget.Toast}" जैसे संदर्भ शामिल हैं। जब मैं "जेवाडोक जेनरेट करता हूं ..." चुनता हूं, तो मैं दूसरी स्क्रीन पर कुछ भी नहीं देखता, और इसमें अतिरिक्त जावाडोक विकल्प '-लिंकऑफलाइन http://d.android.com/reference फ़ाइल शामिल है: "\ C: \ Program फ़ाइलें (x86) \ Android \ android-sdk-windows \ docs \ "'। जावाडोक त्रुटि के बिना उत्पन्न होता है, लेकिन इसमें 'android.widget.Toast' शामिल है जहां मुझे एक लिंक की उम्मीद थी। कोई सुझाव? धन्यवाद। –

1

हालांकि मैं यहां शीर्ष उत्तर का पालन करता हूं, मैंने पाया कि अगर मैं एक चींटी बिल्ड फ़ाइल (javadoc.xml) निर्यात करता हूं, और मैन्युअल रूप से android.jar फ़ाइल को क्लासपाथ में जोड़ता हूं तो मैं इसे केवल काम पर ला सकता हूं। मेरा जावडोकएक्सएमएल लगता है:

<?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 का उपयोग कर दस्तावेज़ उत्पन्न कर सकता है। मैं ग्रहण जीयूआई से इसे ठीक से करने का कोई तरीका नहीं समझ पाया, क्योंकि सही संदर्भित संग्रह का चयन करने से ग्रहण को एंड्रॉइड.जर को क्लासपाथ में जोड़ने का कारण नहीं था।

+1

यदि आप एक्वाइप्स इंडिगो का उपयोग करते हैं, तो जैवडोक निर्यात करने के चौथे फ्रेम में, बॉक्स _ एक्स्ट्रा जावाडोक विकल्प_ पर, आप वहां 'विशेषता' के गुण का मूल्य पेस्ट कर सकते हैं। –

2

कुछ परीक्षण और त्रुटि के बाद (और कई वेब खोजों से प्राप्त सुझावों के बहुत सारे), मैं इसे एक विशिष्ट एएनटी स्क्रिप्ट के साथ काम करने में सक्षम था, जिसे ग्रहण में चलाया जा सकता है "एएस बिल्ड - एंट बिल्ड "।

मैंने एंड्रॉइडमैनीफेस्ट.एक्सएमएल फ़ाइल के साथ समानांतर में, मेरी परियोजना की निर्देशिका में, "javadoc.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

आपको अपनी स्थानीय फाइलों के पथ की व्याख्या करनी चाहिए ... –

0

आप एसडीके के लिए पथ के साथ समस्या है, तो आप मैन्युअल रूप से package-list फ़ाइल बना सकते हैं (या $ANDROID_HOME/docs/reference/package-list के तहत एक कॉपी करें):

यहाँ फ़ाइल की सामग्री है।

एक सापेक्ष पथ का उपयोग करने के लिए आपको file:/ उपसर्ग का उपयोग नहीं करना चाहिए। आप sub-directory/package-list में फ़ाइल डाल दिया तर्क होगा -linkoffline http://d.android.com/reference sub-directory

1

धन्यवाद

यहाँ @Henning क्या मैं चींटी build.xml फ़ाइल में की जरूरत है:

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

यह मेरे लिए काम नहीं करता है। मैंने इस जवाब का इस्तेमाल किया http://stackoverflow.com/a/5193647/624109 – Muzikant

0

हम में से उन लोगों के लिए है करने के लिए पर्याप्त साहसी के लिए हमेशा विकसित होने वाले एंड्रॉइड स्टूडियो & ग्रैडल पर स्विच किया गया, वास्तव में काम करता है और चीजों को थोड़ा आसान बनाता है, पैकेज या सूची स्थान का स्थानीय या वेब पर संदर्भित करता है। उदाहरण के लिए, Julian से निम्नलिखित कोड जावाडोक फ़ाइलें उत्पन्न करता है:

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/"); 

तो पर भी उपलब्ध नहीं था, चर्चा को पढ़ने के बाद इस धागे पर, कि एक लाइन एसडीके के भीतर स्थानीय संदर्भ निर्देशिका का उल्लेख करने के बदला जा सकता है:

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

यह स्थानीय स्तर पर पैकेज की सूची पाता है और अब और चेतावनी संदेश प्रदर्शित नहीं करता है।