Android सामान्य कर्नेल

AOSP के सामान्य कर्नेल (जिन्हें Android के सामान्य कर्नेल या ACKs भी कहा जाता है), kernel.org के कर्नेल के डाउनस्ट्रीम होते हैं. इनमें Android कम्यूनिटी के लिए ऐसे पैच शामिल होते हैं जिन्हें मुख्य या लंबे समय तक काम करने वाले (एलटीएस) कर्नेल में मर्ज नहीं किया गया है. इन पैच में ये शामिल हो सकते हैं:

  • Android की सुविधाओं के लिए, अपस्ट्रीम फ़ंक्शन के बैकपोर्ट और चुनिंदा फ़ंक्शन
  • ऐसी सुविधाएं जो Android डिवाइसों के लिए तैयार हैं, लेकिन अपस्ट्रीम पर अब भी काम चल रहा है
  • वेंडर/OEM की ऐसी सुविधाएं जो अन्य नेटवर्क पार्टनर के लिए काम की हैं

android-mainline, Android की सुविधाओं के लिए मुख्य डेवलपमेंट ब्रांच है. जब भी Linus Torvalds कोई रिलीज़ या रिलीज़ कैंडिडेट पोस्ट करते हैं, तो Linux मुख्य फ़ाइल को android-mainline में मर्ज कर दिया जाता है. 2019 से पहले, Android के सामान्य कर्नेल हाल ही में एलान किए गए एलटीएस कर्नेल की क्लोनिंग करके और Android के लिए बने खास पैच जोड़कर बनाए गए थे. android-mainline से नए Android कमन कर्नेल को अलग करने के लिए, इस प्रोसेस में 2019 में बदलाव किया गया था. इस नए मॉडल में, पोर्ट करने और Android पैच को टेस्ट करने में काफ़ी मेहनत नहीं करनी पड़ती. इसके लिए, पुराने तरीके से एक ही नतीजे मिलते हैं. android-mainline को लगातार जांच की जाती है. इस मॉडल से यह पक्का होता है कि पब्लिश होने के दिन से ही, बेहतर क्वालिटी का कर्नेल उपलब्ध हो.

जब किसी नए एलटीएस (एलटीएस) का एलान अपस्ट्रीम किया जाता है, तब संबंधित कॉमन कर्नेल को android-mainline से ब्रांच कर दिया जाता है. इससे पार्टनर, android-mainline से मर्ज करके, LTS वर्शन के एलान से पहले ही प्रोजेक्ट शुरू कर सकते हैं. नई सामान्य कर्नेल शाखा बनने के बाद, पार्टनर आसानी से मर्ज सोर्स को नई शाखा में बदल सकते हैं.

आम तौर पर इस्तेमाल होने वाली अन्य कर्नेल शाखाओं को, उनसे जुड़े LTS कर्नेल से नियमित तौर पर मर्ज मिलते हैं. आम तौर पर, ये मर्ज, LTS रिलीज़ पोस्ट होने के तुरंत बाद किए जाते हैं. उदाहरण के लिए, जब Linux 6.1.75 पोस्ट किया गया था, तब उसे 6.1 सामान्य कर्नेल (android14-6.1) में मर्ज कर दिया गया था. पार्टनर को सलाह दी जाती है कि वे अपनी कर्नेल को LTS और Android से जुड़ी गड़बड़ी के समाधानों के साथ अप-टू-डेट रखें.

ACK KMI कर्नेल शाखा

GKI के कर्नेल में, कर्नेल मॉड्यूल इंटरफ़ेस बेहतर तरीके से काम करता है. केएमआई की पहचान, केरल वर्शन और Android प्लैटफ़ॉर्म रिलीज़ से की जाती है. इसलिए, शाखाओं को ANDROID_RELEASE-KERNEL_VERSION नाम दिया जाता है. उदाहरण के लिए, Android 14 के लिए 6.1 GKI केरल का नाम android14-6.1 है. Android 15 के लिए, GKI कर्नेल android15-6.6 की शुरुआत की गई थी.

फ़ीचर और लॉन्च कर्नेल

Android 15 से पहले, डिवाइस लॉन्च करने के लिए, सबसे हाल ही के तीन में से किसी भी कर्नेल का इस्तेमाल किया जा सकता था. Android 15 से, डिवाइस लॉन्च के लिए, kernel के दो सबसे नए वर्शन का इस्तेमाल किया जा सकता है. Android 15 के लिए लॉन्च केर्नेल, android15-6.6 और android14-6.1 हैं.

