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

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

हालांकि यह रास्ता चुनौती भरा है, लेकिन Android टीम आपके गेम को आसान बनाने की हर रिलीज़ को ट्रैक करता है. साथ ही, टीम सीधे तौर पर जानकारी देते हुए हर दिन सुधार करती है में काम करती हैं.

बस आराम से बैठें, कोई टर्मिनल फ़ायर करें, और इतिहास रचें.

लक्ष्य

इस कोडलैब का मिशन दो इवेंट हैं:

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

ज़रूरी शर्तें

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

पर्यावरण

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

वर्कस्टेशन सेट अप करें

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

कोड को शुरू और सिंक करें

  1. अपनी होम डायरेक्ट्री पर जाएं:

    cd ~
  2. इसके अंदर एक लोकल वर्किंग सबडायरेक्ट्री बनाएं:

    mkdir aosp
  3. डायरेक्ट्री में जाएं:

    cd aosp
  4. एओएसपी रिपॉज़िटरी सोर्स कोड की मुख्य ब्रांच को शुरू करें (डिफ़ॉल्ट):

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

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

    repo sync -j8

शुरुआती सिंक में एक घंटा या उससे ज़्यादा समय लग सकता है.

हर रेपो चेकआउट को मेनिफ़ेस्ट फ़ाइल से दिखाया जाता है. एक बार में एक से ज़्यादा रिपॉज़िटरी को चेकआउट करने की अनुमति है. हालांकि, इसके लिए ज़रूरी है कि वे अलग-अलग डायरेक्ट्री में मौजूद हों. हालांकि, ध्यान दें कि हर चेकआउट और बिल्ड में करीब 300 जीबी स्टोरेज का इस्तेमाल होता है. यह स्टोरेज लगातार बढ़ता रहता है. इसलिए, दो रिपॉज़िटरी के चेकआउट तक ही सीमित रहें या अपने सिस्टम में एक सेकंडरी ड्राइव जोड़ें.

कोड बनाएं

Android बनाने के लिए, आपको एक टारगेट चुनना होगा डिवाइस टाइप को चुनें. इसके लिए, lunch निर्देश का इस्तेमाल करें. टारगेट, एक डिवाइस के क्रम में होने वाला बदलाव है. जैसे कि कोई ख़ास मॉडल या डिवाइस का नाप या आकार.

डिवाइस लक्ष्य aosp_cf_x86_64_phone-userdebug आपको Android के लिए कटलफ़िश वर्चुअल Android डिवाइस बनाने के लिए बिना किसी डिवाइस के टेस्ट किया जा सकता है.

इसके बजाय, फ़िज़िकल डिवाइस बनाने और अपडेट करने के लिए, कोई दूसरा टारगेट चुनें और फ़ॉलो करें फ़्लैश करने वाले डिवाइस के निर्देश देखें.

  1. Android डिवाइसों को बनाने के लिए अपना एनवायरमेंट सेट अप करें. इसके लिए, अपने सोर्स कोड चेकआउट के रूट से यह कमांड चलाएं:

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

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

    m

पहले बिल्ड में कई घंटे लग सकते हैं. बाद में बनाए जाने वाले बिल्ड में काफ़ी समय लगता है कम समय लगता है.

कटलफ़िश लॉन्च करें

