इतिहास में सबसे ज़्यादा इंस्टॉल किए गए ऑपरेटिंग सिस्टम को डेवलप करने में मदद की जा सकती है पृथ्वी के. हां, आपको Android की दुनिया में शामिल होने का मौका मिला है प्लैटफ़ॉर्म इंजीनियर हैं.
हालांकि यह रास्ता चुनौती भरा है, लेकिन Android टीम आपके गेम को आसान बनाने की हर रिलीज़ को ट्रैक करता है. साथ ही, टीम सीधे तौर पर जानकारी देते हुए हर दिन सुधार करती है में काम करती हैं.
बस आराम से बैठें, कोई टर्मिनल फ़ायर करें, और इतिहास रचें.
लक्ष्य
इस कोडलैब का मिशन दो इवेंट हैं:
- आपको यह जानने में मदद मिलती है कि प्लैटफ़ॉर्म (ऑपरेटिंग सिस्टम) पर काम करने वाले Android इंजीनियर के लिए, डेवलपर वर्कफ़्लो कैसा होता है.
- आपको सुझाव देने के लिए प्रोत्साहित करें टूल, दस्तावेज़, और डेवलपर वर्कफ़्लो के बारे में जानकारी मिलती है.
ज़रूरी शर्तें
इस कोडलैब के लिए ज़रूरी शर्तों की सूची, सामान्य शर्तों से तय की गई है प्लैटफ़ॉर्म (AOSP) डेवलपमेंट. इस कोडलैब को पूरा करने के लिए, ये सेट अप करें:
- सभी सार्वजनिक शर्तों को पूरा करने वाला फ़िज़िकल Linux वर्कस्टेशन है.
- Android कोडबेस में बदलाव करने के लिए, रिपो और Git कॉन्फ़िगरेशन ज़रूरी है.
पर्यावरण
आम तौर पर, उपयोगकर्ता सीधे वर्कस्टेशन पर बनाते हैं और उसे डेवलप करते हैं. क्योंकि आप
अलग-अलग टर्मिनल पर काम करती हों और इस्तेमाल किए जाने वाले कई कमांड, टर्मिनल के हिसाब से हों,
आपको उन्हें हर टर्मिनल सेशन में फिर से चलाना होगा. खास तौर पर, इनमें source build/envsetup.sh
और lunch
निर्देश शामिल हैं.
वर्कस्टेशन सेट अप करें
- अपने वर्कस्टेशन पर ज़रूरी पैकेज इंस्टॉल करें.
- टर्मिनल में रहते हुए, Repo इंस्टॉल करें और क्रेडेंशियल पाएं सभी Git डेटा स्टोर करने की जगह पर.
कोड को शुरू और सिंक करें
अपनी होम डायरेक्ट्री पर जाएं:
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
आपको
Android के लिए कटलफ़िश वर्चुअल Android डिवाइस बनाने के लिए
बिना किसी डिवाइस के टेस्ट किया जा सकता है.
इसके बजाय, फ़िज़िकल डिवाइस बनाने और अपडेट करने के लिए, कोई दूसरा टारगेट चुनें और फ़ॉलो करें फ़्लैश करने वाले डिवाइस के निर्देश देखें.
Android डिवाइसों को बनाने के लिए अपना एनवायरमेंट सेट अप करें. इसके लिए, अपने सोर्स कोड चेकआउट के रूट से यह कमांड चलाएं:
source build/envsetup.sh
बिल्ड टारगेट को lunch कमांड में इस तरह पास करें:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
अपने चेकआउट में कहीं से भी कोड बनाएं. इसके लिए, इनका इस्तेमाल करें:
m
पहले बिल्ड में कई घंटे लग सकते हैं. बाद में बनाए जाने वाले बिल्ड में काफ़ी समय लगता है कम समय लगता है.
कटलफ़िश लॉन्च करें
कटलफ़िश एक 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
लागू होता है नियम.कटलफ़िश लॉन्च करें:
launch_cvd --daemon
https://localhost:8443
पर जाकर, कटलफ़िश डिवाइस से कनेक्ट करें आपका वेब ब्राउज़र. Android पर चलने वाले वीडियो स्ट्रीम से आपका स्वागत है बनाए गए हैं.
बदलाव करें
सोर्स कोड को अपडेट करने के लिए, इस उदाहरण बदलाव की सूची का इस्तेमाल करें.
अपने चेकआउट पेज (
aosp/
डायरेक्ट्री) के रूट से, इस पर जाएंframeworks/native
Git प्रोजेक्ट:cd frameworks/native
इस निर्देश के साथ एक अस्थायी प्रोजेक्ट शुरू करें:
repo start <some-name> .
यहां पर परिवर्तन सूची से अपडेट शामिल करने के लिए
SurfaceFlinger.cpp
में बदलाव करें निम्न स्थान:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
यह पंक्ति खोजें:
void SurfaceFlinger::updateColorMatrixLocked() {
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});
कोड बनाएं:
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 ग्रुप को सवाल भेजें.