प्लैटफ़ॉर्म की रिलीज़ को अपडेट करते समय कर्नेल को अपग्रेड करने की ज़रूरत नहीं होती है. इसलिए, जिन कर्नेल में प्लैटफ़ॉर्म रिलीज़ की सबसे नई सुविधाएं नहीं हैं उनका इस्तेमाल अब भी डिवाइसों को लॉन्च करने के लिए किया जा सकता है. इसलिए, android14-6.1 जैसे Android 14 के लिए डिज़ाइन किए गए कर्नेल का इस्तेमाल, प्लैटफ़ॉर्म रिलीज़ को Android 15 पर अपग्रेड करने के बाद भी डिवाइसों पर किया जा सकता है.

Android प्लैटफ़ॉर्म रिलीज़ लॉन्च कर्नेल फ़ीचर कर्नेल
Android 15 (2024) android15-6.6
android14-6.1
android15-6.6
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android14-6.1
android14-5.15
Android 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android13-5.15
android13-5.10
Android 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android12-5.10
android12-5.4
Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

1 अगर प्लैटफ़ॉर्म रिलीज़ के लिए, संबंधित बीएसपी को अपडेट कर दिया गया है, तो अन्य पाबंदियां लागू हो सकती हैं. सामान्य शब्दों में, कर्नेल का Android रिलीज़ नंबर टारगेट FCM वर्शन से ज़्यादा या उसके बराबर होना चाहिए. ज़्यादा जानकारी के लिए, विक्रेता इंटरफ़ेस ऑब्जेक्ट - कर्नेल ब्रांचों को मैच करें पर जाएं.

सामान्य कर्नेल हैरारकी

android-mainline में मौजूद ब्रांच

सामान्य कर्नेल हैरारकी का सबसे ऊपरी लेवल, पहले चित्र में दिखाया गया है.

android-mainline kernel से सामान्य कर्नेल बनाना

पहली इमेज. android-mainline kernel से सामान्य कर्नेल बनाना

ध्यान दें कि साल 2022 में, android-mainline से एक नया Android कॉमन कर्नेल android14-6.1 ब्रैंच किया गया था. साल 2023 में, अगले LTS के एलान के बाद, android15-6.6 को android-mainline से अलग कर दिया गया था.

जैसा कि पहली इमेज में दिखाया गया है, कर्नेल का हर वर्शन दो जीकेआई कर्नेल का आधार हो सकता है. उदाहरण के लिए, v5.15 के दो कर्नेल android13-5.15 और android14-5.15 हैं. दोनों ही कर्नेल, अपने-अपने प्लैटफ़ॉर्म रिलीज़ के लिए फ़ीचर कर्नेल हैं. यही वजह 5.10 के मामले में भी थी. जब एलटीएस (लंबे समय तक सहायता) का एलान हुआ था, तब android12-5.10 को बनाया गया था. साथ ही, android13-5.10 को android12-5.10 से ब्रांच करके, वसंत 2021 में कर्नेल फ़ीचर की उपलब्धि हासिल करने के लिए बनाया गया. ऐसा Android 13 के लिए सुविधाओं को डेवलप करने की अनुमति देने के लिए किया गया. Android 15 (2024) से, हर कर्नेल वर्शन के लिए सिर्फ़ एक नया GKI कर्नेल उपलब्ध होगा. android15-6.1 कर्नेल उपलब्ध नहीं होगा.

ACK KMI branch लाइफ़साइकल

ACK KMI की शाखा का लाइफ़साइकल, नीचे दी गई इमेज 2 में दिखाया गया है.

6.6 ACK KMI branch lifecycle

दूसरी इमेज. 6.6 ACK KMI branch lifecycle

डेवलपमेंट प्रोसेस और ब्रांच के लाइफ़साइकल को साफ़ तौर पर बताने के लिए, दूसरी इमेज में ACK KMI की 6.6 ब्रांच पर फ़ोकस किया गया है.

ACK KMI की हर शाखा, तीन चरणों से गुज़रती है. इन चरणों को दूसरे चित्र में दिखाया गया है. हर चरण के लिए, अलग-अलग रंग का इस्तेमाल किया गया है. जैसा कि दिखाया गया है, LTS को नियमित तौर पर मर्ज किया जाता है, भले ही वह किसी भी फ़ेज़ में हो.

डेवलपमेंट का फ़ेज़

बन जाने के बाद, ACK KMI की शाखा डेवलपमेंट फ़ेज़ (इसे दूसरे चित्र में dev के तौर पर लेबल किया गया है) में चली जाती है. साथ ही, यह Android प्लैटफ़ॉर्म की अगली रिलीज़ के लिए, सुविधाओं के योगदान के लिए उपलब्ध हो जाती है. दूसरे चित्र में, android15-6.6 तब बनाया गया था, जब 6.6 को अपस्ट्रीम LTS कर्नेल के तौर पर घोषित किया गया था.

