आप धरती के इतिहास में सबसे व्यापक रूप से स्थापित ऑपरेटिंग सिस्टम विकसित करने में मदद कर सकते हैं। हां, आप यहां Android प्लेटफॉर्म इंजीनियर बनने की यात्रा शुरू करने के लिए हैं।
हालांकि रास्ता चुनौतीपूर्ण है, 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
पहले निर्माण में घंटों लगने की अपेक्षा करें। बाद के निर्माण में काफी कम समय लगता है।
एक क्लाउड उदाहरण बनाएं
Acloud AOSP में एक कमांड-लाइन टूल है जो उपयोगकर्ताओं को वर्चुअल Android डिवाइस बनाने में सहायता करता है, इस मामले में Cuttlefish।
यदि आप उसी टर्मिनल सत्र में हैं जिसका उपयोग कोड बनाने के लिए किया जाता है, तो आगे बढ़ें। अन्यथा, envsetup.sh
स्क्रिप्ट और उसी lunch
कमांड को फिर से चलाएँ जिसका आपने पहले वहाँ उपयोग किया था। फिर
इसके साथ एक क्लाउड स्थानीय उदाहरण बनाएं:
acloud create --local-image --local-instance
आवश्यक पैकेज में अपडेट स्वीकार करें।
यदि संकेत दिया जाए, तो सभी परिवर्तनों को प्रभावी करने के लिए अपने कार्य केंद्र को पुनरारंभ करें।
कटलफिश डिवाइस का चयन करें।
आपको एक Android डिवाइस वाले VNC सत्र के साथ बधाई दी जानी चाहिए!
आप अपने माउस और कीबोर्ड का उपयोग करके अपने वर्कस्टेशन पर वर्चुअल डिवाइस से इंटरैक्ट कर सकते हैं। एंड्रॉइड डीबग ब्रिज (एडीबी) logcat
कमांड को नियोजित करके आप अपने डिवाइस का उपयोग करते समय लॉग के भीतर गतिविधि का भी पालन कर सकते हैं:
adb logcat
एक बदलाव करें
इस उदाहरण चेंजलिस्ट के बाद सोर्स कोड को अपडेट करें।
अपने चेकआउट की जड़ से (
aosp/
निर्देशिका),frameworks/native
Git प्रोजेक्ट पर नेविगेट करें:cd frameworks/native
इस आदेश के साथ एक अस्थायी परियोजना शुरू करें:
repo start <some-name> .
निम्नलिखित स्थान पर चेंजलिस्ट से अपडेट शामिल करने के लिए
SurfaceFlinger.cpp
संपादित करें:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
इन दो पंक्तियों को खोजें:
postFrame(); postComposition();
उन दो पंक्तियों को निम्नलिखित से बदलें:
postFrame(); 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 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
Gerrit . में अपना परिवर्तन देखें
टर्मिनल में छपे लिंक पर जाएं, जो इस से मिलता-जुलता है:
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 .
इस बिंदु पर, आपका काम हो गया! अच्छा काम!
मदद लें
यदि आप इस कोडलैब के दौरान त्रुटियों का सामना करते हैं, तो कृपया किसी भी पृष्ठ के निचले भाग पर इश्यू ट्रैकर लिंक का उपयोग करके उनकी रिपोर्ट करें। android-बिल्डिंग समूह को प्रश्न भेजें।