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

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

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

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

लक्ष्य

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

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

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

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

वातावरण

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

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

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

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

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

    m
    

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

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

Acloud AOSP में एक कमांड लाइन उपकरण है जो आभासी Android उपकरणों का निर्माण, इस मामले Cuttlefish में में उपयोगकर्ताओं की सहायता करता है।

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

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

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

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

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

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

आप अपने माउस और कीबोर्ड का उपयोग करके अपने वर्कस्टेशन पर वर्चुअल डिवाइस से इंटरैक्ट कर सकते हैं। तुम भी लॉग भीतर होने वाली गतिविधियों का पालन करें आप Android डीबग ब्रिज (एडीबी) का उपयोग करके अपने डिवाइस का उपयोग करते समय कर सकते हैं 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. इन दो पंक्तियों को खोजें:

    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. 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
    

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

जैसे आदेशों bundling द्वारा रेपो सरल Git उपयोग git clone एक ही बार में कई Git संग्रह (या परियोजनाओं) भर में काम करने के लिए।

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

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 के विकास पर पूर्ण विवरण के लिए, इस साइट के बाकी देखें।

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

आम तौर पर, परीक्षण के बाद और समीक्षा और अनुमोदन पर, आप गेरिट में अपना परिवर्तन जमा करते हैं और इसे भंडार में विलय कर देते हैं।

इसके बजाय, इस codelab के प्रयोजनों के लिए, Gerrit में त्याग दें पर क्लिक करके अपने परिवर्तन सूची वापस।

तब में जुड़े अस्थायी शाखा का परित्याग 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 .

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

मदद लें

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