एंड्रॉइड का निर्माण

Android का निर्माण शुरू करने के लिए इन निर्देशों का पालन करें।

पर्यावरण की स्थापना

envsetup.sh स्क्रिप्ट के साथ पर्यावरण को आरंभ करें:

source build/envsetup.sh

या

. build/envsetup.sh

संबंधित कमांड के विवरण के लिए प्लेटफ़ॉर्म/बिल्ड/envsetup.sh पर स्क्रिप्ट देखें, जिसमें डिवाइस लक्ष्यों का चयन करने के लिए लंच और संदर्भ टीवी ऐप जैसे अनबंडल किए गए ऐप्स के निर्माण के लिए टैपस शामिल हैं

उस स्क्रिप्ट में कोई भी बदलाव लेने के लिए आपको प्रत्येक repo sync के बाद इस कमांड को फिर से जारी करना होगा। ध्यान दें कि source को . (एक एकल बिंदु) कुछ वर्णों को सहेजता है, और संक्षिप्त रूप का उपयोग आमतौर पर दस्तावेज़ीकरण में किया जाता है।

envsetup.sh स्क्रिप्ट कई कमांड आयात करती है जो आपको एंड्रॉइड स्रोत कोड के साथ काम करने में सक्षम बनाती है, जिसमें इस अभ्यास में उपयोग किए गए कमांड भी शामिल हैं।

उपलब्ध आदेशों की पूरी सूची देखने के लिए, चलाएँ:

hmm

लक्ष्य चुनना

दिन का खाना

चुनें कि lunch के साथ कौन सा लक्ष्य बनाना है। lunch product_name - build_variant निर्माण के लिए उत्पाद के रूप में product_name चयन करता है, और निर्माण के लिए वेरिएंट के रूप में build_variant का चयन करता है, और उन चयनों को m और अन्य समान कमांड के बाद के आह्वान द्वारा पढ़ने के लिए पर्यावरण में संग्रहीत करता है।

सटीक कॉन्फ़िगरेशन को तर्क के रूप में पारित किया जा सकता है। उदाहरण के लिए, निम्नलिखित कमांड एमुलेटर के लिए एक पूर्ण बिल्ड को संदर्भित करता है, जिसमें सभी डिबगिंग सक्षम हैं:

lunch aosp_arm-eng

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

सभी बिल्ड लक्ष्य BUILD-BUILDTYPE का रूप लेते हैं, जहां BUILD विशेष सुविधा संयोजन का संदर्भ देने वाला एक कोडनेम है। BUILDTYPE निम्नलिखित में से एक है।

निर्माण प्रकार उपयोग
उपयोगकर्ता सीमित पहुँच; उत्पादन के लिए उपयुक्त
userdebug उपयोगकर्ता की तरह लेकिन रूट एक्सेस और डिबग क्षमता के साथ; उत्पादन प्रदर्शन के बहुत करीब
इंग्लैंड तेज़ निर्माण समय के साथ विकास कॉन्फ़िगरेशन; दिन-प्रतिदिन के विकास के लिए सबसे उपयुक्त

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

eng बिल्ड प्लेटफ़ॉर्म पर काम करने वाले इंजीनियरों के लिए इंजीनियरिंग उत्पादकता को प्राथमिकता देता है। eng बिल्ड रनटाइम प्रदर्शन को अधिकतम करने के लिए उपयोग किए जाने वाले विभिन्न अनुकूलन को बंद कर देता है। अन्यथा, eng बिल्ड user और userdebug बिल्ड के समान है ताकि डिवाइस डेवलपर्स देख सकें कि कोड उन वातावरणों में कैसे व्यवहार करता है।

वर्तमान लंच सेटिंग देखने के लिए, कमांड चलाएँ:

echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

वास्तविक हार्डवेयर के निर्माण और उसे चलाने के बारे में अधिक जानकारी के लिए फ़्लैशिंग डिवाइसेस देखें।

तपस

