आप पृथ्वी के इतिहास में सबसे व्यापक रूप से स्थापित ऑपरेटिंग सिस्टम विकसित करने में सहायता कर सकते हैं। हां, आप यहां Android प्लेटफॉर्म इंजीनियर बनने की यात्रा शुरू करने के लिए हैं।
हालांकि पथ चुनौतीपूर्ण है, Android टीम आपकी यात्रा, हर रिलीज़ को आसान बनाने का प्रयास करती है। और टीम Android Open Source Project (AOSP) में सीधे काम करके हर दिन सुधार करती है।
तो आराम से बैठें, एक टर्मिनल शुरू करें, और इतिहास रचें।
लक्ष्य
इस कोडलैब का मिशन दो गुना है:
- प्लेटफ़ॉर्म (ऑपरेटिंग सिस्टम) पर काम करने वाले Android इंजीनियरों के लिए डेवलपर वर्कफ़्लो कैसा है, इसका एक छोटा सा स्वाद देने के लिए।
- आपको Android के टूल, दस्तावेज़ीकरण और डेवलपर वर्कफ़्लो के बारे में फ़ीडबैक प्रदान करने के लिए प्रोत्साहित करें।
आवश्यक शर्तें
इस कोडलैब के लिए आवश्यकताओं की सूची सामान्य प्लेटफॉर्म ( एओएसपी ) के विकास के लिए तैयार की गई है। इस कोडलैब को लेने के लिए, निम्नलिखित सेट अप करें:
- वास्तविक लिनक्स वर्कस्टेशन सभी सार्वजनिक आवश्यकताओं को पूरा करता है।
- एंड्रॉइड कोड बेस को संपादित करने के लिए आवश्यक रेपो और गिट कॉन्फ़िगरेशन ।
पर्यावरण
विशिष्ट रूप से, उपयोगकर्ता सीधे वर्कस्टेशन पर निर्माण और विकास करते हैं। क्योंकि आप विभिन्न टर्मिनलों में काम कर रहे होंगे, और उपयोग किए गए कई आदेश टर्मिनल-विशिष्ट हैं, आपको उन्हें प्रत्येक टर्मिनल सत्र में फिर से चलाने की आवश्यकता होगी। विशेष रूप से, इनमें source build/envsetup.sh
और lunch
कमांड शामिल हैं।
वर्कस्टेशन स्थापित करें
- अपने वर्कस्टेशन पर आवश्यक पैकेज स्थापित करें ।
- जबकि अभी भी एक टर्मिनल में, रेपो स्थापित करें और सभी गिट रिपॉजिटरी के लिए क्रेडेंशियल प्राप्त करें ।
कोड को इनिशियलाइज़ और सिंक करें
अपनी होम निर्देशिका में नेविगेट करें:
cd ~
इसके भीतर एक स्थानीय कामकाजी उपनिर्देशिका बनाएँ:
mkdir aosp
निर्देशिका में नेविगेट करें:
cd aosp
AOSP रिपॉजिटरी सोर्स कोड मास्टर ब्रांच (डिफ़ॉल्ट) को इनिशियलाइज़ करें:
repo init -u https://android.googlesource.com/platform/manifest
अपना Git क्रेडेंशियल दर्ज करें या स्वीकार करें (नाम, ईमेल पता)।
स्रोत कोड सिंक करें:
repo sync -j8
प्रारंभिक सिंक में एक घंटा या अधिक समय लग सकता है।
प्रत्येक रेपो चेकआउट को एक मेनिफेस्ट फ़ाइल द्वारा दर्शाया जाता है। एक समय में 1 से अधिक रेपो चेकआउट की अनुमति है, जब तक कि वे अलग-अलग निर्देशिकाओं में मौजूद हों। लेकिन ध्यान दें कि प्रत्येक चेकआउट और बिल्ड मात्रा लगभग 300 जीबी उपयोग (और बढ़ रही है), इसलिए या तो अपने आप को 2 रेपो चेकआउट तक सीमित करें, या अपने सिस्टम को एक माध्यमिक ड्राइव के साथ बढ़ाएं।
कोड बनाएँ
Android बनाने के लिए, आपको lunch
कमांड के साथ बनाने के लिए लक्ष्य डिवाइस प्रकार का चयन करना होगा। एक लक्ष्य एक उपकरण क्रमचय है, जैसे कि एक विशिष्ट मॉडल या प्रपत्र कारक।
डिवाइस लक्ष्य नीचे शामिल है, aosp_cf_x86_64_phone-userdebug
, आपको भौतिक डिवाइस के बिना परीक्षण के लिए कटलफिश वर्चुअल एंड्रॉइड डिवाइस बनाने में सक्षम बनाता है।
इसके बजाय एक भौतिक डिवाइस बनाने और अपडेट करने के लिए, दूसरा लक्ष्य चुनें और डिवाइस को फ्लैश करने के लिए निर्देशों का पालन करें।
अपने सोर्स कोड चेकआउट के रूट से निम्न आदेश चलाकर Android उपकरणों के निर्माण के लिए अपना वातावरण सेट करें:
source build/envsetup.sh
लंच कमांड को बिल्ड लक्ष्य पास करें, इस तरह:
lunch aosp_cf_x86_64_phone-userdebug
अपने चेकआउट में कहीं से भी कोड बनाएं :
m
पहले निर्माण में घंटों लगने की अपेक्षा करें। बाद के निर्माण में काफी कम समय लगता है।
एक क्लाउड उदाहरण बनाएँ
एक्लाउड एओएसपी में एक कमांड-लाइन टूल है जो उपयोगकर्ताओं को वर्चुअल एंड्रॉइड डिवाइस बनाने में सहायता करता है, इस मामले में कटलफिश।
यदि आप उसी टर्मिनल सत्र में हैं जिसका उपयोग कोड बनाने के लिए किया जाता है, तो आगे बढ़ें। अन्यथा, envsetup.sh
स्क्रिप्ट और उसी lunch
कमांड को फिर से चलाएँ जिसका आपने पहले उपयोग किया था। तब
इसके साथ एक Acloud स्थानीय उदाहरण बनाएँ:
acloud create --local-image --local-instance
आवश्यक पैकेजों के अपडेट स्वीकार करें।
यदि संकेत दिया जाए, तो सभी परिवर्तनों को प्रभावी करने के लिए अपने वर्कस्टेशन को पुनरारंभ करें।
कटलफिश डिवाइस का चयन करें।
आपको Android डिवाइस वाले VNC सत्र के साथ स्वागत किया जाना चाहिए!
आप अपने माउस और कीबोर्ड का उपयोग करके अपने वर्कस्टेशन पर वर्चुअल डिवाइस के साथ इंटरैक्ट कर सकते हैं। आप एंड्रॉइड डिबग ब्रिज (एडीबी) logcat
कमांड को नियोजित करके अपने डिवाइस का उपयोग करते समय लॉग के भीतर की गतिविधि का भी अनुसरण कर सकते हैं:
adb logcat
एक बदलाव करें
इस उदाहरण चेंजलिस्ट के बाद स्रोत कोड को अपडेट करें।
अपने चेकआउट (
aosp/
निर्देशिका) की जड़ से,frameworks/native
गिट प्रोजेक्ट पर नेविगेट करें: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 को स्थानीय रूप से परीक्षण चलाने और कोड का परीक्षण करने के लिए नियोजित करता है।
परीक्षण का उपयोग करने के लिए, इन निर्देशों का पालन करें:
दौड़ना:
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 के उपयोग को सरल बनाता है।
Android स्रोत कोड के साथ काम करने पर पूर्ण प्रलेखन के लिंक के साथ Git और Repo के ओवरव्यू के लिए स्रोत नियंत्रण उपकरण देखें। Git परियोजनाओं की पूरी सूची और प्रत्येक परियोजना से जुड़ी शाखाओं के लिए अलग-अलग परियोजनाओं (पथ) के लिए AOSP रिपॉजिटरी देखें।
Git में अपने प्रोजेक्ट की कोड समीक्षा के लिए, आप गेरिट वेब-आधारित कोड समीक्षा प्रणाली का उपयोग करेंगे।
मान लें कि आपने
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 master:
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/master
गेरिट में अपना परिवर्तन देखें
लिंक पर जाएं, टर्मिनल में छपा हुआ है, जो इस जैसा दिखता है:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
यह Android प्लेटफॉर्म के विकास के लिए स्टार्टर कोडलैब को पूरा करता है। अगले चरणों के लिए पैच सबमिट करना देखें, और 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 .
इस बिंदु पर, आप कर चुके हैं! अच्छा काम!
मदद लें
यदि आप इस कोडलैब के दौरान त्रुटियों का सामना करते हैं, तो कृपया किसी भी पृष्ठ के निचले भाग में इश्यू ट्रैकर लिंक का उपयोग करके उनकी रिपोर्ट करें। android-बिल्डिंग ग्रुप को प्रश्न भेजें।