2012-01-28 12 views
48

मैंने एंड्रॉइड स्रोत कोड डाउनलोड किया है। और मैं कुछ कार्यक्षमता एम्बेड करने के लिए स्रोत कोड में कुछ संशोधन करना चाहता हूं जो वर्तमान में मौजूद नहीं है। लेकिन यहां समस्या यह है कि मैं समझ नहीं पा रहा हूं कि स्रोत कोड कैसे व्यवस्थित किया जाता है, किस प्रकार की फाइलें मिल सकती हैं। तो अगर कोई मुझे समझने में मदद कर सकता है कि यह वास्तव में सहायक होगा।एंड्रॉइड रूट पेड़ की निर्देशिका संरचना को कैसे समझें?

+2

यह भी निम्नलिखित लिंक का संदर्भ दे सकता है: https://groups.google.com/forum/?fromgroups=#!topic/android-platform/QhrA3RayT-U –

+2

आप इसे [एंड्रॉइड स्रोत कोड विवरण] (http: //elinux.org/Android-4.1.1_r4) एंड्रॉइड-4.1.1-आर 4 के आधार पर, ईलिनक्स पर। यह बताता है कि फ़ोल्डर्स में क्या है। यह भी [एंड्रॉइड स्रोत कोड अवलोकन] (http://www.netmite.com/android/mydroid/development/pdk/docs/intro_source_code.html) – zhibin

उत्तर

130

एंड्रॉइड स्रोत डाउनलोड करते समय आपको क्या मिलेगा इसका संक्षिप्त संस्करण यहां दिया गया है। मैं कुछ मामूली निर्देशिकाओं को छोड़ दूंगा और कुछ महत्वपूर्ण लोगों में गहरी खुदाई करूंगा। मूल रूप से आपको क्या मिलेगा (वर्तमान आइस क्रीम सैंडविच रिलीज के आधार पर), वर्णमाला क्रम में:

  • बायोनिक - एंड्रॉइड के लिए सी-रनटाइम। ध्यान दें कि एंड्रॉइड अधिकांश लिनक्स वितरण की तरह ग्लिब का उपयोग नहीं कर रहा है। इसके बजाय सी-लाइब्रेरी को बायोनिक कहा जाता है और यह ज्यादातर बीएसडी-व्युत्पन्न स्रोतों पर आधारित होता है। इस फ़ोल्डर में आपको सी-लाइब्रेरी, गणित और अन्य कोर रनटाइम पुस्तकालयों का स्रोत मिलेगा।
  • बूट करने योग्य - बूट और स्टार्टअप संबंधित कोड। इनमें से कुछ विरासत है, फास्टबूट प्रोटोकॉल जानकारी रोचक हो सकती है क्योंकि इसे बूट लोडर द्वारा नेक्सस वाले कई उपकरणों में कार्यान्वित किया जाता है।
  • बिल्ड - सभी कोर बनाने फ़ाइल टेम्पलेट्स सहित बिल्ड सिस्टम कार्यान्वयन। यहां एक महत्वपूर्ण फ़ाइल envsetup.sh स्क्रिप्ट है जो प्लेटफ़ॉर्म स्रोत के साथ काम करते समय आपको बहुत मदद करेगी। एक शेल में इस स्क्रिप्ट को चलाने से आदेशों को पर्यावरण चर सेट करने, स्रोत मॉड्यूल में विशिष्ट मॉड्यूल और grep बनाने के लिए सक्षम किया जाएगा।
  • सीटीएस - संगतता परीक्षण। परीक्षण सुइट यह सुनिश्चित करने के लिए कि एक बिल्ड एंड्रॉइड विनिर्देश का अनुपालन करता है।
  • दलविक - दलविक वर्चुअल मशीन
  • विकास के विकास के लिए स्रोत कोड - विकास से संबंधित परियोजनाएं जैसे एसडीके और एनएनडीके उपकरण के लिए स्रोत कोड। आम तौर पर एक लक्ष्य के लिए मंच के साथ काम करते समय आप एक फ़ोल्डर को स्पर्श नहीं करते हैं।
  • डिवाइस - विभिन्न डिवाइसों के लिए उत्पाद विशिष्ट कोड। यह विभिन्न नेक्सस उपकरणों के लिए हार्डवेयर मॉड्यूल खोजने, कॉन्फ़िगरेशन बनाने और बहुत कुछ करने का स्थान है।
  • बाहरी - SQLite, Freetype और webkit जैसे सभी बाहरी ओपन सोर्स प्रोजेक्ट्स के लिए स्रोत कोड शामिल है।
  • फ्रेमवर्क - यह फ़ोल्डर एंड्रॉइड के लिए आवश्यक है क्योंकि इसमें ढांचे के स्रोत शामिल हैं। यहां आपको पैकेज सेवाओं के साथ सिस्टम सर्वर जैसे सिस्टम सेवाओं और कार्यान्वयन प्रबंधकों के कार्यान्वयन मिलेगा। जावा एप्लिकेशन एपीआई और देशी पुस्तकालयों के बीच बहुत सारे मानचित्रण भी यहां किए गए हैं।
  • हार्डवेयर - हार्डवेयर से संबंधित स्रोत कोड जैसे एंड्रॉइड हार्डवेयर अबास्ट्रक्शन लेयर विनिर्देशन और कार्यान्वयन। इस फ़ोल्डर में संदर्भ रेडियो इंटरफ़ेस परत (मॉडेम पक्ष के साथ संवाद करने के लिए) कार्यान्वयन भी शामिल है।
  • libcore - अपाचे हार्मनी।
  • libnativehelper - जेएनआई के साथ उपयोग के लिए सहायक कार्य।
  • (कर्नेल) - डिफ़ॉल्ट स्रोत डाउनलोड का हिस्सा नहीं है, लेकिन आप इसे मैन्युअल रूप से डाउनलोड करके या रेपो टूल में रिपॉजिटरी जोड़कर इस कोड तक पहुंच प्राप्त कर सकते हैं। लिनक्स कर्नेल के एंड्रॉइड संस्करण के स्रोत शामिल हैं।
  • आउट - निर्माण करने के बाद बिल्ड आउटपुट यहां रखा जाएगा। फ़ोल्डर संरचना बाहर/लक्ष्य/उत्पाद/है। एम्यूलेटर के लिए डिफॉल्ट बिल्ड में आउटपुट को आउट/लक्ष्य/उत्पाद/जेनेरिक में रखा जाएगा। यह वह जगह है जहां आप एमुलेटर द्वारा शुरू की जाने वाली छवियों को शुरू करने के लिए उपयोग करेंगे (या यदि आप हार्डवेयर लक्ष्य के लिए निर्माण कर रहे हैं तो डिवाइस पर डाउनलोड और फ्लैश किया जाएगा)।
  • पैकेज - इसमें डिफ़ॉल्ट अनुप्रयोगों जैसे संपर्क, कैलेंडर, ब्राउज़र के लिए स्रोत कोड शामिल है।
  • प्रीबिल्ट - ऐसी फाइलें हैं जो सुविधा के लिए बाइनरी रूप में वितरित की जाती हैं। उदाहरणों में विभिन्न विकास मशीनों के लिए क्रॉस कंपाइलेशंस टूलचेन्स शामिल हैं।
  • सिस्टम - कोर एंड्रॉइड सिस्टम के लिए स्रोत कोड फ़ाइलें। यह न्यूनतम लिनक्स सिस्टम है जिसे डाल्विक वीएम से पहले शुरू किया गया है और किसी भी जावा आधारित सेवाएं सक्षम हैं। इसमें init प्रक्रिया और डिफ़ॉल्ट init.rc स्क्रिप्ट के लिए स्रोत कोड शामिल है जो प्लेटफ़ॉर्म
  • टूल्स की गतिशील कॉन्फ़िगरेशन प्रदान करता है - विभिन्न आईडीई उपकरण।

उपरोक्त से परे आपके पास छिपी हुई .repo निर्देशिका भी है जिसमें रेपो उपयोगिता का स्रोत शामिल है। यह मैनिफेस्ट भी निर्दिष्ट करता है कि आप इस एंड्रॉइड स्रोत प्रोजेक्ट के लिए किस गिट रिपॉजिटरीज़ को ट्रैक करना चाहते हैं। यदि आपके पास अपने स्वयं के जोड़ हैं तो आप यहां स्थानीय मैनिफेस्ट जोड़कर स्वचालित रूप से उन्हें ट्रैक कर सकते हैं।

प्लेटफ़ॉर्म ढांचे के संशोधनों के लिए स्रोत कोड पेड़ के डिवाइस/नमूना फ़ोल्डर में कुछ निर्देश उपलब्ध हैं। यह आपको कोर फ्रेमवर्क को संशोधित किए बिना एंड्रॉइड में एपीआई जोड़ने का तरीका दिखाएगा।

+0

क्यों कर्नेल निर्देशिका डिफ़ॉल्ट स्रोत कोड का हिस्सा नहीं है? – Vins

+0

उत्कृष्ट उत्तर, मैं कुछ अन्य निर्देशिका भी देखता हूं: abi, art, buildcache, डेवलपर, दस्तावेज़, libcore, libnativehelper, ndk, sdk, tools, विक्रेता। कृपया समझाएँ। मैं कुछ अनुमान लगाने की कोशिश करूंगा जो मुझे लगता है। buildcache: इमारत अनुकूलित करने के लिए कुछ? डेवलपर्स: डेवॉपर के लिए नमूने की तरह दिखता है। दस्तावेज़: दस्तावेज़। ndk: एंड्रॉइड ऐप को आंशिक रूप से सी/सी ++ (https://developer.android.com/tools/sdk/ndk/index.html) में लिखने का टूल। विक्रेता: फेसबुक जैसे विक्रेताओं द्वारा डिफ़ॉल्ट ऐप्स। कृपया सही करें। – lindenrovio

+0

फ्रेमवर्क में उपनिर्देशिका का अवलोकन होने पर भी यह अच्छा होगा। – lindenrovio

संबंधित मुद्दे