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

यह खंड वर्णन करता है कि Android स्रोत फ़ाइलों को बनाने के लिए अपने स्थानीय कार्य वातावरण को कैसे सेट किया जाए। आपको लिनक्स का उपयोग करना चाहिए; MacOS या Windows के अंतर्गत निर्माण समर्थित नहीं है। /usr/bin/python बाइनरी में भी महत्वपूर्ण परिवर्तन को ध्यान में रखें।

संपूर्ण कोड-समीक्षा और कोड-अपडेट प्रक्रिया के अवलोकन के लिए, लाइफ़ ऑफ़ ए पैच देखें।

एक शाखा का चयन

बिल्ड परिवेश के लिए कुछ आवश्यकताएं उस स्रोत कोड के संस्करण द्वारा निर्धारित की जाती हैं जिसे आप संकलित करने की योजना बना रहे हैं। उपलब्ध शाखाओं की पूरी सूची के लिए, बिल्ड नंबर देखें। आप नवीनतम स्रोत कोड (जिसे master कहा जाता है) को डाउनलोड करने और बनाने का विकल्प भी चुन सकते हैं, इस स्थिति में जब आप रिपॉजिटरी को इनिशियलाइज़ करते हैं तो आप केवल शाखा विनिर्देश को छोड़ देते हैं।

एक शाखा का चयन करने के बाद, अपना निर्माण वातावरण स्थापित करने के लिए नीचे दिए गए उपयुक्त निर्देशों का पालन करें।

Linux बिल्ड वातावरण सेट करना

ये निर्देश master सहित सभी शाखाओं पर लागू होते हैं।

एंड्रॉइड बिल्ड को नियमित रूप से उबंटू एलटीएस (14.04) और डेबियन परीक्षण पर घर में परीक्षण किया जाता है। अधिकांश अन्य वितरणों में आवश्यक निर्माण उपकरण उपलब्ध होने चाहिए।

जिंजरब्रेड (2.3.x) और master शाखा सहित उच्चतर संस्करणों के लिए, 64-बिट वातावरण की आवश्यकता होती है। पुराने संस्करणों को 32-बिट सिस्टम पर संकलित किया जा सकता है।

आवश्यक पैकेज स्थापित करना (उबंटू 18.04)

आपको उबंटू के 64-बिट संस्करण की आवश्यकता है।

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

आवश्यक पैकेज स्थापित करना (उबंटू 14.04)

आपको उबंटू के 64-बिट संस्करण की आवश्यकता है (14.04 अनुशंसित है)।

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

आवश्यक पैकेज स्थापित करना (उबंटू 12.04)

आप Android के पुराने संस्करण बनाने के लिए Ubuntu 12.04 का उपयोग कर सकते हैं। संस्करण 12.04 master या हाल की रिलीज़ पर समर्थित नहीं है।

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

आवश्यक पैकेज स्थापित करना (उबंटू 10.04-11.10)

Ubuntu 10.04-11.10 पर निर्माण अब समर्थित नहीं है, लेकिन AOSP के पुराने रिलीज़ के निर्माण के लिए उपयोगी हो सकता है।

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc

उबंटू 10.10 पर:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

उबंटू 11.10 पर:

sudo apt-get install libx11-dev:i386

यूएसबी एक्सेस को कॉन्फ़िगर करना

विकास के लिए डिवाइस सेट करने के निर्देशों का पालन करके सभी Android उपकरणों के लिए udev नियमों का समुदाय-अनुरक्षित डिफ़ॉल्ट सेट स्थापित करें।

एक अलग आउटपुट निर्देशिका का उपयोग करना

डिफ़ॉल्ट रूप से, प्रत्येक बिल्ड का आउटपुट मिलान स्रोत ट्री के out/ उपनिर्देशिका में संग्रहीत होता है। आप OUT_DIR पर्यावरण चर को निर्यात करके इसे ओवरराइड कर सकते हैं। उदाहरण के लिए:

export OUT_DIR=out_mytarget

यह बिल्ड के आउटपुट को स्रोत ट्री के out_mytarget/ उपनिर्देशिका में संग्रहीत करने का कारण बनेगा। एकाधिक लक्ष्यों के निर्माण के लिए एक ही स्रोत ट्री का उपयोग करते समय, प्रत्येक लक्ष्य के लिए एक अलग OUT_DIR का उपयोग करने की अनुशंसा की जाती है।

कई स्टोरेज डिवाइस वाली कुछ मशीनों पर, सोर्स फाइल्स और आउटपुट को अलग-अलग वॉल्यूम में स्टोर करते समय बिल्ड तेज होता है। अतिरिक्त प्रदर्शन के लिए, आउटपुट को क्रैश मजबूती के बजाय गति के लिए अनुकूलित फ़ाइल सिस्टम पर संग्रहीत किया जा सकता है, क्योंकि फ़ाइल सिस्टम दूषित होने पर सभी फ़ाइलों को पुन: उत्पन्न किया जा सकता है।

इसे सेट अप करने के लिए, OUT_DIR_COMMON_BASE चर को उस स्थान पर इंगित करने के लिए निर्यात करें जहां आपकी आउटपुट निर्देशिका संग्रहीत की जाएगी।

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

प्रत्येक अलग स्रोत ट्री के लिए आउटपुट निर्देशिका का नाम स्रोत ट्री रखने वाली निर्देशिका के नाम पर रखा गया है। उदाहरण के लिए, यदि आपके पास स्रोत पेड़ /source/master1 और /source/master2 और यदि OUT_DIR_COMMON_BASE को /output पर सेट किया गया है, तो आउटपुट निर्देशिकाएं /output/master1 और /output/master2

उन निर्देशिकाओं में कई स्रोत ट्री संग्रहीत करने से बचें जिनका नाम समान है, क्योंकि स्रोत ट्री अप्रत्याशित परिणामों के साथ एक आउटपुट निर्देशिका साझा करना समाप्त कर देंगे। यह केवल जेली बीन (4.1) और उच्चतर पर समर्थित है, जिसमें master शाखा भी शामिल है।

अगला: स्रोत डाउनलोड करें

आपका निर्माण वातावरण जाने के लिए अच्छा है! स्रोत डाउनलोड करने के लिए आगे बढ़ें।