एंड्रॉइड डेवलपर कोडलैब

आप पृथ्वी के इतिहास में सबसे व्यापक रूप से स्थापित ऑपरेटिंग सिस्टम विकसित करने में मदद कर सकते हैं। हां, आप एंड्रॉइड प्लेटफ़ॉर्म इंजीनियर बनने की यात्रा शुरू करने के लिए यहां हैं।

हालाँकि रास्ता चुनौतीपूर्ण है, एंड्रॉइड टीम हर रिलीज़ पर आपकी यात्रा को आसान बनाने का प्रयास करती है। और टीम एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) में सीधे काम के माध्यम से हर दिन सुधार करती है।

तो आराम से बैठें, एक टर्मिनल में आग लगाएँ, और आइए इतिहास बनाएँ।

लक्ष्य

इस कोडलैब का मिशन दोहरा है:

  1. आपको यह बताने के लिए कि प्लेटफ़ॉर्म (ऑपरेटिंग सिस्टम) पर काम करने वाले एंड्रॉइड इंजीनियरों के लिए डेवलपर वर्कफ़्लो कैसा है।
  2. आपको एंड्रॉइड के टूल, दस्तावेज़ीकरण और डेवलपर वर्कफ़्लो के बारे में प्रतिक्रिया देने के लिए प्रोत्साहित करें।

आवश्यक शर्तें

इस कोडलैब के लिए आवश्यकताओं की सूची सामान्य प्लेटफ़ॉर्म ( एओएसपी ) विकास के लिए आवश्यकताओं से ली गई है। इस कोडलैब को लेने के लिए, निम्नलिखित सेट करें:

पर्यावरण

आमतौर पर, उपयोगकर्ता सीधे वर्कस्टेशन पर निर्माण और विकास करते हैं। क्योंकि आप विभिन्न टर्मिनलों में काम कर रहे होंगे, और उपयोग किए गए कई कमांड टर्मिनल-विशिष्ट हैं, आपको प्रत्येक टर्मिनल सत्र में उन्हें फिर से चलाने की आवश्यकता होगी। विशेष रूप से, इनमें source build/envsetup.sh और lunch कमांड शामिल हैं।

कार्य केंद्र स्थापित करें

  1. अपने वर्कस्टेशन पर आवश्यक पैकेज स्थापित करें
  2. टर्मिनल में रहते हुए, रेपो स्थापित करें और सभी Git रिपॉजिटरी के लिए क्रेडेंशियल प्राप्त करें

कोड प्रारंभ करें और सिंक करें

  1. अपनी होम निर्देशिका में नेविगेट करें:

    cd ~
    
  2. इसके भीतर एक स्थानीय कार्यशील उपनिर्देशिका बनाएं:

    mkdir aosp
    
  3. निर्देशिका में नेविगेट करें:

    cd aosp
    
  4. AOSP रिपॉजिटरी स्रोत कोड मुख्य शाखा को प्रारंभ करें (डिफ़ॉल्ट):

    repo init -u https://android.googlesource.com/platform/manifest
    
  5. अपना Git क्रेडेंशियल (नाम, ईमेल पता) दर्ज करें या स्वीकार करें।

  6. स्रोत कोड सिंक करें:

    repo sync -j8
    

आरंभिक समन्वयन में एक घंटा या अधिक समय लग सकता है.

प्रत्येक रेपो चेकआउट को एक मेनिफेस्ट फ़ाइल द्वारा दर्शाया जाता है। एक समय में 1 से अधिक रेपो चेकआउट करने की अनुमति है, जब तक कि वे अलग-अलग निर्देशिकाओं में मौजूद हों। लेकिन ध्यान दें कि प्रत्येक चेकआउट और बिल्ड की मात्रा लगभग 300 जीबी उपयोग (और बढ़ रही है) है, इसलिए या तो अपने आप को 2 रेपो चेकआउट तक सीमित रखें, या अपने सिस्टम को द्वितीयक ड्राइव के साथ बढ़ाएं।