कटलफ़िश एक Android एम्युलेटर है. इसका इस्तेमाल आपके बिल्ड की जांच करने के लिए किया जाता है.

  1. अगर आपने कभी भी कटलफ़िश इंस्टॉल नहीं किया है, तो आपको कटलफ़िश डिपेंडेंसी. टर्मिनल विंडो में, ये निर्देश चलाएं होस्ट Debian पैकेज को डाउनलोड, बनाने, और इंस्टॉल करने के लिए:

    sudo apt install -y git devscripts equivs config-package-dev debhelper-compat golang curl
    git clone https://github.com/google/android-cuttlefish
    cd android-cuttlefish
    for dir in base frontend; do
    pushd $dir
    # Install build dependencies
    sudo mk-build-deps -i
    dpkg-buildpackage -uc -us
    popd
    done
    sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f
    sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f
    sudo usermod -aG kvm,cvdnetwork,render $USER
    sudo reboot

    डिवाइस को फिर से चालू करने पर, अतिरिक्त कर्नेल मॉड्यूल इंस्टॉल किए जाते हैं और udev लागू होता है नियम.

  2. कटलफ़िश लॉन्च करें:

    launch_cvd --daemon
    
  3. https://localhost:8443 पर जाकर, कटलफ़िश डिवाइस से कनेक्ट करें आपका वेब ब्राउज़र. Android पर चलने वाले वीडियो स्ट्रीम से आपका स्वागत है बनाए गए हैं.

बदलाव करें

सोर्स कोड को अपडेट करने के लिए, इस उदाहरण बदलाव की सूची का इस्तेमाल करें.

  1. अपने चेकआउट पेज (aosp/ डायरेक्ट्री) के रूट से, इस पर जाएं frameworks/native Git प्रोजेक्ट:

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

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

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

    void SurfaceFlinger::updateColorMatrixLocked() {
    
  5. updateColorMatrixLocked() की शुरुआत में ये दो लाइनें जोड़ें:

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

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

    adb root
    adb remount
    adb sync
    adb reboot

पुष्टि करें कि आपको अपने चुने गए डिवाइस के रंग में वैसा ही बदलाव दिख रहा है जैसा दिखने वाला है इमेज 1 में.

रंग बदलने की प्रोसेस का उदाहरण

पहली इमेज. रंग बदलने के बाद स्क्रीन का दिखना

अपने कोड की जांच करें

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

जांच का इस्तेमाल करने के लिए, इन निर्देशों का पालन करें:

  1. चलाएं:

    atest DevCodelabTest
  2. जांच पूरी नहीं हो पाएगी. असफल टेस्ट के स्टैक ट्रेस की जांच करें:

    STACKTRACE:
    java.lang.AssertionError
     at org.junit.Assert.fail(Assert.java:87)
     at org.junit.Assert.assertTrue(Assert.java:42)
     at org.junit.Assert.assertTrue(Assert.java:53)
     at android.test.example.devcodelab.DevCodelabTest.testHelloWorld(DevCodelabTest.java:29)
  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

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

Repo, git clone जैसे निर्देशों को बंडल करके, Git के इस्तेमाल को आसान बनाता है एक साथ कई Git डेटा स्टोर करने की जगह (या प्रोजेक्ट) में पूरे कर लें.

Git और Repo के बारे में खास जानकारी पाने के लिए, सोर्स कंट्रोल टूल देखें. इनमें Android सोर्स कोड के साथ काम करने से जुड़े सभी दस्तावेज़ के लिंक. 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 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

Gerrit में अपने बदलाव देखें

टर्मिनल में प्रिंट किए गए इस लिंक पर जाएं:

https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432

यह Android प्लैटफ़ॉर्म डेवलपमेंट के लिए, स्टार्टर कोडलैब पूरा करता है. यहां जाएं: पैच सबमिट करना और Android को डेवलप करने के बारे में पूरी जानकारी पाने के लिए, बाकी इस साइट पर.

बदलाव को पहले जैसा करना

आम तौर पर, परीक्षण के बाद और समीक्षा और मंज़ूरी के बाद, आप अपना बदलाव गेरिट करें और इसे रिपॉज़िटरी में मर्ज करें.

इसके बजाय, इस कोडलैब के लिए, 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 .

अब, आपका काम हो गया है! बहुत अच्छे!

सहायता पाएं

अगर इस कोडलैब के दौरान आपको गड़बड़ियां मिलती हैं, तो उनकी शिकायत करने के लिए समस्या को ट्रैक करने वाला टूल सबसे नीचे मौजूद लिंक पर क्लिक करें. android-building ग्रुप को सवाल भेजें.