Android डेवलपर कोडलैब

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

हालांकि पथ चुनौतीपूर्ण है, Android टीम आपकी यात्रा, हर रिलीज़ को आसान बनाने का प्रयास करती है। और टीम Android Open Source Project (AOSP) में सीधे काम करके हर दिन सुधार करती है।

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

लक्ष्य

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

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

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

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

पर्यावरण

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

वर्कस्टेशन स्थापित करें

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

कोड को इनिशियलाइज़ और सिंक करें

  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 रेपो चेकआउट तक सीमित करें, या अपने सिस्टम को एक माध्यमिक ड्राइव के साथ बढ़ाएं।

कोड बनाएँ

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

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

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

  1. अपने सोर्स कोड चेकआउट के रूट से निम्न आदेश चलाकर Android उपकरणों के निर्माण के लिए अपना वातावरण सेट करें:

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

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

    m
    

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

एक क्लाउड उदाहरण बनाएँ

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

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

  1. इसके साथ एक Acloud स्थानीय उदाहरण बनाएँ:

    acloud create --local-image --local-instance
    
  2. आवश्यक पैकेजों के अपडेट स्वीकार करें।

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

  4. कटलफिश डिवाइस का चयन करें।

आपको Android डिवाइस वाले VNC सत्र के साथ स्वागत किया जाना चाहिए!

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

adb logcat

एक बदलाव करें

इस उदाहरण चेंजलिस्ट के बाद स्रोत कोड को अपडेट करें।

  1. अपने चेकआउट ( aosp/ निर्देशिका) की जड़ से, frameworks/native गिट प्रोजेक्ट पर नेविगेट करें:

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

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

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

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

    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();
    
  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. सफल रंग परिवर्तन के बाद स्क्रीन उपस्थिति

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

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

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

  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 के उपयोग को सरल बनाता है।

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

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

  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 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-बिल्डिंग ग्रुप को प्रश्न भेजें।