कोड बनाएं

एंड्रॉइड बनाने के लिए, आपको lunch कमांड के साथ निर्माण के लिए एक लक्ष्य डिवाइस प्रकार का चयन करना होगा। लक्ष्य एक उपकरण क्रमपरिवर्तन है, जैसे कि एक विशिष्ट मॉडल या फॉर्म फैक्टर।

डिवाइस लक्ष्य aosp_cf_x86_64_phone-userdebug आपको भौतिक डिवाइस के बिना परीक्षण के लिए कटलफिश वर्चुअल एंड्रॉइड डिवाइस बनाने की अनुमति देता है।

इसके बजाय एक भौतिक डिवाइस बनाने और अपडेट करने के लिए, कोई अन्य लक्ष्य चुनें और फ्लैशिंग डिवाइस के निर्देशों का पालन करें।

  1. अपने स्रोत कोड चेकआउट के रूट से निम्नलिखित कमांड चलाकर एंड्रॉइड डिवाइस बनाने के लिए अपना वातावरण सेट करें:

    source build/envsetup.sh
    
  2. लंच कमांड के लिए बिल्ड लक्ष्य को इस तरह पास करें:

    lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
    
  3. अपने चेकआउट में कहीं से भी कोड बनाएं :

    m
    

उम्मीद है कि पहले निर्माण में घंटों लगेंगे। इसके बाद के निर्माण में काफी कम समय लगता है।

एक Acloud उदाहरण बनाएँ

Acloud AOSP में एक कमांड-लाइन टूल है जो उपयोगकर्ताओं को वर्चुअल एंड्रॉइड डिवाइस बनाने में सहायता करता है, इस मामले में कटलफिश।

यदि आप उसी टर्मिनल सत्र में हैं जिसका उपयोग कोड बनाने के लिए किया गया था, तो आगे बढ़ें। अन्यथा, envsetup.sh स्क्रिप्ट और उसी lunch कमांड को दोबारा चलाएँ जिसका उपयोग आपने पहले किया था। तब

  1. कटलफिश वर्चुअल डिवाइस को स्थानीय रूप से चलाने के लिए निर्भरताएँ स्थापित करें:

    acloud setup
    
  2. यदि संकेत दिया जाए, तो सभी परिवर्तनों को प्रभावी करने के लिए अपने कार्य केंद्र को पुनरारंभ करें।

  3. इसके साथ एक acloud स्थानीय उदाहरण बनाएं:

    acloud create --local-image --local-instance
    
  4. कटलफिश डिवाइस का चयन करें.

आपका स्वागत एक एंड्रॉइड डिवाइस वाले वीएनसी सत्र से किया जाना चाहिए!

आप अपने माउस और कीबोर्ड का उपयोग करके अपने वर्कस्टेशन पर वर्चुअल डिवाइस के साथ इंटरैक्ट कर सकते हैं। एंड्रॉइड डिबग ब्रिज (एडीबी) logcat कमांड का उपयोग करके आप अपने डिवाइस का उपयोग करते समय लॉग के भीतर की गतिविधि का भी अनुसरण कर सकते हैं:

adb logcat

एक बदलाव करें

इस उदाहरण परिवर्तन सूची का अनुसरण करते हुए स्रोत कोड को अद्यतन करें।

  1. अपने चेकआउट ( aosp/ निर्देशिका) के मूल से, frameworks/native Git प्रोजेक्ट पर जाएँ:

    cd frameworks/native
    
  2. इस आदेश के साथ एक अस्थायी प्रोजेक्ट प्रारंभ करें:

    repo start <some-name> .
    
  3. निम्नलिखित स्थान पर चेंजलिस्ट से अपडेट शामिल करने के लिए SurfaceFlinger.cpp को संपादित करें:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. यह पंक्ति खोजें:

    postComposition();
    
  5. उन दो पंक्तियों को निम्नलिखित से बदलें:

    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();
    
  6. कोड बनाएं:

    m
    
  7. डिवाइस पर बिल्ड अपडेट करें:

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. यदि आपसे किसी उपकरण का चयन करने के लिए कहा जाए, तो वह उपकरण चुनें जो सबसे कम बीता हुआ समय दिखाता हो। (यह संभवतः आपके द्वारा देखी गई सूची में अंतिम है।) सभी वर्चुअल डिवाइस इंस्टेंसेस को देखने के लिए, acloud list और acloud list -v कमांड का उपयोग करें।

