เคอร์เนลทั่วไปของ Android

เคอร์เนลทั่วไป AOSP (หรือที่เรียกว่าเคอร์เนลทั่วไปของ Android หรือ ACKs) เป็นเคอร์เนลดาวน์สตรีมของ kernel.org และรวมแพตช์ ที่น่าสนใจสำหรับชุมชน Android ที่ยังไม่ได้ผสานรวมเป็นเคอร์เนลหลักหรือเคอร์เนลที่รองรับระยะยาว (LTS) แพตช์เหล่านี้อาจรวมถึงสิ่งต่อไปนี้

  • แบ็กพอร์ตและฟังก์ชันอัปสตรีมที่จำเป็นสำหรับฟีเจอร์ของ Android
  • ฟีเจอร์ที่พร้อมสำหรับอุปกรณ์ Android แต่ยังอยู่ระหว่างการพัฒนาอัปสตรีม
  • ฟีเจอร์ของผู้ให้บริการ/OEM ที่เป็นประโยชน์สำหรับพาร์ทเนอร์ในระบบนิเวศรายอื่นๆ

android-mainline เป็นสาขาการพัฒนาหลักสำหรับฟีเจอร์ของ Android ระบบจะผสานรวมเมน Linux เข้ากับ android-mainline เมื่อใดก็ตามที่ Linus Torvalds โพสต์รุ่นที่เผยแพร่หรือรุ่นที่อาจได้รับการเผยแพร่ ก่อนปี 2019 เคอร์เนลทั่วไปของ Android สร้างขึ้นโดยการโคลนเคอร์เนล LTS ที่ประกาศล่าสุด และเพิ่มแพตช์เฉพาะสำหรับ Android กระบวนการนี้มีการเปลี่ยนแปลงในปี 2019 เป็นสาขาใหม่ใช้เคอร์เนลทั่วไปของ Android จาก android-mainline โมเดลใหม่นี้หลีกเลี่ยงการพยายามอย่างมากในการส่งต่อพอร์ตและทดสอบแพตช์ของ Android โดยได้ผลลัพธ์เดียวกันเพิ่มขึ้นทีละน้อย android-mainline ได้รับการทดสอบอย่างต่อเนื่องที่สำคัญ รูปแบบนี้ทำให้มั่นใจได้ว่าเคอร์เนลมีคุณภาพสูงตั้งแต่วันที่เผยแพร่

เมื่อมีการประกาศ LTS ใหม่ เคอร์เนลทั่วไปที่เกี่ยวข้องจะแยกออกจาก android-mainline วิธีนี้ช่วยให้พาร์ทเนอร์เริ่มโปรเจ็กต์ได้ก่อนที่จะประกาศเวอร์ชัน LTS ด้วยการผสานรวมจาก android-mainline หลังจากสร้าง Branch ของเคอร์เนลทั่วไปใหม่แล้ว พาร์ทเนอร์จะเปลี่ยนแหล่งที่มาของการผสานไปยัง Branch ใหม่ได้อย่างราบรื่น

สาขาเคอร์เนลทั่วไปอื่นๆ จะได้รับการผสานเป็นประจำจากเคอร์เนล LTS ที่เกี่ยวข้อง โดยปกติแล้วการรวมเหล่านี้จะดำเนินการทันทีหลังจากที่โพสต์การเผยแพร่ LTS ตัวอย่างเช่น เมื่อมีการโพสต์ Linux 6.1.75 ระบบได้ผสานรวมเข้ากับเคอร์เนลทั่วไป 6.1 (android14-6.1) เราขอแนะนำให้พาร์ทเนอร์อัปเดตเคอร์เนลเพื่อให้อัปเดต LTS และการแก้ไขข้อบกพร่องเฉพาะสำหรับ Android อยู่เสมอ

ACK KMI สาขาเคอร์เนล

เคอร์เนล GKI มีอินเทอร์เฟซของโมดูล Kernel ที่เสถียร มีการระบุ KMI ที่ไม่ซ้ำกันโดยเวอร์ชันเคอร์เนลและรุ่นแพลตฟอร์ม Android ดังนั้นสาขาจึงใช้ชื่อว่า ANDROID_RELEASE-KERNEL_VERSION ตัวอย่างเช่น เคอร์เนล GKI 6.1 สำหรับ Android 14 มีชื่อว่า android14-6.1 สำหรับ Android 15 (เวอร์ชันทดลอง AOSP) ก็ได้เปิดตัวเคอร์เนล GKI android15-6.6

