Google अश्वेत समुदायों के लिए नस्लीय इक्विटी को आगे बढ़ाने के लिए प्रतिबद्ध है। देखो कैसे।
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

Android का निर्माण

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

पर्यावरण स्थापित करें

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

source build/envsetup.sh

या

. build/envsetup.sh

पर स्क्रिप्ट देखें मंच / निर्माण / envsetup.sh सहित संबंधित आदेश, के विवरण के लिए lunch डिवाइस लक्ष्य और चयन के लिए tapas जैसे असमूहीकृत क्षुधा, के निर्माण के लिए संदर्भ टीवी एप्लिकेशन

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

envsetup.sh स्क्रिप्ट कई आदेशों का आयात करती है जो आपको इस अभ्यास में उपयोग किए गए आदेशों सहित एंड्रॉइड स्रोत कोड के साथ काम करने में सक्षम बनाती हैं। यहाँ कुछ महत्वपूर्ण आदेश उदाहरण हैं:

  • lunch - lunch product_name - build_variant उत्पाद का निर्माण करने के लिए product_name का चयन करता है, और build_variant का निर्माण करने के लिए संस्करण के रूप में करता है, और पर्यावरण में उन चयनों को m और अन्य इसी तरह के आदेशों के पढ़ने के लिए संग्रहीत करता है।
  • m - रन पेड़ के ऊपर से बनता है। यह उपयोगी है क्योंकि आप उपनिर्देशिकाओं के भीतर से make सकते हैं। यदि आपके पास TOP वातावरण चर सेट है, तो वह इसका उपयोग करता है। यदि आप ऐसा नहीं करते हैं, तो यह पेड़ के शीर्ष को खोजने की कोशिश करते हुए, वर्तमान निर्देशिका से पेड़ को देखता है। आप या तो बिना तर्क के m चलाकर पूरे स्रोत कोड के पेड़ का निर्माण कर सकते हैं या उनके नामों को निर्दिष्ट करके विशिष्ट लक्ष्य बना सकते हैं।
  • mma - वर्तमान निर्देशिका में सभी मॉड्यूल और उनकी निर्भरता बनाता है।
  • mmma - आपूर्ति किए गए निर्देशिकाओं में सभी मॉड्यूल, और उनकी निर्भरता का निर्माण करता है।
  • croot - पेड़ के शीर्ष पर cd

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

hmm

एक लक्ष्य चुनें

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

lunch aosp_arm-eng

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

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

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

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

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

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

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

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

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

m

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

  • droid - m droid सामान्य बिल्ड है। यह लक्ष्य यहां है क्योंकि डिफ़ॉल्ट लक्ष्य के लिए नाम की आवश्यकता होती है।
  • all - m all सब कुछ है कि m droid करता है, और सब कुछ है कि droid टैग नहीं है बनाता है। बिल्ड सर्वर यह सुनिश्चित करने के लिए चलाता है कि जो कुछ पेड़ में है और उसमें Android.mk फाइल बिल्ड है।
  • clean - m clean इस कॉन्फ़िगरेशन के सभी आउटपुट और मध्यवर्ती फ़ाइलों को हटा देता है। यह rm -rf out/

अन्य mseudotargets m प्रदान करता है यह देखने के लिए रन m help

चलाओ!

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

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

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

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

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

emulator

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

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

यदि आप एंड्रॉइड का एक संस्करण बनाने का प्रयास कर रहे हैं जो आपके जावा संस्करण के साथ असंगत है, 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 को हटा दें।

पायथन संस्करण 3

रेपो पायथन 2.x से विशेष कार्यक्षमता पर बनाया गया है और पायथन 3 के साथ असंगत है। रेपो का उपयोग करने के लिए, पायथन 2.x स्थापित करें:

apt-get install python

केस-असंवेदनशील फाइल सिस्टम

यदि आप macOS पर एक HFS फाइल सिस्टम बना रहे हैं, तो आप एक त्रुटि का सामना कर सकते हैं जैसे:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

केस-संवेदी डिस्क छवि बनाने में निर्देशों का पालन करें।

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

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

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