स्टेबलाइज़ेशन फ़ेज़

जब ACK KMI ब्रैंच को सुविधा पूरी होने का एलान किया जाता है, तो वह स्थिरता के चरण में प्रवेश कर जाता है. इसे दूसरे चित्र में स्थिर के तौर पर लेबल किया गया है. पार्टनर की सुविधाएं और गड़बड़ी ठीक करने के लिए किए गए बदलाव अब भी स्वीकार किए जाते हैं. हालांकि, इंटरफ़ेस पर असर डालने वाले किसी भी बदलाव का पता लगाने के लिए, केएमआई ट्रैकिंग चालू की गई है. इस चरण में, केएमआई में बदलाव स्वीकार किए जाते हैं और केएमआई की परिभाषा को पहले से तय किए गए समयसीमा (आम तौर पर हर दो हफ़्ते) पर अपडेट किया जाता है. केएमआई मॉनिटरिंग के बारे में जानकारी के लिए, जीकेआई की खास जानकारी देखें.

KMI फ़्रीज़ किया गया फ़ेज़

किसी नए प्लैटफ़ॉर्म की रिलीज़ को AOSP पर पुश करने से पहले, ACK KMI ब्रांच को फ़्रीज़ किया जाता है. यह ब्रांच, अपने पूरे जीवनकाल के लिए फ़्रीज़ रहती है. इसका मतलब है कि KMI को तोड़ने वाले किसी भी बदलाव को तब तक स्वीकार नहीं किया जाता, जब तक सुरक्षा से जुड़ी कोई गंभीर समस्या नहीं मिलती. इस समस्या को स्थिर KMI पर असर डाले बिना ठीक नहीं किया जा सकता. KMI के काम न करने से जुड़ी समस्याओं से बचने के लिए, LTS से मर्ज किए गए कुछ पैच में बदलाव किया जा सकता है या उन्हें हटाया जा सकता है. ऐसा तब किया जाता है, जब Android डिवाइसों के लिए सुधार की ज़रूरत न हो.

जब ACK KMI ब्रांच को फ़्रीज़ किया जाता है, तो गड़बड़ियां ठीक की जा सकती हैं और पार्टनर को मिलने वाली सुविधाएं इस्तेमाल की जा सकती हैं. ऐसा तब तक किया जा सकता है, जब तक मौजूदा KMI कॉमन कर्नेल काम नहीं करता. एक्सपोर्ट किए गए नए सिंबल की मदद से, KMI को तब तक बड़ा किया जा सकता है, जब तक मौजूदा KMI में शामिल इंटरफ़ेस पर असर न पड़े. जब KMI में नए इंटरफ़ेस जोड़े जाते हैं, तो वे तुरंत काम करने लगते हैं. साथ ही, आने वाले समय में होने वाले बदलावों से इन पर कोई असर नहीं पड़ता.

उदाहरण के लिए, KMI इंटरफ़ेस के सामान्य कोर का इस्तेमाल करने वाले स्ट्रक्चर में कोई फ़ील्ड जोड़ने वाले बदलाव की अनुमति नहीं है, क्योंकि इससे इंटरफ़ेस की परिभाषा बदल जाती है:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

हालांकि, नया फ़ंक्शन जोड़ना ठीक है:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

GKI कर्नेल के लाइफ़टाइम के लिए, यूज़रस्पेस के साथ बैकवर्ड कम्पैटिबिलिटी बनाए रखी जाती है, ताकि कर्नेल का इस्तेमाल उस Android प्लैटफ़ॉर्म रिलीज़ के लिए सुरक्षित तरीके से किया जा सके जिस पर डिवाइस लॉन्च किया गया था. पिछले रिलीज़ के साथ लगातार टेस्ट करने से यह पक्का होता है कि ऐप्लिकेशन, पुराने वर्शन के साथ काम करता रहे. इसलिए, दूसरे चित्र में android15-6.6 कर्नल का इस्तेमाल, Android 15 और उसके बाद के वर्शन वाले डिवाइसों के लिए किया जा सकता है. Android प्लैटफ़ॉर्म रिलीज़, पिछले वर्शन के साथ भी काम करता है. इसलिए, android14-6.1 कर्नेल का इस्तेमाल, Android 15 डिवाइसों के लॉन्च या अपग्रेड के लिए किया जा सकता है.

KMI जनरेशन नंबर