ฟีเจอร์และเปิดใช้งานเคอร์เนล

ก่อน Android 15 (เวอร์ชันทดลอง AOSP) เคอร์เนล 3 รายการล่าสุดสามารถใช้ในการเปิดตัวอุปกรณ์ได้ ตั้งแต่ Android 15 (เวอร์ชันทดลอง AOSP) จะมีการใช้เคอร์เนล 2 เวอร์ชันล่าสุดในการเปิดตัวอุปกรณ์ได้ เคอร์เนลการเปิดตัวสำหรับ Android 15 (เวอร์ชันทดลอง AOSP) คือ android15-6.6 และ android14-6.1

เนื่องจากไม่จำเป็นต้องอัปเกรดเคอร์เนลเมื่ออัปเดตรุ่นแพลตฟอร์ม เคอร์เนลที่ขาดฟีเจอร์ล่าสุดสำหรับรุ่นของแพลตฟอร์มจะยังคงนำมาใช้เพื่อเปิดตัวอุปกรณ์ได้ ดังนั้นเคอร์เนลที่ออกแบบมาสำหรับ Android 14 เช่น android14-6.1 จึงใช้งานได้ในอุปกรณ์แม้จะอัปเกรดแพลตฟอร์มที่เปิดตัวเป็น Android 15 แล้ว (เวอร์ชันทดลอง AOSP)

