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
संकेत देता है मेनू से एक लक्ष्य चुनने के लिए। देखें एक युक्ति निर्माण का चयन सभी मौजूदा उपकरणों के निर्माण के लिए विन्यास।
सभी बिल्ड लक्ष्य रूप ले BUILD-BUILDTYPE
, जहां BUILD
एक कोडनेम विशेष सुविधा संयोजन की बात है। BUILDTYPE
निम्न में से एक है।
बिल्ड टाइप | उपयोग |
---|---|
उपयोगकर्ता | सीमित पहुँच; उत्पादन के लिए उपयुक्त |
उपयोगकर्ता डिबग | उपयोगकर्ता की तरह लेकिन रूट एक्सेस और डिबग क्षमता के साथ; डिबगिंग के लिए पसंदीदा |
इंग्लैंड | अतिरिक्त डिबगिंग टूल के साथ विकास कॉन्फ़िगरेशन |
यूजरडेबग बिल्ड को यूजर बिल्ड के समान व्यवहार करना चाहिए, अतिरिक्त डिबगिंग को सक्षम करने की क्षमता के साथ जो सामान्य रूप से प्लेटफॉर्म के सुरक्षा मॉडल का उल्लंघन करता है। यह उपयोगकर्ता डिबग को अधिक निदान क्षमताओं के साथ उपयोगकर्ता परीक्षण के लिए अच्छा बनाता है। जब userdebug निर्माण के साथ विकास, का पालन करें userdebug दिशा निर्देशों ।
इंजीनियरिंग प्लेटफॉर्म पर काम करने वाले इंजीनियरों के लिए इंजीनियरिंग उत्पादकता को प्राथमिकता देता है। इंजी बिल्ड एक अच्छा उपयोगकर्ता अनुभव प्रदान करने के लिए उपयोग किए जाने वाले विभिन्न अनुकूलन को बंद कर देता है। अन्यथा, eng बिल्ड का व्यवहार उपयोगकर्ता और userdebug के समान होता है ताकि डिवाइस डेवलपर देख सकें कि कोड उन वातावरणों में कैसे व्यवहार करता है।
के लिए निर्माण और वास्तविक हार्डवेयर पर चल रहा है के बारे में अधिक जानकारी के लिए, चमक रहा डिवाइस ।
तपस
tapas
को कॉन्फ़िगर कर असमूहीकृत क्षुधा के निर्माण आदेश। यह एंड्रॉइड बिल्ड सिस्टम द्वारा बनाए जाने वाले अलग-अलग ऐप का चयन करता है। विपरीत lunch
, tapas
एक डिवाइस के लिए छवियों के निर्माण का अनुरोध नहीं करता।
भागो tapas help
आदेश के बारे में अधिक जानकारी के लिए।
कोड का निर्माण
सेटअप पूर्ण हो गया है यह सुनिश्चित करने के लिए यह अनुभाग एक त्वरित सारांश है।
के साथ सब कुछ बिल्ड m
। m
एक साथ समानांतर कार्य संभाल कर सकते हैं -jN
तर्क। यदि आप एक प्रदान नहीं करते हैं -j
तर्क, निर्माण सिस्टम स्वचालित रूप से एक समानांतर कार्य गिनती यह सोचता है कि आपके सिस्टम के लिए इष्टतम है चयन करता है।
m
जैसा कि ऊपर बताया गया है, आप अपने में उनके नाम सूचीबद्ध करके पूर्ण डिवाइस छवि के बजाय विशिष्ट मॉड्यूल का निर्माण कर सकते m
कमांड लाइन। इसके अलावा, m
विशेष उद्देश्यों के लिए कुछ pseudotargets प्रदान करता है। कुछ उदाहरण निम्न हैं:
-
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
क्या अन्य pseudotargets देखने के लिए m
प्रदान करता है।
निर्माण चल रहा है
आप या तो अपने बिल्ड को एमुलेटर पर चला सकते हैं या इसे किसी डिवाइस पर फ्लैश कर सकते हैं। क्योंकि आप पहले से ही साथ अपने निर्माण लक्ष्य का चयन किया है lunch
, यह एक अलग लक्ष्य पर चलाने के लिए की तुलना में यह करने के लिए बनाया गया था संभावना नहीं है।
फास्टबूट के साथ चमकती
एक डिवाइस फ़्लैश करने के लिए, का उपयोग fastboot
है, जो एक सफल निर्माण के बाद अपने पथ में शामिल किया जाना चाहिए। देखें एक डिवाइस चमकती निर्देश के लिए।
Android डिवाइस का अनुकरण करना
निर्माण प्रक्रिया द्वारा एम्यूलेटर स्वचालित रूप से आपके पथ में जोड़ दिया जाता है। एमुलेटर चलाने के लिए, टाइप करें:
emulator
उंगलियों के निशान बनाने को समझना
किसी विशेष Android बिल्ड से जुड़ी समस्याओं को ट्रैक और रिपोर्ट करने के लिए, बिल्ड फ़िंगरप्रिंट को समझना महत्वपूर्ण है। बिल्ड फ़िंगरप्रिंट एक अद्वितीय, मानव-पठनीय स्ट्रिंग है जिसमें प्रत्येक बिल्ड को जारी की गई निर्माता जानकारी होती है। भीतर फिंगरप्रिंट विवरण देखें पैरामीटर बिल्ड सटीक वाक्य-विन्यास के लिए Android संगतता परिभाषा दस्तावेज़ (CDD) की धारा।
बिल्ड फ़िंगरप्रिंट एक विशेष Android कार्यान्वयन और संशोधन का प्रतिनिधित्व करता है। यह अनूठी कुंजी ऐप डेवलपर्स और अन्य को विशिष्ट फर्मवेयर संस्करणों के साथ समस्याओं की रिपोर्ट करने की अनुमति देती है। देखें बग रिपोर्टिंग एंड्रॉयड मुद्दा रिपोर्टिंग प्रक्रिया के लिए।
एक बिल्ड फ़िंगरप्रिंट सभी Android कार्यान्वयन विवरणों को समाहित करता है:
- एपीआई: एंड्रॉइड और देशी, साथ ही सॉफ्ट एपीआई व्यवहार
- कोर एपीआई और कुछ सिस्टम यूआई व्यवहार
- सीडीडी में परिभाषित संगतता और सुरक्षा आवश्यकताएं
- उत्पाद विनिर्देशों और उपयोग करता है-फीचर लक्ष्य उपकरणों की उम्मीद आवश्यकताओं को पूरा करने के लिए क्षुधा द्वारा नियोजित सेटिंग
- हार्डवेयर और सॉफ्टवेयर घटकों का कार्यान्वयन
देखें CDD पूर्ण विवरण के लिए और एक नया डिवाइस जोड़ा जा रहा है पूरी तरह से नया एंड्रॉयड डिवाइस बनाने के लिए निर्देश के लिए।
सामान्य निर्माण त्रुटियों का निवारण
गलत जावा संस्करण
आपको लगता है कि जावा, के अपने संस्करण के साथ असंगत है एंड्रॉयड के एक संस्करण बनाने के लिए प्रयास कर रहे हैं 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 पोर्ट तक नहीं पहुंच सकते हैं। यदि आप एक अनुमति नहीं दी त्रुटि देखते हैं, के निर्देशों का पालन यूएसबी पहुँच का विन्यास ।
यदि एडीबी पहले से ही चल रहा था और उन नियमों की स्थापना होने के बाद डिवाइस से कनेक्ट नहीं कर सकते, उसे अपने साथ मार सकते हैं adb kill-server
। वह आदेश एडीबी को नए कॉन्फ़िगरेशन के साथ पुनरारंभ करने का कारण बनता है।