अगर स्थिरता के चरण के दौरान LTS मर्ज होता है या इसके बाद सुरक्षा से जुड़ी कोई समस्या या कोई दूसरा इवेंट होता है, जिसके लिए KMI में बदलाव करने वाला पैच स्वीकार करना ज़रूरी है, तो build.config.common में रिकॉर्ड किया गया KMI जनरेशन नंबर बढ़ जाता है. uname कमांड का इस्तेमाल करके, मौजूदा केएमआई जनरेशन को देखा जा सकता है:

$ uname -r
6.6.30-android15-6-g86d10b30f51f

प्लैटफ़ॉर्म रिलीज़ के बाद की संख्या, केएमआई जनरेशन (इस मामले में 6) है.

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

अलग-अलग कर्नेल के साथ काम करना

एक ही LTS फ़ैमिली के कर्नेल के बीच काम करने की ज़रूरी शर्तें बदल रही हैं. ये बदलाव, GKI के नए कर्नेल से शुरू हो रहे हैं.

GKI कर्नेल

GKI के कर्नेल, उन सभी Android प्लैटफ़ॉर्म रिलीज़ के साथ काम करते हैं जिन पर कर्नेल वर्शन काम करता है. इसके अलावा, Android प्लैटफ़ॉर्म की रिलीज़, पिछली रिलीज़ के GKI कर्नेल के साथ काम करती हैं. इसलिए, Android 15 (2024) पर चलने वाले डिवाइसों पर, Android 14 (2023) के लिए डेवलप किए गए android14-6.1 कर्नेल का इस्तेमाल सुरक्षित तरीके से किया जा सकता है. GKI के साथ काम करने की पुष्टि, GKI के सभी वर्शन के साथ GKI के कर्नेल की लगातार VTS और CTS जांच करके की जाती है.

केएमआई स्थिर होता है, ताकि वेंडर इमेज में कर्नेल मॉड्यूल को फिर से बनाने की ज़रूरत के बिना, कर्नेल को अपडेट किया जा सके.

अलग-अलग जीकेआई कर्नेल के बीच, केएमआई की सुविधा को बनाए नहीं रखा जाता है. उदाहरण के लिए, सभी मॉड्यूल को फिर से बनाए बिना, android14-6.1 कर्नेल को android15-6.6 कर्नेल से बदला नहीं जा सकता.

GKI के कर्नेल, सिर्फ़ उनकी शुरुआती और बाद की रिलीज़ के लिए काम करते हैं. ये सेटिंग, पुरानी रिलीज़ के साथ काम नहीं करतीं. इसलिए, Android 14 (2023) पर काम करने वाले डिवाइसों के लिए, android15-6.6 कर्नेल काम नहीं करता.

कंपैटिबिलिटी मैट्रिक

इस टेबल में कर्नेल के ऐसे वर्शन दिखाए गए हैं जिनकी जांच हर Android प्लैटफ़ॉर्म रिलीज़ के साथ की जाती है.

Android प्लैटफ़ॉर्म रिलीज़ अपग्रेड के लिए इस्तेमाल किए जा सकने वाले कर्नेल लॉन्च के लिए इस्तेमाल किए जा सकने वाले कर्नेल
Android 15 (2024) android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android15-6.6
android14-6.1
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
Android 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
Android 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

लाइफ़टाइम और सुरक्षा पैच के साथ काम करना

ACK को अपस्ट्रीम से LTS मर्ज मिलते हैं. साथ ही, Android के लिए बने कोड की गड़बड़ियां ठीक की जाती हैं. इन सुधारों में, हर महीने के Android Security Bulletins में बताए गए, kernel के लिए सभी सुरक्षा पैच शामिल हैं. ये पैच, ACK के लिए काम के हैं.

kernel.org पर मौजूद अपस्ट्रीम स्टेबल कर्नेल की तुलना में, ACKs का इस्तेमाल ज़्यादा समय तक किया जा सकता है. इस मामले में, Google इस सेक्शन में दिखाई गई, सेवा बंद होने की तारीख (ईओएल) तक सहायता उपलब्ध कराता है. जब कर्नेल की सेवा बंद हो जाती है, तो Google उन्हें इस्तेमाल करना बंद कर देता है. साथ ही, उन पर काम करने वाले डिवाइसों को असुरक्षित माना जाता है.

कर्नेल 6.6 से, स्थिर कर्नेल के लिए सहायता की अवधि चार साल है.

इस टेबल में, काम करने वाले ACK के लाइफ़टाइम की जानकारी दी गई है:

