आप पृथ्वी के इतिहास में सबसे व्यापक रूप से स्थापित ऑपरेटिंग सिस्टम विकसित करने में मदद कर सकते हैं। हां, आप एंड्रॉइड प्लेटफ़ॉर्म इंजीनियर बनने की यात्रा शुरू करने के लिए यहां हैं।
हालाँकि रास्ता चुनौतीपूर्ण है, एंड्रॉइड टीम हर रिलीज़ पर आपकी यात्रा को आसान बनाने का प्रयास करती है। और टीम एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) में सीधे काम के माध्यम से हर दिन सुधार करती है।
तो आराम से बैठें, एक टर्मिनल में आग लगाएँ, और आइए इतिहास बनाएँ।
लक्ष्य
इस कोडलैब का मिशन दोहरा है:
- आपको यह बताने के लिए कि प्लेटफ़ॉर्म (ऑपरेटिंग सिस्टम) पर काम करने वाले एंड्रॉइड इंजीनियरों के लिए डेवलपर वर्कफ़्लो कैसा है।
- आपको एंड्रॉइड के टूल, दस्तावेज़ीकरण और डेवलपर वर्कफ़्लो के बारे में प्रतिक्रिया देने के लिए प्रोत्साहित करें।
आवश्यक शर्तें
इस कोडलैब के लिए आवश्यकताओं की सूची सामान्य प्लेटफ़ॉर्म ( एओएसपी ) विकास के लिए आवश्यकताओं से ली गई है। इस कोडलैब को लेने के लिए, निम्नलिखित सेट करें:
- भौतिक लिनक्स वर्कस्टेशन सभी सार्वजनिक आवश्यकताओं को पूरा करता है।
- एंड्रॉइड कोड बेस को संपादित करने के लिए रेपो और गिट कॉन्फ़िगरेशन आवश्यक है।
पर्यावरण
आमतौर पर, उपयोगकर्ता सीधे वर्कस्टेशन पर निर्माण और विकास करते हैं। क्योंकि आप विभिन्न टर्मिनलों में काम कर रहे होंगे, और उपयोग किए गए कई कमांड टर्मिनल-विशिष्ट हैं, आपको प्रत्येक टर्मिनल सत्र में उन्हें फिर से चलाने की आवश्यकता होगी। विशेष रूप से, इनमें source build/envsetup.sh
और lunch
कमांड शामिल हैं।
कार्य केंद्र स्थापित करें
- अपने वर्कस्टेशन पर आवश्यक पैकेज स्थापित करें ।
- टर्मिनल में रहते हुए, रेपो स्थापित करें और सभी Git रिपॉजिटरी के लिए क्रेडेंशियल प्राप्त करें ।
कोड प्रारंभ करें और सिंक करें
अपनी होम निर्देशिका में नेविगेट करें:
cd ~
इसके भीतर एक स्थानीय कार्यशील उपनिर्देशिका बनाएं:
mkdir aosp
निर्देशिका में नेविगेट करें:
cd aosp
AOSP रिपॉजिटरी स्रोत कोड मुख्य शाखा को प्रारंभ करें (डिफ़ॉल्ट):
repo init -u https://android.googlesource.com/platform/manifest
अपना Git क्रेडेंशियल (नाम, ईमेल पता) दर्ज करें या स्वीकार करें।
स्रोत कोड सिंक करें:
repo sync -j8
आरंभिक समन्वयन में एक घंटा या अधिक समय लग सकता है.
प्रत्येक रेपो चेकआउट को एक मेनिफेस्ट फ़ाइल द्वारा दर्शाया जाता है। एक समय में 1 से अधिक रेपो चेकआउट करने की अनुमति है, जब तक कि वे अलग-अलग निर्देशिकाओं में मौजूद हों। लेकिन ध्यान दें कि प्रत्येक चेकआउट और बिल्ड की मात्रा लगभग 300 जीबी उपयोग (और बढ़ रही है) है, इसलिए या तो अपने आप को 2 रेपो चेकआउट तक सीमित रखें, या अपने सिस्टम को द्वितीयक ड्राइव के साथ बढ़ाएं।
कोड बनाएं
एंड्रॉइड बनाने के लिए, आपको lunch
कमांड के साथ निर्माण के लिए एक लक्ष्य डिवाइस प्रकार का चयन करना होगा। लक्ष्य एक उपकरण क्रमपरिवर्तन है, जैसे कि एक विशिष्ट मॉडल या फॉर्म फैक्टर।
नीचे शामिल डिवाइस लक्ष्य, aosp_cf_x86_64_phone-userdebug
, आपको भौतिक डिवाइस के बिना परीक्षण के लिए कटलफिश वर्चुअल एंड्रॉइड डिवाइस बनाने में सक्षम बनाता है।
इसके बजाय एक भौतिक डिवाइस बनाने और अपडेट करने के लिए, कोई अन्य लक्ष्य चुनें और फ्लैशिंग डिवाइस के निर्देशों का पालन करें।
अपने स्रोत कोड चेकआउट के रूट से निम्नलिखित कमांड चलाकर एंड्रॉइड डिवाइस बनाने के लिए अपना वातावरण सेट करें:
source build/envsetup.sh
लंच कमांड के लिए बिल्ड लक्ष्य को इस तरह पास करें:
lunch aosp_cf_x86_64_phone-userdebug
अपने चेकआउट में कहीं से भी कोड बनाएं :
m
उम्मीद है कि पहले निर्माण में घंटों लगेंगे। इसके बाद के निर्माण में काफी कम समय लगता है।
एक Acloud उदाहरण बनाएँ
Acloud AOSP में एक कमांड-लाइन टूल है जो उपयोगकर्ताओं को वर्चुअल एंड्रॉइड डिवाइस बनाने में सहायता करता है, इस मामले में कटलफिश।
यदि आप उसी टर्मिनल सत्र में हैं जिसका उपयोग कोड बनाने के लिए किया गया था, तो आगे बढ़ें। अन्यथा, envsetup.sh
स्क्रिप्ट और उसी lunch
कमांड को दोबारा चलाएँ जिसका उपयोग आपने पहले किया था। तब
इसके साथ एक Acloud स्थानीय उदाहरण बनाएं:
acloud create --local-image --local-instance
आवश्यक पैकेजों के लिए अद्यतन स्वीकार करें.
यदि संकेत दिया जाए, तो सभी परिवर्तनों को प्रभावी करने के लिए अपने कार्य केंद्र को पुनरारंभ करें।
कटलफिश डिवाइस का चयन करें.
आपका स्वागत एक एंड्रॉइड डिवाइस वाले वीएनसी सत्र से किया जाना चाहिए!
आप अपने माउस और कीबोर्ड का उपयोग करके अपने वर्कस्टेशन पर वर्चुअल डिवाइस के साथ इंटरैक्ट कर सकते हैं। एंड्रॉइड डिबग ब्रिज (एडीबी) logcat
कमांड का उपयोग करके आप अपने डिवाइस का उपयोग करते समय लॉग के भीतर की गतिविधि का भी अनुसरण कर सकते हैं:
adb logcat
एक बदलाव करें
इस उदाहरण परिवर्तन सूची का अनुसरण करते हुए स्रोत कोड को अद्यतन करें।
अपने चेकआउट (
aosp/
निर्देशिका) के मूल से,frameworks/native
Git प्रोजेक्ट पर जाएँ:cd frameworks/native
इस आदेश के साथ एक अस्थायी प्रोजेक्ट प्रारंभ करें:
repo start <some-name> .
निम्नलिखित स्थान पर चेंजलिस्ट से अपडेट शामिल करने के लिए
SurfaceFlinger.cpp
को संपादित करें:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
यह पंक्ति खोजें:
postComposition();
उन दो पंक्तियों को निम्नलिखित से बदलें:
postComposition(); mClientColorMatrix = mat4(vec4{1.0f, 0.0f, 0.0f, 0.0f}, vec4{0.0f, -1.0f, 0.0f, 0.0f}, vec4{0.0f, 0.0f, -1.0f, 0.0f}, vec4{0.0f, 1.0f, 1.0f, 1.0f}); updateColorMatrixLocked();
कोड बनाएं:
m
डिवाइस पर बिल्ड अपडेट करें:
adb root
adb remount
adb sync
adb reboot
acloud reconnect
यदि आपसे किसी उपकरण का चयन करने के लिए कहा जाए, तो वह उपकरण चुनें जो सबसे कम बीता हुआ समय दिखाता हो। (यह संभवतः आपके द्वारा देखी गई सूची में अंतिम है।) सभी वर्चुअल डिवाइस इंस्टेंसेस को देखने के लिए,
acloud list
औरacloud list -v
कमांड का उपयोग करें।
सत्यापित करें कि आप अपने चयनित डिवाइस पर चित्र 1 में दिखाए गए रंग के समान परिवर्तन देख रहे हैं।
चित्र 1. सफल रंग परिवर्तन के बाद स्क्रीन का स्वरूप
अपने कोड का परीक्षण करें
कोडलैब का यह भाग एक उदाहरण परीक्षण का उपयोग करता है जो स्रोत ट्री में है और विफल हो रहा है। यह स्थानीय स्तर पर परीक्षण चलाने और कोड का परीक्षण करने के लिए एटेस्ट को नियोजित करता है।
परीक्षण का उपयोग करने के लिए, इन निर्देशों का पालन करें:
दौड़ना:
atest DevCodelabTest
परीक्षण विफल हो जाएगा. इसे ठीक करने के लिए, असफल परीक्षण का स्रोत कोड ढूंढें:
atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
तो फिर यहाँ देखो
platform_testing/tests/example/devcodelab
फ़ाइल को संपादित करने के लिए, परीक्षण का नाम
android.test.example.devcodelab.DevCodelabTest
में लें और प्रतिस्थापित करें.
/
के साथ, यह परिणाम प्राप्त करने के लिए:src/android/test/example/devcodelab/DevCodelabTest.java
फिर संपादित करें
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
बदलने के लिए
Assert.assertTrue(false)
साथ
Assert.assertTrue(true)
यह सत्यापित करने के लिए कि आपने समस्या ठीक कर दी है, दोबारा परीक्षण चलाएँ:
atest DevCodelabTest
समीक्षा के लिए अपना कोड अपलोड करें
रेपो एक साथ कई Git रिपॉजिटरी (या प्रोजेक्ट) में काम करने के लिए git clone
जैसे कमांड को बंडल करके Git के उपयोग को सरल बनाता है।
एंड्रॉइड स्रोत कोड के साथ काम करने पर पूर्ण दस्तावेज़ीकरण के लिंक के साथ, गिट और रेपो के अवलोकन के लिए स्रोत नियंत्रण उपकरण देखें। Git परियोजनाओं की पूरी सूची और प्रत्येक परियोजना से जुड़ी शाखाओं के लिए अलग-अलग परियोजनाओं (पथ) के लिए AOSP रिपॉजिटरी देखें।
Git में अपनी परियोजनाओं की कोड समीक्षा के लिए, आप Gerrit वेब-आधारित कोड समीक्षा प्रणाली का उपयोग करेंगे।
यह मानते हुए कि आपने
frameworks/native
प्रोजेक्ट में बदलाव किए हैं, उन्हें अपलोड करने के लिए ये कमांड चलाएँ:cd frameworks/native
repo start codelab .
git add .
git commit
अपने प्रतिबद्ध संदेश के लिए, निम्नलिखित दर्ज करें:
Android codelab change Test: manual atest
अपना परिवर्तन अपलोड करें:
repo upload
यदि आप सफल होते हैं, तो आपको इस जैसा एक संदेश दिखाई देगा:
Upload project frameworks/native/ to remote branch main:
branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
ff46b36d android codelab change
to https://android-review.googlesource.com/ (y/N)? y
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android codelab change [NEW]
remote:
To https://android-review.googlesource.com/platform/frameworks/native
* [new branch] codelab -> refs/for/main
गेरिट में अपना परिवर्तन देखें
टर्मिनल में मुद्रित लिंक पर जाएं, जो इस जैसा दिखता है:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
यह एंड्रॉइड प्लेटफ़ॉर्म विकास के लिए स्टार्टर कोडलैब को पूरा करता है। अगले चरणों के लिए पैच सबमिट करना देखें, और Android विकसित करने की पूरी जानकारी के लिए, इस साइट का शेष भाग देखें।
अपना परिवर्तन पूर्ववत करें
आम तौर पर, परीक्षण के बाद और समीक्षा और अनुमोदन पर, आप गेरिट में अपना परिवर्तन जमा करते हैं और इसे भंडार में विलय कर देते हैं।
इसके बजाय, इस कोडलैब के प्रयोजनों के लिए, गेरिट में छोड़ें पर क्लिक करके अपनी चेंजलिस्ट को वापस लाएं।
फिर frameworks/native
परियोजना निर्देशिका (या इसकी उपनिर्देशिकाओं) में संबंधित अस्थायी शाखा को छोड़ दें:
repo abandon codelab .
परीक्षण फ़ाइल में आपके द्वारा किए गए परिवर्तनों को वापस लाना भी याद रखें। चूँकि आपने repo start
, git commit
, और repo upload
नहीं किया है, आप फ़ाइल को स्वयं रीसेट कर सकते हैं। यह मानते हुए कि आप aosp/platform_testing directory
में हैं, फ़ाइल को रीसेट करने के लिए निम्नलिखित का उपयोग करें:
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
इस बिंदु पर, आपका काम हो गया! अच्छा काम!
मदद लें
यदि आपको इस कोडलैब के दौरान त्रुटियां मिलती हैं, तो कृपया किसी भी पृष्ठ के नीचे इश्यू ट्रैकर लिंक का उपयोग करके उनकी रिपोर्ट करें। एंड्रॉइड-बिल्डिंग ग्रुप को प्रश्न भेजें।