मैंने इसमें कुछ जांच की है, और मेरा निष्कर्ष केवल यह है : यह बहुत काम के बिना नहीं किया जा सकता है। विवरण के लिए इस उत्तर के बाकी हिस्सों को पढ़ें जो मैंने पाया है।
android.jar
वास्तव में "सार्वजनिक एपी" से युक्त है framework.jar
और core.jar
जो system/frameworks/
डिवाइस पर पाया जाता है। android.jar
एक तरह का है जिसे मैं जावा लाइब्रेरी हेडर कहूंगा, वास्तविक बाइट कोड में सभी कार्यान्वयन केवल एक हैं throw new RuntimeException("stub");
, यह आपको android.jar
(जैसे एक्लिप्स में) के खिलाफ निर्माण करने की अनुमति देता है , लेकिन निष्पादन एक डिवाइस या एमुलेटर पर किया जाना है।
एंड्रॉइड एसडीके के सार्वजनिक एपीआई को उन वर्गों / विधियों / क्षेत्रों द्वारा परिभाषित किया जाता है जो कि जावाडॉक एनोटेशन के साथ उपसर्ग नहीं करते हैं @{hide}
। यानी जो कुछ भी एनोटेट नहीं है वह एसडीके में शामिल है।
android.jar
में स्थित स्रोतों से बनाया गया है, out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates
जिसमें उपकरण DroidDoc में स्थित है build/tools/droiddoc
।
DroidDoc उपकरण है (शायद javadoc से अनुकूलित, या javadoc का उपयोग करके) जो वास्तविक Android SDK प्रलेखन उत्पन्न करता है। एक साइड-इफ़ेक्ट के रूप में, और शायद इसलिए कि यह पहले से ही सभी जेवाडॉक को पार्स कर रहा है, यह एंड्रॉइड स्टब्स को बाहर निकाल देता है, जो तब android.jar
एसडीके में वितरित किए जाते हैं।
तो जो सामान आप छिपा रहे हैं उसे शामिल करने के लिए, यदि आप केवल विशिष्ट भागों को शामिल करना चाहते हैं, तो केवल @hide
एनोटेशन को हटा दें और एसडीके का पुनर्निर्माण करें।
हालांकि अगर आप सभी छिपे हुए हिस्सों को शामिल करना चाहते हैं तो चीजें बहुत अधिक जटिल हो जाती हैं। आप DroidDoc (संबंधित स्रोत में है build/tools/droiddoc/src/Stubs.java
) को संशोधित कर सकते हैं जैसे कि कुछ भी छिपा हुआ नहीं है। यह काफी तुच्छ है और मैंने यह कोशिश की है, हालांकि तब उत्पन्न होने वाले स्टब्स बिल्कुल भी संकलित नहीं होते हैं।
अब तक मेरा निष्कर्ष यह है कि यह केवल संभव नहीं है। यदि आप छिपे हुए एनोटेशन का पता लगाने वाले DroidDoc के हिस्से को हटाते हैं, तो उत्पन्न होने वाले स्टब्स, बस संकलित नहीं होते हैं, और सही ढंग से संकलित करने के लिए काफी काम की आवश्यकता होगी।
तो आपके सवालों का जवाब है: नहीं, यह बहुत काम किए बिना नहीं किया जा सकता है। माफ़ करना।
mkstubs
टूल के बारे में एक साइड नोट । mkstubs
जब आप SDK एडऑन का निर्माण करते हैं , तो इसका मतलब है कि आप उन विक्रेताओं से एंड्रॉइड एसडीके मैनेजर में मिल सकते हैं, जैसे सैमसंग आपको सैमसंग फोन के लिए विशेष सामान के लिए एक अतिरिक्त एपीआई प्रदान करता है। mkstubs
DroidDoc स्टब्स पीढ़ी की प्रक्रिया के रूप में बहुत कुछ करता है, हालांकि यह @hide
एनोटेशन का उपयोग नहीं करता है , यह .defs
आपके एसडीके एडऑन से शामिल करने या बाहर करने के लिए कौन से पैकेज / वर्ग / फ़ील्ड का वर्णन करता है ।
हालांकि यह सवाल के लिए बिल्कुल अप्रासंगिक है, क्योंकि एंड्रॉइड एसडीके बिल्ड टूल का उपयोग नहींmkstubs
करता है। (दुर्भाग्य से।)