Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

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

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

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

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

लक्ष्य

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

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

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

सामान्य कोड ( AOSP ) के विकास के लिए उन कोडेलैब की आवश्यकताओं की पूरी सूची यहां दी गई है।

इस कोडलेब को लेने के लिए, आपको सेट अप करना होगा:

वातावरण

आमतौर पर, उपयोगकर्ता सीधे कार्य केंद्र पर निर्माण और विकास करते हैं। क्योंकि आप विभिन्न टर्मिनलों में काम कर रहे होंगे, और उपयोग किए जाने वाले कई कमांड टर्मिनल-विशिष्ट हैं, आपको प्रत्येक टर्मिनल सत्र में उन्हें फिर से चलाने की आवश्यकता होगी। विशेष रूप से, इनमें 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 -j16
    

प्रारंभिक syncs एक घंटे या अधिक ले सकते हैं। प्रतीक्षा करते समय संबंधित विवरण के डाउनलोडिंग निर्देश देखें।

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

युक्ति: स्थान खाली करने के लिए, शाखा निर्देशिका हटाएं और निर्देशिका निर्माण से नए सिरे से शुरू करें:

rm -rf aosp2

कोड बनाएँ

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

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

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

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

    source build/envsetup.sh
    
  2. लंच कमांड को बिल्ड टारगेट पास करें, जैसे:

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

    m
    

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

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

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

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

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

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

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

  4. Cuttlefish डिवाइस का चयन करें।

आपको Android डिवाइस वाले VNC सत्र के साथ बधाई दी जानी चाहिए!

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

adb logcat

एक बदलाव करें

स्रोत कोड को इस उदाहरण परिवर्तक के बाद अद्यतन करें।

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

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

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

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. कोड बनाएँ:

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

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    

आपको डिवाइस पर एक रंग परिवर्तन देखना चाहिए।

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

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

परीक्षण का उपयोग करने के लिए:

  1. Daud:

    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 और रेपो के साक्षात्कार के लिए स्रोत नियंत्रण उपकरण देखें। प्रत्येक प्रोजेक्ट से जुड़ी शाखाओं के लिए 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 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 विकसित करने पर पूरी जानकारी के लिए इस साइट के बाकी हिस्सों को देखें।

अपने परिवर्तन को वापस लाएं

आम तौर पर, पोस्ट परीक्षण और समीक्षा / अनुमोदन, आप अपने परिवर्तन को गेरिट में जमा करेंगे और इसे रिपॉजिटरी में मर्ज करेंगे।

इसके बजाय, कोडलैब के प्रयोजनों के लिए, Gerrit में Abandon पर क्लिक करके अपने चैंजलिस्ट को वापस लाएं।

फिर फ्रेमवर्क / देशी परियोजना निर्देशिका (या इसके उप) में संबद्ध अस्थायी शाखा को छोड़ दें:

repo abandon codelab .

परीक्षण फ़ाइल में परिवर्तनों को वापस करने के लिए भी याद रखें। चूँकि हमने repo start नहीं किया, git commit , और repo upload ने परिवर्तन को repo upload किया, इसलिए हम केवल फ़ाइल को ही रीसेट कर सकते हैं, जैसे (मान लें कि आप aosp/platform_testing directory ):

git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .

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

मदद लें

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