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
सकते हैं। वह आदेश एडीबी को नए कॉन्फ़िगरेशन के साथ पुनरारंभ करने का कारण बनता है।