आपके पास, धरती के इतिहास में सबसे ज़्यादा इंस्टॉल किए गए ऑपरेटिंग सिस्टम को डेवलप करने में मदद करने का विकल्प है. हां, आप Android प्लैटफ़ॉर्म इंजीनियर बनने के लिए यहां हैं.
हालांकि, यह प्रोसेस चुनौतीपूर्ण है, लेकिन Android टीम हर रिलीज़ के साथ, इसे आसान बनाने की कोशिश करती है. साथ ही, टीम सीधे तौर पर जानकारी देते हुए हर दिन सुधार करती है में काम करती हैं.
बस आराम से बैठें, कोई टर्मिनल फ़ायर करें, और इतिहास रचें.
लक्ष्य
इस कोडलैब का मकसद दो तरह का है:
- आपको यह जानने में मदद मिलती है कि प्लैटफ़ॉर्म (ऑपरेटिंग सिस्टम) पर काम करने वाले Android इंजीनियर के लिए, डेवलपर वर्कफ़्लो कैसा होता है.
- Android के टूल, दस्तावेज़, और डेवलपर वर्कफ़्लो के बारे में सुझाव/राय दें या शिकायत करें.
ज़रूरी शर्तें
इस कोडलैब के लिए ज़रूरी शर्तों की सूची, सामान्य शर्तों से तय की गई है प्लैटफ़ॉर्म (AOSP) डेवलपमेंट. इस कोडलैब को पूरा करने के लिए, ये सेट अप करें:
- सार्वजनिक तौर पर उपलब्ध सभी ज़रूरी शर्तें पूरी करने वाला फ़िज़िकल Linux वर्कस्टेशन.
- Android कोडबेस में बदलाव करने के लिए, रिपो और Git कॉन्फ़िगरेशन ज़रूरी है.
पर्यावरण
आम तौर पर, उपयोगकर्ता सीधे वर्कस्टेशन पर प्रोग्राम बनाते और डेवलप करते हैं. ऐसा हो सकता है कि आप कई टर्मिनल में काम कर रहे हों और इस्तेमाल किए गए कई कमांड, टर्मिनल के हिसाब से हों. इसलिए, आपको हर टर्मिनल सेशन में उन्हें फिर से चलाना होगा. खास तौर पर, इनमें source build/envsetup.sh
और lunch
निर्देश शामिल हैं.
वर्कस्टेशन सेट अप करना
- अपने वर्कस्टेशन पर ज़रूरी पैकेज इंस्टॉल करें.
- टर्मिनल में रहते हुए, सभी Git रिपॉज़िटरी के लिए Repo इंस्टॉल करें और क्रेडेंशियल पाएं.
कोड को शुरू और सिंक करना
अपनी होम डायरेक्ट्री पर जाएं:
cd ~
इसमें लोकल वर्किंग सबडायरेक्ट्री बनाएं:
mkdir aosp
डायरेक्ट्री में जाएं:
cd aosp
एओएसपी रिपॉज़िटरी सोर्स कोड की मुख्य ब्रांच को शुरू करें (डिफ़ॉल्ट):
repo init -u https://android.googlesource.com/platform/manifest
Git के क्रेडेंशियल (नाम, ईमेल पता) डालें या स्वीकार करें.
सोर्स कोड सिंक करें:
repo sync -j8
शुरुआती सिंक में एक घंटा या उससे ज़्यादा समय लग सकता है.
हर रेपो चेकआउट को मेनिफ़ेस्ट फ़ाइल से दिखाया जाता है. एक बार में एक से ज़्यादा रिपॉज़िटरी को चेकआउट किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि वे अलग-अलग डायरेक्ट्री में मौजूद हों. हालांकि, ध्यान दें कि हर चेकआउट और बिल्ड में करीब 300 जीबी स्टोरेज का इस्तेमाल होता है. यह स्टोरेज लगातार बढ़ता रहता है. इसलिए, दो रिपॉज़िटरी के चेकआउट तक ही सीमित रहें या अपने सिस्टम में एक सेकंडरी ड्राइव जोड़ें.
कोड बनाना
Android ऐप्लिकेशन बनाने के लिए, आपको lunch
कमांड की मदद से, डिवाइस का टारगेट टाइप चुनना होगा. टारगेट, एक डिवाइस के क्रम में होने वाला बदलाव है.
जैसे कि कोई ख़ास मॉडल या डिवाइस का नाप या आकार.
डिवाइस टारगेट aosp_cf_x86_64_phone-userdebug
की मदद से, Cuttlefish वर्चुअल Android डिवाइस बनाया जा सकता है. इससे, किसी फ़िज़िकल डिवाइस के बिना भी टेस्टिंग की जा सकती है.
इसके बजाय, फ़िज़िकल डिवाइस बनाने और अपडेट करने के लिए, कोई दूसरा टारगेट चुनें और फ़ॉलो करें फ़्लैश करने वाले डिवाइस के निर्देश देखें.
Android डिवाइसों को बनाने के लिए अपना एनवायरमेंट सेट अप करें. इसके लिए, अपने सोर्स कोड चेकआउट के रूट से यह कमांड चलाएं:
source build/envsetup.sh
इस तरह से बिल्ड टारगेट को लंच कमांड पर पास करें:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
अपने चेकआउट में कहीं से भी कोड बनाएं. इसके लिए, इनका इस्तेमाल करें:
m
पहले बिल्ड के लिए कई घंटे लग सकते हैं. बाद में बनाए जाने वाले बिल्ड में काफ़ी समय लगता है कम समय लगता है.
Cuttlefish लॉन्च करना
कटलफ़िश एक Android एम्युलेटर है. इसका इस्तेमाल आपके बिल्ड की जांच करने के लिए किया जाता है.
अगर आपने कभी भी कटलफ़िश इंस्टॉल नहीं किया है, तो आपको कटलफ़िश डिपेंडेंसी. टर्मिनल विंडो में, ये निर्देश चलाएं होस्ट 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
नियम लागू होते हैं.Cuttlefish लॉन्च करें:
launch_cvd --daemon
https://localhost:8443
पर जाकर, कटलफ़िश डिवाइस से कनेक्ट करें आपका वेब ब्राउज़र. आपको उस Android डिवाइस की वीडियो स्ट्रीम दिखेगी जिसे आपने अभी बनाया है.
बदलाव करें
changelist के इस उदाहरण का पालन करके, सोर्स कोड अपडेट करें.
अपने चेकआउट पेज (
aosp/
डायरेक्ट्री) के रूट से, इस पर जाएंframeworks/native
Git प्रोजेक्ट:cd frameworks/native
इस निर्देश के साथ एक अस्थायी प्रोजेक्ट शुरू करें:
repo start <some-name> .
यहां पर परिवर्तन सूची से अपडेट शामिल करने के लिए
SurfaceFlinger.cpp
में बदलाव करें निम्न स्थान:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
यह पंक्ति खोजें:
void SurfaceFlinger::updateColorMatrixLocked() {
updatedColorMatrixLocked() की शुरुआत में ये दो लाइनें जोड़ें:
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});
कोड बनाएं:
m
डिवाइस पर मौजूद बिल्ड को अपडेट करें:
adb root
adb remount
adb sync
adb reboot
पुष्टि करें कि आपको अपने चुने गए डिवाइस के रंग में वैसा ही बदलाव दिख रहा है जैसा दिखने वाला है इमेज 1 में.
पहला डायग्राम. रंग बदलने के बाद स्क्रीन का दिखना
अपने कोड की जांच करना
कोडलैब के इस हिस्से में, सोर्स ट्री में मौजूद उदाहरण के तौर पर दिए गए टेस्ट का इस्तेमाल किया गया है, जो काम नहीं कर रहा है. यह इसके लिए Atest का इस्तेमाल करता है स्थानीय स्तर पर परीक्षण चलाकर कोड की जांच करना.
जांच का इस्तेमाल करने के लिए, इन निर्देशों का पालन करें:
चलाएं:
atest DevCodelabTest
जांच नहीं हो पाएगी. काम न करने वाले टेस्ट के स्टैक ट्रेस की जांच करें:
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)
फिर यहां देखें
platform_testing/tests/example/devcodelab
बदलाव करने के लिए फ़ाइल पाने के लिए,
android.test.example.devcodelab.DevCodelabTest
में टेस्ट का नाम डालें और.
को/
से बदलें. इससे आपको यह नतीजा मिलेगा:src/android/test/example/devcodelab/DevCodelabTest.java
इसके बाद, बदलाव करें
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
बदलने के लिए
Assert.assertTrue(false)
के साथ
Assert.assertTrue(true)
समस्या ठीक हो जाने की पुष्टि करने के लिए, फिर से जांच करें:
atest DevCodelabTest
समीक्षा के लिए अपना कोड अपलोड करें
Repo, git clone
जैसे निर्देशों को बंडल करके, Git के इस्तेमाल को आसान बनाता है
एक साथ कई सारे Git डेटा स्टोर करने की जगह (या प्रोजेक्ट) में पूरे कर लें.
Git और Repo के बारे में खास जानकारी पाने के लिए, सोर्स कंट्रोल टूल देखें. इनमें Android सोर्स कोड के साथ काम करने से जुड़े सभी दस्तावेज़ के लिंक. AOSP डेटा स्टोर करने की जगह देखें Git प्रोजेक्ट की पूरी सूची और इसके लिए अलग-अलग प्रोजेक्ट (पाथ) देखें डाल सकते हैं.
Git में अपने प्रोजेक्ट के कोड की समीक्षा करने के लिए, आपको Gerrit के वेब-आधारित कोड की समीक्षा करने वाले सिस्टम का इस्तेमाल करना होगा.
मान लें कि आपने
frameworks/native
प्रोजेक्ट में बदलाव किए हैं, तो उन्हें अपलोड करने के लिए इन कमांड का इस्तेमाल करें:cd frameworks/native
repo start codelab .
git add .
git commit
तय किए गए मैसेज के लिए, यह जानकारी डालें:
Android codelab change Test: manual atest
बदलाव अपलोड करें:
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 ग्रुप को सवाल भेजें.