यदि आप अपने एंड्रॉइड फोन को रूट करने या कस्टम ROM डाउनलोड करने से परिचित हैं, जैसे कि अत्यधिक लोकप्रिय CyanogenMod या इसका उत्तराधिकारी Lineage OS, तो आपने सोचा होगा - लोग इन ROMs को कैसे बनाते हैं? एक कस्टमाइज़्ड ROM विकसित करने में वास्तव में कितना काम होता है?
यह गाइड आपको अपनी खुद की कस्टम एंड्रॉइड ROM विकसित करने की मूल बातें बताएगी। यह ध्यान दिया जाना चाहिए कि यह एक बड़ा उपक्रम है - यदि आपके पास कोडिंग में शून्य अनुभव है या लिनक्स टर्मिनल में छेड़छाड़ करने का अनुभव नहीं है, तो आप इस गहरे अंत में गोता लगाने से पहले कुछ ज्ञान प्राप्त करना चाह सकते हैं। लेकिन यदि आपको कम से कम उन चीजों का基本 विचार है, तो मैं चीजों को यथासंभव सरलता से समझाने की कोशिश करूंगा, ताकि आप साथ चल सकें।
मूल रूप से हम कच्चे एंड्रॉइड सोर्स कोड (AOSP) को डाउनलोड कर रहे हैं और इसे अपनी पसंद के अनुसार संशोधित कर रहे हैं। क्योंकि विभिन्न डिवाइस के लिए चुनने के लिए बहुत सारे स्रोत हैं, यह गाइड केवल मास्टर स्रोत को संदर्भित करेगा जिसे AOSP (Android Open Source Project) के नाम से जाना जाता है।
AOSP के बारे में बात यह है कि शुद्ध सोर्स कोड शामिल नहीं करता डिवाइस-विशिष्ट हार्डवेयर मालिकाना। आम आदमी की भाषा में, आपका कैमरा और GPU जैसे हार्डवेयर AOSP के साथ विकसित करते समय "आउट ऑफ द बॉक्स" काम नहीं करेंगे। वास्तव में, इन हार्डवेयर बाइनरी के बिना आपका डिवाइस बूट भी नहीं होगा।
यदि आप Google-ब्रांडेड फोन (Pixel, Nexus, आदि) के लिए विकसित कर रहे हैं, तो आप हार्डवेयर बाइनरी सीधे Google से पा सकते हैं, और यह गाइड आपको उन्हें प्राप्त करने और अपने ROM में बनाने के बारे में बताएगा। हालांकि, यदि आप ब्रांड-नाम फोन (Sony, Samsung, आदि) के लिए ROM विकसित कर रहे हैं... खैर, आपकी हिम्मत की दाद देनी पड़ेगी, क्योंकि आप एक सवारी के लिए जा रहे हैं।
कुछ निर्माताओं के अपने ओपन-सोर्स प्रोजेक्ट हैं या इच्छुक डेवलपर्स के लिए डेवलपमेंट टूल जारी करते हैं, जबकि अन्य निर्माता अपने मालिकाना कोड पर कड़ा ढक्कन रखते हैं। यहां अधिक लोकप्रिय निर्माताओं के ओपन-सोर्स प्रोजेक्ट्स की एक संक्षिप्त सूची है:
Samsung Open Source Release Center
Sony Developer World
Lenovo Support
Huawei Open Source Release Center
Motorola Developers
इसे रास्ते से हटाने के बाद, आइए इस धारणा के तहत जारी रखें कि हम Google Pixel डिवाइस के लिए सबसे बुनियादी, वेनिला एंड्रॉइड अनुभव के लिए एक ROM बना रहे हैं। इस ज्ञान के साथ, आप अपने दम पर शाखा लगाने और विशिष्ट निर्माताओं के ROM के अनुकूलित संस्करण विकसित करना शुरू कर पाएंगे।
इस गाइड के लिए आवश्यकताएं:
- Android Open Source Project
- Pixel XL फोन या लिनक्स के लिए एंड्रॉइड एमुलेटर
- 64-बिट लिनक्स ऑपरेटिंग सिस्टम - Ubuntu या Linux Mint नए लोगों के लिए सबसे अनुकूल डिस्ट्रो हैं, जबकि BBQLinux विशेष रूप से एंड्रॉइड डेवलपर्स को ध्यान में रखकर विकसित किया गया था।
- Python
- एक शक्तिशाली कंप्यूटर (कोड संकलित करने में बहुत मेमोरी और स्पेस लगता है!)
अपना बिल्ड एनवायरनमेंट सेट करना
आइए अपने लिनक्स मशीन पर एंड्रॉइड एमुलेटर सेट करके शुरू करें। चाहे आपके पास Google Pixel XL डिवाइस हो या नहीं, अपने नए ROM को अपने डिवाइस पर फ्लैश करने से पहले एंड्रॉइड एमुलेटर पर आज़माना हमेशा सबसे सुरक्षित होता है। मेरा व्यक्तिगत पसंदीदा Genymotion है, इसलिए मैं आपको उस विशेष एमुलेटर को इंस्टॉल करने के बारे में बताऊंगा। हालांकि, आप इस गाइड "बेस्ट एंड्रॉइड एमुलेटर्स" को भी देख सकते हैं, क्योंकि उनमें से अधिकांश में लिनक्स संगतता भी है।
Genymotion वेबसाइट पर जाएं, एक अकाउंट रजिस्टर करें, ईमेल के माध्यम से इसे वेरिफाई करें, और अपने लिनक्स डेस्कटॉप पर एक्जीक्यूटेबल डाउनलोड करें।
अब एक लिनक्स टर्मिनल खोलें, और टाइप करें:
Chmod +x genymotion-xxxxx.bin (xxxx को फ़ाइल नाम में संस्करण संख्या से बदलें)
./genymotion-xxxxxx.bin
Y दबाएं Genymotion डायरेक्टरी बनाने के लिए। अब टर्मिनल में टाइप करें:
cd genymotion && ./genymotion
अब यह आपसे इंस्टॉलेशन प्रक्रिया शुरू करने के लिए कहेगा, इसलिए बस Next पर क्लिक करते रहें जब तक आप Add Virtual Devices विंडो पर न पहुंच जाएं। डिवाइस मॉडल विकल्प के तहत "Pixel XL" चुनें, और फिर इंस्टॉलेशन पूरा करें। यदि आप चाहें तो वर्चुअल डिवाइस को टेस्ट कर सकते हैं, यह मूल रूप से आपके डेस्कटॉप पर Pixel XL फोन रखने जैसा होगा।
आइए अब Python सेट करें:
$ apt-get install python
अब हमें अपने लिनक्स मशीन पर Java Development Kit सेटअप करने की आवश्यकता है। लिनक्स टर्मिनल खोलें और निम्न कमांड टाइप करें:
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
अब आपको USB डिवाइस एक्सेस की अनुमति देने के लिए लिनक्स सिस्टम को कॉन्फ़िगर करने की आवश्यकता होगी। लिनक्स टर्मिनल में निम्न कोड चलाएं:

यह USB डिवाइस एक्सेस की अनुमति देने वाली आवश्यक 51-android.txt फाइल डाउनलोड करेगा। .txt फाइल खोलें और इसे अपने लिनक्स यूजरनेम को शामिल करने के लिए संशोधित करें, फिर .txt फाइल को निम्न स्थान पर रखें:
(रूट यूजर के रूप में)। अब अपने डिवाइस को USB के माध्यम से अपने कंप्यूटर में प्लग करें ताकि नए नियम स्वचालित रूप से प्रभावी हों।
एंड्रॉइड सोर्स डाउनलोड करना
AOSP Git पर होस्ट किया गया है, इसलिए हम Git के साथ संचार करने के लिए Repo नामक टूल का उपयोग करने जा रहे हैं।
सबसे पहले हमें अपने होम डायरेक्टरी में एक /bin फोल्डर सेटअप करने की आवश्यकता है। लिनक्स टर्मिनल में निम्न कमांड टाइप करें:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
अब हम Repo टूल डाउनलोड करेंगे, इसलिए लिनक्स टर्मिनल में टाइप करें:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Repo इंस्टॉल होने के बाद, हमें अब अपने वर्क फाइल्स को रखने के लिए एक खाली डायरेक्टरी बनानी होगी। इसलिए लिनक्स टर्मिनल में यह टाइप करें:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
अब हम Git को अपने नाम और ईमेल एड्रेस के साथ कॉन्फ़िगर करेंगे - एक Gmail एड्रेस उपयोग करें जिसे आप नियमित रूप से चेक करते हैं, अन्यथा आप Gerrit कोड-रिव्यू टूल का उपयोग नहीं कर पाएंगे।
$ git config –global user.name “Your Name”
$ git config –global user.email you@gmail.com
अब हम Repo को Git से AOSP का नवीनतम मास्टर मैनिफेस्ट खींचने के लिए कहेंगे:
$ repo init -u https://android.googlesource.com/platform/manifest
यदि सफलतापूर्वक किया गया, तो आपको एक संदेश प्राप्त होगा कि Repo आपके वर्किंग डायरेक्टरी में इनिशियलाइज़ हो गया है। आपको क्लाइंट डायरेक्टरी के अंदर एक ".repo" डायरेक्टरी भी मिलेगी। तो अब हम एंड्रॉइड सोर्स ट्री को इसके साथ डाउनलोड करेंगे:
$ repo sync
एंड्रॉइड सोर्स बिल्ड करना
यह वह जगह है जहां इस गाइड की शुरुआत में उल्लिखित हार्डवेयर बाइनरी चलन में आती हैं। आइए AOSP ड्राइवर्स पेज पर जाएं और Android 7.1.0 (NDE63P) के लिए Pixel XL बाइनरी डाउनलोड करें। आप वेंडर इमेज और हार्डवेयर घटक दोनों डाउनलोड करना चाहते हैं। ये संपीड़ित अभिलेखागार के रूप में आते हैं, इसलिए उन्हें अपने डेस्कटॉप पर निकालें और रूट फोल्डर से सेल्फ-एक्सट्रैक्टिंग स्क्रिप्ट चलाएं। बाइनरी को हमारे द्वारा पहले बनाए गए WORKING_DIRECTORY के रूट में इंस्टॉल करना चुनें।
अब अपने लिनक्स टर्मिनल में टाइप करें:
$ make clobber
$ source build/envsetup.sh
अब हम बिल्ड करने के लिए टारगेट चुनेंगे, इसलिए टाइप करें:
$ lunch aosp_marlin-userdebug
$ setpaths
$ make –j4
वहां, हमने अब सोर्स से एक एंड्रॉइड ROM "बिल्ड" कर लिया है। तो आइए इसे एमुलेटर में टेस्ट करें, टर्मिनल में टाइप करके:
$ emulator
एमुलेटर में थोड़ा खेलें। जैसा कि आप देख सकते हैं, एक विशुद्ध रूप से वेनिला एंड्रॉइड अनुभव काफी न्यूनतम है, और यही कारण है कि निर्माता AOSP को अपनी आवश्यकताओं के अनुसार अनुकूलित करते हैं। तो आप चाहें तो इस ROM को अपने डिवाइस पर फ्लैश कर सकते हैं, लेकिन बिना किसी एन्हांसमेंट के, एक विशुद्ध रूप से वेनिला एंड्रॉइड अनुभव वास्तव में बहुत उबाऊ चीज होगी।
तो निर्माता आमतौर पर AOSP के साथ क्या करते हैं, वे इसे फोर्क करते हैं, अपने मालिकाना बाइनरी जोड़ते हैं, UI को कस्टमाइज़ करते हैं, बूट लोगो जोड़ते हैं, आदि। निर्माता मूल रूप से स्टॉक एंड्रॉइड ROM पर पेंट करते हैं, और इसलिए वह आपका अगला लक्ष्य भी होगा।
बने रहें, क्योंकि इस गाइड का दूसरा भाग आपके ROM में फॉन्ट, थीम और बूट एनिमेशन जोड़ने के बारे में बताएगा!