Android का निर्माण

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

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

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

source build/envsetup.sh

या

. build/envsetup.sh

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

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

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

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

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 बिल्ड के साथ विकास करते समय, 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 उपयोग करें, जिसे सफल निर्माण के बाद आपके पथ में शामिल किया जाना चाहिए। निर्देशों के लिए डिवाइस को फ्लैश करना देखें।

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

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

emulator

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

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

बिल्ड फ़िंगरप्रिंट एक विशेष 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 को हटा दें।

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

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

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