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

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

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

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

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

कर्नेल की अन्य सामान्य शाखाओं को उनसे जुड़े 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 (एओएसपी) के साथ शुरुआत में, डिवाइस लॉन्च करने के लिए कर्नेल के दो सबसे नए वर्शन इस्तेमाल किए जा सकते हैं. Android 15 (एओएसपी एक्सपेरिमेंट के तौर पर उपलब्ध) के लिए, android15-6.6 और android14-6.1 लॉन्च किए जा सकते हैं.

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

Android प्लैटफ़ॉर्म का रिलीज़ लॉन्च कर्नेल फ़ीचर कर्नेल
Android 15 (AOSP एक्सपेरिमेंट के तौर पर उपलब्ध) (2024) android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.101
android15-6.6
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.101
android14-6.1
android14-5.15
Android 13 (2022) android13-5.15
android13-5.10
android12-5.101
android12-5.41
android11-5.41
android13-5.15
android13-5.10
Android 12 (2021) android12-5.10
android12-5.4
android11-5.41
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 कर्नेल से सामान्य कर्नेल बनाना

पहला डायग्राम. android-mainline कर्नेल से सामान्य कर्नेल बनाना

ध्यान दें कि एक नए Android कॉमन कर्नेल android14-6.1 को साल 2022 में android-mainline से ब्रांच किया गया था. साल 2023 में, अगली एलटीएस (लंबे समय तक सहायता) का एलान होने पर, android15-6.6 को android-mainline से जोड़ा गया.

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

ACK KMI ब्रांच की लाइफ़साइकल

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

6.6 ACK KMI ब्रांच का लाइफ़साइकल

दूसरा डायग्राम. 6.6 ACK KMI ब्रांच का लाइफ़साइकल

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

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

डेवलपमेंट का चरण

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

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

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

केएमआई फ़्रोज़न फ़ेज़

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

जब ACK 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 (एओएसपी एक्सपेरिमेंट के तौर पर शुरू किए गए) डिवाइसों के लिए, लॉन्च या अपग्रेड करने के लिए किया जा सकता है.

केएमआई जनरेशन नंबर

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

$ uname -r
6.6.30-android15-6-g86d10b30f51f

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

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

कर्नेल के बीच संगतता

एक ही एलटीएस फ़ैमिली में, कर्नेल के बीच साथ काम करने से जुड़ी ज़रूरी शर्तों में, नए जीकेआई कर्नेल के साथ काम करने की ज़रूरी शर्तों में बदलाव हो रहा है.

GKI कर्नेल

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

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

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

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

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

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

Android प्लैटफ़ॉर्म का रिलीज़ अपग्रेड के लिए इस्तेमाल किए जा सकने वाले कर्नेल लॉन्च के लिए काम करने वाले कर्नेल
Android 15 (AOSP एक्सपेरिमेंट के तौर पर उपलब्ध) (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

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

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

पार्टनर इस बात पर भरोसा कर सकते हैं कि GKI कर्नेल का इस्तेमाल करके, उन्हें सभी कर्नेल सुरक्षा पैच मिल रहे हैं.

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

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

Linux कर्नेल फ़ंक्शन की जांच

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

KernelCI टेस्टिंग

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

Android पर, पहले से सबमिट करने और सबमिट करने के बाद की जांच

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

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

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

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

0-दिन टेस्टिंग

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

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

Android कॉमन कर्नेल Android प्लैटफ़ॉर्म रिलीज़ टेस्ट सुइट
मुख्य 15 14 13 12 11 10 एलकेएफ़टी कर्नेलसीआई पहले से सबमिट करें पोस्ट सबमिट ज़ीरो डे
android-mainline
android5-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 पर पैच सबमिट करें और इन योगदान के दिशा-निर्देशों का पालन करें.