tapas कमांड अनबंडल किए गए ऐप्स के निर्माण को कॉन्फ़िगर करता है। यह एंड्रॉइड बिल्ड सिस्टम द्वारा बनाए जाने वाले अलग-अलग ऐप्स का चयन करता है। lunch के विपरीत, tapas किसी उपकरण के लिए छवियों के निर्माण का अनुरोध नहीं करता है।

आदेश पर अधिक जानकारी के लिए tapas help चलाएँ।

कोड का निर्माण

यह अनुभाग यह सुनिश्चित करने के लिए एक त्वरित सारांश है कि सेटअप पूरा हो गया है।

m के साथ सब कुछ बनाएं। m -jN तर्क के साथ समानांतर कार्यों को संभाल सकता है। यदि आप -j तर्क प्रदान नहीं करते हैं, तो बिल्ड सिस्टम स्वचालित रूप से एक समानांतर कार्य गणना का चयन करता है जो उसे लगता है कि आपके सिस्टम के लिए इष्टतम है।

m

जैसा कि ऊपर बताया गया है, आप अपने m कमांड लाइन में उनके नाम सूचीबद्ध करके पूर्ण डिवाइस छवि के बजाय विशिष्ट मॉड्यूल बना सकते हैं। इसके अलावा, m विशेष उद्देश्यों के लिए कुछ छद्म लक्ष्य प्रदान करता है। कुछ उदाहरण निम्न हैं:

  • droid - m droid सामान्य निर्माण है। यह लक्ष्य यहाँ है क्योंकि डिफ़ॉल्ट लक्ष्य के लिए एक नाम की आवश्यकता होती है।
  • all - m all वह सब कुछ बनाता है जो m droid बनाता है, साथ ही वह सब कुछ जिसमें droid टैग नहीं है। बिल्ड सर्वर यह सुनिश्चित करने के लिए इसे चलाता है कि ट्री में जो कुछ भी है और जिसमें Android.mk फ़ाइल है, वह बनता है।
  • m - रन पेड़ के शीर्ष से बनता है। यह उपयोगी है क्योंकि आप make उपनिर्देशिकाओं के भीतर से चला सकते हैं। यदि आपके पास TOP पर्यावरण चर सेट है, तो यह उसका उपयोग करता है। यदि आप ऐसा नहीं करते हैं, तो यह वर्तमान निर्देशिका से पेड़ को देखता है, पेड़ के शीर्ष को खोजने का प्रयास करता है। आप या तो बिना तर्क के m चलाकर संपूर्ण स्रोत कोड ट्री बना सकते हैं या उनके नाम निर्दिष्ट करके विशिष्ट लक्ष्य बना सकते हैं।
  • mma - वर्तमान निर्देशिका में सभी मॉड्यूल और उनकी निर्भरताएँ बनाता है।
  • mmma - आपूर्ति की गई निर्देशिकाओं में सभी मॉड्यूल और उनकी निर्भरता बनाता है।
  • croot - पेड़ के शीर्ष पर cd
  • clean - m clean इस कॉन्फ़िगरेशन के लिए सभी आउटपुट और मध्यवर्ती फ़ाइलों को हटा देता है। यह rm -rf out/ जैसा ही है।

यह देखने के लिए m help चलाएँ कि m अन्य छद्म लक्ष्य क्या प्रदान करता है।

निर्माण चल रहा है

आप या तो अपने बिल्ड को एमुलेटर पर चला सकते हैं या किसी डिवाइस पर फ्लैश कर सकते हैं। चूँकि आपने lunch के साथ पहले ही अपना निर्माण लक्ष्य चुन लिया है, इसलिए इसे जिस लक्ष्य के लिए बनाया गया था, उससे भिन्न लक्ष्य पर चलने की संभावना नहीं है।

फास्टबूट के साथ चमकती

