Android का निर्माण

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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 दिशानिर्देशों का पालन करें।

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

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

तपस

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 क्या प्रदान करता है यह देखने के लिए m help चलाएं।

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

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

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

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

Android डिवाइस का अनुकरण करना

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

emulator

उंगलियों के निशान बनाने को समझना

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

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

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

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

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

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

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

यदि आप 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 को हटा दें।

कोई यूएसबी अनुमति नहीं

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

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