सत्यापित करें कि आप अपने चयनित डिवाइस पर चित्र 1 में दिखाए गए रंग के समान परिवर्तन देख रहे हैं।

Example of a successful color change

चित्र 1. सफल रंग परिवर्तन के बाद स्क्रीन का स्वरूप

अपने कोड का परीक्षण करें

कोडलैब का यह भाग एक उदाहरण परीक्षण का उपयोग करता है जो स्रोत ट्री में है और विफल हो रहा है। यह स्थानीय स्तर पर परीक्षण चलाने और कोड का परीक्षण करने के लिए एटेस्ट को नियोजित करता है।

परीक्षण का उपयोग करने के लिए, इन निर्देशों का पालन करें:

  1. दौड़ना:

    atest DevCodelabTest
    
  2. परीक्षण विफल हो जाएगा. इसे ठीक करने के लिए, असफल परीक्षण का स्रोत कोड ढूंढें:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. तो फिर यहाँ देखो

    platform_testing/tests/example/devcodelab
    
  4. फ़ाइल को संपादित करने के लिए, परीक्षण का नाम android.test.example.devcodelab.DevCodelabTest में लें और प्रतिस्थापित करें . / के साथ, यह परिणाम प्राप्त करने के लिए:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. फिर संपादित करें

    platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
    

    बदलने के लिए

    Assert.assertTrue(false)
    

    साथ

    Assert.assertTrue(true)
    
  6. यह सत्यापित करने के लिए कि आपने समस्या ठीक कर दी है, दोबारा परीक्षण चलाएँ:

    atest DevCodelabTest
    

समीक्षा के लिए अपना कोड अपलोड करें

रेपो एक साथ कई Git रिपॉजिटरी (या प्रोजेक्ट) में काम करने के लिए git clone जैसे कमांड को बंडल करके Git के उपयोग को सरल बनाता है।

एंड्रॉइड स्रोत कोड के साथ काम करने पर पूर्ण दस्तावेज़ीकरण के लिंक के साथ, गिट और रेपो के अवलोकन के लिए स्रोत नियंत्रण उपकरण देखें। Git परियोजनाओं की पूरी सूची और प्रत्येक परियोजना से जुड़ी शाखाओं के लिए अलग-अलग परियोजनाओं (पथ) के लिए AOSP रिपॉजिटरी देखें।

Git में अपनी परियोजनाओं की कोड समीक्षा के लिए, आप Gerrit वेब-आधारित कोड समीक्षा प्रणाली का उपयोग करेंगे।

  1. यह मानते हुए कि आपने frameworks/native प्रोजेक्ट में बदलाव किए हैं, उन्हें अपलोड करने के लिए ये कमांड चलाएँ:

    cd frameworks/native
    repo start codelab .
    git add .
    git commit
    
  2. अपने प्रतिबद्ध संदेश के लिए, निम्नलिखित दर्ज करें:

    Android codelab change
    Test: manual atest
    
  3. अपना परिवर्तन अपलोड करें:

    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 .

इस बिंदु पर, आपका काम हो गया! अच्छा काम!

मदद लें

यदि आपको इस कोडलैब के दौरान त्रुटियां मिलती हैं, तो किसी भी पृष्ठ के नीचे इश्यू ट्रैकर लिंक का उपयोग करके उनकी रिपोर्ट करें। एंड्रॉइड-बिल्डिंग ग्रुप को प्रश्न भेजें।