ACK ब्रांच लॉन्च
की तारीख
सहायता
लाइफ़टाइम
(साल)
ईओएल
android-4.19-stable 2018-10-22 6 2025-01-01
android11-5.4 2019-11-24 6 2026-01-01
android12-5.4 2019-11-24 6 2026-01-01
android12-5.10 2020-12-13 6 2027-07-01
android13-5.10 2020-12-13 6 2027-07-01
Android13-5.15 2021-10-31 6 2028-07-01
android14-5.15 2021-10-31 6 2028-07-01
android14-6.1 2022-12-11 6 2029-07-01
android15-6.6 2023-10-29 4 2028-07-01

सामान्य कर्नेल टेस्टिंग

वेंडर की ओर से डाउनस्ट्रीम जांच के अलावा, सामान्य कर्नेल की जांच कई सीआई सिस्टम के साथ की जाती है.

Linux Kernel Functional Test

Linux Kernel फ़ंक्शनल टेस्ट (LKFT) टेस्ट, कई टेस्ट सुइट शुरू करते हैं. इनमें फ़िज़िकल आर्म32 और आर्म64 डिवाइसों के सेट पर, kselftest, LTP, VTS, और CTS शामिल हैं. हाल ही के टेस्ट के नतीजे यहां देखे जा सकते हैं.

KernelCI टेस्टिंग

जब भी किसी सामान्य कर्नेल शाखा में नया पैच किया जाता है, तो KernelCI के बिल्ड और बूट टेस्ट शुरू हो जाते हैं. सैकड़ों बिल्ड कॉन्फ़िगरेशन की जांच करके उन्हें अलग-अलग बोर्ड पर चालू किया जाता है. Android के कर्नेल के लिए हाल ही के नतीजे यहां देखे जा सकते हैं.

Android ऐप्लिकेशन को सबमिट करने से पहले और बाद में की जाने वाली टेस्टिंग

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

Android पोस्ट सबमिट टेस्टिंग, Android के सामान्य kernel branch में पब्लिश किए गए नए बिल्ड पर की जाती है. ऐसा तब होता है, जब ci.android.com में Android के सामान्य kernel branch में नए पैच को कमिट किया जाता है. ci.android.com में, aosp_kernel को ब्रैंच के नाम के कुछ हिस्से के तौर पर डालने पर, आपको उन kernel branch की सूची दिखती है जिनके नतीजे उपलब्ध हैं. उदाहरण के लिए, android-mainline के नतीजे यहां देखे जा सकते हैं. किसी खास बिल्ड पर क्लिक करने पर, आपको Test Results टैब में टेस्ट का स्टेटस दिखेगा.

Android प्लैटफ़ॉर्म के सोर्स ट्री में, टेस्ट ग्रुप kernel-presubmit के साथ test-mapping से तय किए गए टेस्ट, Android के कोर की शाखाओं के लिए, सबमिट करने से पहले चलाए जाएंगे. उदाहरण के लिए, test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING में यह कॉन्फ़िगरेशन, Android के सामान्य कोर कोड के चेक-इन के समय, vts_kernel_proc_file_api_test को सबमिट करने से पहले किए जाने वाले टेस्ट के तौर पर चालू करेगा.

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

ज़ीरो-डे टेस्टिंग

0-day टेस्टिंग में, नए पैच को कमिट करने के बाद, Android के सभी सामान्य kernel branch पर पैच-बाय-पैच टेस्टिंग की जाती है. इसके बाद, अलग-अलग तरह के बूट, फ़ंक्शन, और परफ़ॉर्मेंस टेस्ट चलाए जाते हैं. सार्वजनिक ग्रुप cros-kernel-buildreports में शामिल हों

टेस्ट मैट्रिक्स

Android का सामान्य कर्नेल Android प्लैटफ़ॉर्म के रिलीज़ टेस्ट सुइट
मुख्य नेविगेशन 15 14 13 12 11 10 LKFT कर्नेलसीआई सबमिट करने से पहले पोस्ट सबमिट 0-day
android-mainline
android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable

Android के सामान्य कर्नेल में योगदान देना

आम तौर पर, सुविधा का डेवलपमेंट मुख्य Linux पर किया जाना चाहिए, न कि Android के सामान्य कर्नेल पर. अपस्ट्रीम डेवलपमेंट का ज़रूर सुझाव दिया जाता है. डेवलपमेंट को स्वीकार किए जाने के बाद, ज़रूरत के हिसाब से इसे ACK की किसी खास शाखा में आसानी से बैकपोर्ट किया जा सकता है. Android Kernel टीम को Android नेटवर्क के फ़ायदे के लिए, अपस्ट्रीमिंग में मदद करके खुशी होगी.

Gerrit पर पैच सबमिट करें और योगदान से जुड़े इन दिशा-निर्देशों का पालन करें.