किसी डिवाइस को फ्लैश करने के लिए, fastboot का उपयोग करें, जिसे सफल निर्माण के बाद आपके पथ में शामिल किया जाना चाहिए। निर्देशों के लिए डिवाइस को फ्लैश करना देखें।

एंड्रॉइड डिवाइस का अनुकरण करना

बिल्ड प्रक्रिया द्वारा एमुलेटर स्वचालित रूप से आपके पथ में जुड़ जाता है। एम्यूलेटर चलाने के लिए, टाइप करें:

emulator

बिल्ड फ़िंगरप्रिंट को समझना

किसी विशेष एंड्रॉइड बिल्ड से जुड़ी समस्याओं को ट्रैक करने और रिपोर्ट करने के लिए, बिल्ड फिंगरप्रिंट को समझना महत्वपूर्ण है। बिल्ड फ़िंगरप्रिंट एक अद्वितीय, मानव-पठनीय स्ट्रिंग है जिसमें प्रत्येक बिल्ड को जारी की गई निर्माता जानकारी होती है। सटीक सिंटैक्स के लिए एंड्रॉइड संगतता परिभाषा दस्तावेज़ (सीडीडी) के बिल्ड पैरामीटर्स अनुभाग के भीतर फ़िंगरप्रिंट विवरण देखें।

बिल्ड फ़िंगरप्रिंट एक विशेष एंड्रॉइड कार्यान्वयन और संशोधन का प्रतिनिधित्व करता है। यह अनूठी कुंजी ऐप डेवलपर्स और अन्य लोगों को विशिष्ट फर्मवेयर संस्करणों के साथ समस्याओं की रिपोर्ट करने की अनुमति देती है। Android समस्या-रिपोर्टिंग प्रक्रिया के लिए बग रिपोर्टिंग देखें।

एक बिल्ड फ़िंगरप्रिंट सभी एंड्रॉइड कार्यान्वयन विवरणों को समाहित करता है:

  • एपीआई: एंड्रॉइड और देशी, साथ ही सॉफ्ट एपीआई व्यवहार
  • कोर एपीआई और कुछ सिस्टम यूआई व्यवहार
  • सीडीडी में संगतता और सुरक्षा आवश्यकताओं को परिभाषित किया गया है
  • अपेक्षित आवश्यकताओं को पूरा करने वाले उपकरणों को लक्षित करने के लिए ऐप्स द्वारा नियोजित उत्पाद विनिर्देश और उपयोग-सुविधा सेटिंग
  • हार्डवेयर और सॉफ्टवेयर घटकों का कार्यान्वयन

संपूर्ण विवरण के लिए सीडीडी देखें और एक पूरी तरह से नया एंड्रॉइड डिवाइस बनाने के निर्देशों के लिए एक नया डिवाइस जोड़ें

सामान्य निर्माण त्रुटियों का निवारण

ग़लत जावा संस्करण

यदि आप एंड्रॉइड का एक ऐसा संस्करण बनाने का प्रयास कर रहे हैं जो जावा के आपके संस्करण के साथ असंगत है, तो एक संदेश के साथ निरस्त make जैसे:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

यहां संभावित कारण और समाधान दिए गए हैं:

  • JDK आवश्यकताओं में निर्दिष्ट अनुसार सही JDK स्थापित करने में विफलता। सुनिश्चित करें कि आपने परिवेश स्थापित करने और लक्ष्य चुनने में दिए गए चरणों का पालन किया है।
  • आपके पथ पर पहले से स्थापित एक अन्य JDK दिखाई दे रहा है। अपने पथ की शुरुआत में सही JDK जोड़ें या समस्याग्रस्त JDK हटा दें।

कोई USB अनुमति नहीं

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

यदि एडीबी पहले से ही चल रहा था और उन नियमों को स्थापित करने के बाद डिवाइस से कनेक्ट नहीं हो सका, तो आप इसे adb kill-server से मार सकते हैं। वह आदेश ADB को नए कॉन्फ़िगरेशन के साथ पुनरारंभ करने का कारण बनता है।