การเปิดตัวแพลตฟอร์ม Android เปิดเคอร์เนล เคอร์เนลฟีเจอร์
Android 15 (เวอร์ชันทดลอง AOSP) (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.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 อาจมีข้อจำกัดเพิ่มเติมหาก BSP ที่เกี่ยวข้องได้รับการอัปเดตสำหรับแพลตฟอร์มรุ่นนั้นๆ โดยทั่วไปแล้ว หมายเลขรุ่น Android ของเคอร์เนลต้องมากกว่าหรือเท่ากับเวอร์ชัน FCM เป้าหมาย ดูรายละเอียดได้ที่ออบเจ็กต์อินเทอร์เฟซผู้ให้บริการ - ตรงกับสาขาของเคอร์เนล

ลำดับชั้นทั่วไปของเคอร์เนล

สาขาจาก Android-mainline

ระดับบนสุดของลำดับชั้นของเคอร์เนลทั่วไปจะแสดงในรูปที่ 1

การสร้างเคอร์เนลทั่วไปจากเคอร์เนล Android Mainline

รูปที่ 1 การสร้างเคอร์เนลทั่วไปจากเคอร์เนล Android Mainline

โปรดสังเกตว่าเคอร์เนลทั่วไปใหม่ของ Android android14-6.1 ได้แยกออกมาจาก android-mainline ในปี 2022 ในปี 2023 เมื่อมีการประกาศ LTS ครั้งถัดไป android15-6.6 ได้แยกออกจาก android-mainline

ดังที่แสดงในรูปที่ 1 เวอร์ชันเคอร์เนลแต่ละเวอร์ชันเป็นพื้นฐานสำหรับเคอร์เนล GKI 2 รายการ ตัวอย่างเช่น เคอร์เนล v5.15 2 รายการคือ android13-5.15 และ android14-5.15 ซึ่งทั้ง 2 เคอร์เนลฟีเจอร์สำหรับการเผยแพร่แพลตฟอร์มที่เกี่ยวข้อง นี่ก็เป็นกรณีของ 5.10 เช่นกัน โดย android12-5.10 สร้างขึ้นเมื่อมีการประกาศ LTS และแยก android13-5.10 ออกจาก android12-5.10 ที่ฟีเจอร์เคอร์เนลอย่างสมบูรณ์ในฤดูใบไม้ผลิปี 2021 เพื่อช่วยให้พัฒนาฟีเจอร์ต่างๆ สำหรับ Android 13 ได้ เริ่มตั้งแต่ Android 15 (เวอร์ชันทดลอง AOSP) (2024) เคอร์เนล GKI ใหม่มีเพียง 1 รายการต่อเคอร์เนลเท่านั้น (ไม่มีเคอร์เนล android15-6.1)

วงจรชีวิตของสาขา ACK KMI

วงจรชีวิตของสาขา ACK KMI จะแสดงด้านล่างในรูปที่ 2

6.6 ACK วงจรการใช้งานของสาขา KMI

รูปที่ 2 6.6 ACK วงจรการใช้งานของสาขา KMI

เพื่อชี้แจงขั้นตอนการพัฒนาและวงจรของสาขา รูปที่ 2 มุ่งเน้นที่ Branch ของ ACK KMI สำหรับ 6.6

ACK KMI แต่ละสาขาจะหมุนเวียนผ่าน 3 เฟสที่ระบุไว้ในรูปที่ 2 โดยใช้สีต่างๆ ในแต่ละสาขา ดังที่เห็น ระบบผสานรวม LTS เป็นประจำโดยไม่คำนึงถึงเฟส

ช่วงการพัฒนา

เมื่อมีการสร้าง Branch ของ ACK KMI จะเข้าสู่ระยะการพัฒนา (ติดป้ายกำกับเป็น dev ในรูปที่ 2) และจะเปิดสําหรับการสนับสนุนฟีเจอร์สําหรับแพลตฟอร์ม Android รุ่นถัดไป ในรูปที่ 2 android15-6.6 สร้างขึ้นเมื่อมีการประกาศเวอร์ชัน 6.6 เป็นเคอร์เนล LTS ต้นทางใหม่

ช่วงลดการสั่นไหว

เมื่อประกาศฟีเจอร์สำหรับ ACK KMI เสร็จสมบูรณ์แล้ว ฟีเจอร์ดังกล่าวจะเข้าสู่ระยะการป้องกันภาพสั่นไหว (ติดป้ายกำกับเป็น stable ในรูปที่ 2) ระบบยังคงยอมรับฟีเจอร์ของพาร์ทเนอร์และการแก้ไขข้อบกพร่อง แต่การติดตาม KMI เปิดใช้เพื่อตรวจหาการเปลี่ยนแปลงที่มีผลต่ออินเทอร์เฟซ ในระยะนี้ การเปลี่ยนแปลงที่เป็นการละเมิด KMI จะได้รับการยอมรับ และอัปเดตคำจำกัดความของ KMI ตามช่วงเวลาที่กำหนดไว้ล่วงหน้า (โดยปกติคือทุก 2 สัปดาห์) ดูรายละเอียดเกี่ยวกับการตรวจสอบ KMI ได้ในภาพรวม GKI

เฟสของ KMI ถูกระงับ

ก่อนที่จะมีการพุชรุ่นแพลตฟอร์มใหม่ไปยัง AOSP ส่วน ACK KMI จะถูกหยุดไว้และจะยังคงถูกระงับไว้ตลอดอายุการใช้งานของ Branch ซึ่งหมายความว่าจะไม่มีการยอมรับการเปลี่ยนแปลงการละเมิด 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 ที่เปิดตัวอุปกรณ์ได้อย่างปลอดภัย การทดสอบอย่างต่อเนื่องกับรุ่นก่อนหน้าช่วยให้มั่นใจได้ว่า ความเข้ากันได้จะยังคงเหมือนเดิม ดังนั้นในรูปที่ 2 เคอร์เนล android15-6.6 ใช้ได้กับอุปกรณ์ Android 15 (เวอร์ชันทดลอง AOSP) และรุ่นใหม่กว่า เนื่องจากการเปิดตัวแพลตฟอร์ม Android ใช้งานกับเวอร์ชันก่อนหน้าได้ด้วย เคอร์เนล android14-6.1 จึงใช้สำหรับอุปกรณ์ Android 15 (เวอร์ชันทดลอง AOSP) สำหรับการเปิดตัวหรือการอัปเกรดได้

หมายเลขรุ่น KMI

หากมีการรวม LTS ในระยะของระบบกันภาพสั่นหรือเกิดปัญหาด้านความปลอดภัยหรือเหตุการณ์อื่นๆ หลังจากนี้ที่จำเป็นต้องยอมรับแพตช์การเปลี่ยน KMI หมายเลขรุ่น KMI ที่บันทึกไว้ใน build.config.common ก็จะเพิ่มขึ้น คุณดูรุ่น KMI ปัจจุบันได้โดยใช้คำสั่ง uname

$ uname -r
6.6.30-android15-6-g86d10b30f51f

ตัวเลขหลังจากการเผยแพร่แพลตฟอร์มคือรุ่น KMI (ในกรณีนี้คือ 6)

หากการสร้าง KMI มีการเปลี่ยนแปลง เคอร์เนลจะใช้ไม่ได้กับโมดูลผู้ให้บริการที่สอดคล้องกับการสร้าง KMI ก่อนหน้า ดังนั้นจึงต้องสร้างโมดูลใหม่และอัปเดตแบบพร้อมกันด้วยเคอร์เนล หลังจากการหยุดให้บริการ KMI แล้ว เราคาดว่า การเปลี่ยนแปลงการสร้าง KMI จะเกิดขึ้นน้อยมาก

ความเข้ากันได้ระหว่างเคอร์เนล

ข้อกำหนดความเข้ากันได้ระหว่างเคอร์เนลในตระกูล LTS เดียวกันมีการเปลี่ยนแปลงโดยเริ่มจากเคอร์เนล GKI ใหม่

เคอร์เนล GKI

เคอร์เนล GKI รักษาความเข้ากันได้แบบย้อนหลังกับแพลตฟอร์ม Android ทุกรุ่นที่รองรับเวอร์ชันเคอร์เนล นอกจากนี้ รุ่นของแพลตฟอร์ม Android ยังเข้ากันได้แบบย้อนหลังกับเคอร์เนล GKI จากรุ่นก่อนหน้า คุณจึงใช้เคอร์เนล android14-6.1 ที่พัฒนาขึ้นสำหรับ Android 14 (2023) ในอุปกรณ์ที่ใช้ Android 15 (เวอร์ชันทดลอง AOSP) (2024) ได้อย่างปลอดภัย ความเข้ากันได้จะได้รับการยืนยันผ่านการทดสอบ VTS และ CTS อย่างต่อเนื่องของเคอร์เนล GKI กับรุ่นที่รองรับทั้งหมด

KMI มีความเสถียรเพื่อให้อัปเดตเคอร์เนลได้โดยไม่ต้องสร้างโมดูลเคอร์เนลใหม่ในอิมเมจของผู้ให้บริการ

ระบบไม่รักษาความเข้ากันได้ของ KMI ระหว่างเคอร์เนล GKI ต่างๆ ตัวอย่างเช่น เคอร์เนล android14-6.1 จะแทนที่ด้วยเคอร์เนล android15-6.6 ไม่ได้หากไม่สร้างโมดูลทั้งหมดใหม่

เคอร์เนล GKI รองรับเฉพาะรุ่นแรกและรุ่นต่อๆ ไปเท่านั้น โดยจะไม่รองรับในรุ่นที่เก่ากว่า จึงไม่รองรับเคอร์เนล android15-6.6 สำหรับอุปกรณ์ Devics ที่ใช้ 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 จะได้รับการสนับสนุนจนกว่าระบบจะไม่รองรับเคอร์เนล LTS ที่เกี่ยวข้องหรือแพลตฟอร์ม Android อีกต่อไป แม้ว่าระบบจะรองรับเคอร์เนล แต่จะยังได้รับการผสาน LTS จากอัปสตรีมและการแก้ไขข้อบกพร่องสำหรับโค้ดเฉพาะสำหรับ Android อยู่ต่อไป การแก้ไขเหล่านี้รวมถึงแพตช์ด้านความปลอดภัยของเคอร์เนลทั้งหมดที่อ้างถึงในกระดานข่าวสารด้านความปลอดภัยของ Android รายเดือนที่เกี่ยวข้องกับเคอร์เนลทั่วไปของ Android

พาร์ทเนอร์จะมั่นใจได้ว่าการใช้เคอร์เนล GKI จะได้รับแพตช์ความปลอดภัยของเคอร์เนลทั้งหมด

การทดสอบเคอร์เนลทั่วไป

เคอร์เนลทั่วไปจะได้รับการทดสอบกับระบบ CI หลายระบบนอกเหนือจากการทดสอบดาวน์สตรีมโดยผู้ให้บริการ

การทดสอบฟังก์ชันการทำงานของเคอร์เนล Linux

Linux Kernel Functional Test (LKFT) จะเริ่มชุดการทดสอบต่างๆ ซึ่งรวมถึง kselftest, LTP, VTS และ CTS บนชุดอุปกรณ์ Physical Arm32 และ arm64 ดูผลการทดสอบล่าสุดได้ที่นี่

การทดสอบ KernelCI

การทดสอบบิลด์และเปิดเครื่องของ KernelCI จะเริ่มต้นเมื่อใดก็ตามที่มีสัญญาผูกมัดแพตช์ใหม่กับ Branch ของเคอร์เนลทั่วไป มีการทดสอบการกำหนดค่าบิลด์หลายร้อยรายการและเปิดเครื่องในกระดานต่างๆ ดูผลลัพธ์ล่าสุดสำหรับเคอร์เนล Android ได้ที่นี่

การทดสอบการส่งล่วงหน้าและการทดสอบหลังการส่งของ Android

การทดสอบการส่งล่วงหน้าใช้เพื่อป้องกันการแสดงความล้มเหลวในเคอร์เนลทั่วไปของ Android ข้อมูลสรุปผลการทดสอบจะอยู่ในแท็บ "การตรวจสอบ" ของการเปลี่ยนแปลงโค้ดในเคอร์เนล เจอร์ริตทั่วไปของ Android

การทดสอบหลังส่งของ Android จะดำเนินการในบิลด์ใหม่ที่เผยแพร่ใน Branch ของ Kernel ทั่วไปของ Android เมื่อมีการคอมมิตแพตช์ใหม่กับ Branch ทั่วไปของ Android ใน ci.android.com เมื่อป้อน aosp_kernel เป็นชื่อสาขาบางส่วนใน ci.android.com คุณจะเห็นรายการ Kernel Branch ที่มีผลลัพธ์ ตัวอย่างเช่น ผลการค้นหา android-mainline จะดูได้ที่นี่ เมื่อคลิกบิลด์ที่ต้องการ คุณจะเห็นสถานะการทดสอบในแท็บTest Results

การทดสอบที่กำหนดโดยการแมปการทดสอบกับกลุ่มทดสอบ kernel-presubmit ในโครงสร้างแหล่งที่มาของแพลตฟอร์ม Android จะเรียกใช้เป็นการส่งล่วงหน้าสำหรับสาขาเคอร์เนลของ Android ตัวอย่างเช่น การกำหนดค่าต่อไปนี้ใน test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING จะเปิดใช้ vts_kernel_proc_file_api_test เป็นการทดสอบ presbumit ที่การตรวจสอบรหัสเคอร์เนลทั่วไปของ Android

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

การทดสอบ 0 วัน

การทดสอบ 0 วันจะทำการทดสอบแบบแพตช์ต่อแพตช์ใน Kernel ทั่วไปทั้งหมดของ Android เมื่อมีการคอมมิตแพตช์ใหม่ จะมีการทดสอบการเปิดเครื่อง การทำงาน และประสิทธิภาพการทำงานหลายๆ อย่าง เข้าร่วมกลุ่มสาธารณะ cros-kernel-buildreports

เมทริกซ์ทดสอบ

เคอร์เนลทั่วไปของ Android รุ่นต่างๆ ของแพลตฟอร์ม Android ชุดทดสอบ
หลัก 15 14 13 12 11 10 LKFT เคอร์เนล CI ก่อนส่ง ส่งโพสต์ 0 วัน
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 ขอแนะนำเป็นอย่างยิ่งให้ใช้การพัฒนาอัปสตรีม และหลังจากที่ระบบยอมรับการพัฒนาแล้ว สามารถย้อนกลับไปยัง Branch ที่เฉพาะเจาะจงได้อย่างง่ายดายตามต้องการ ทีม Android Kernel ยินดีสนับสนุนความพยายามในการอัปสตรีมเพื่อประโยชน์ของระบบนิเวศของ Android

ส่งแพตช์ไปยัง Gerrit และปฏิบัติตามหลักเกณฑ์การมีส่วนร่วม