AOSP คำถามที่พบบ่อย (FAQ)

เอกสารนี้มีคำตอบสำหรับคำถามทั่วไปเกี่ยวกับ Android Open Source Platform (AOSP)

คำถามโอเพ่นซอร์ส

เหตุใด Google จึงเปิดซอร์สโค้ด Android

Google เริ่มต้น AOSP เพื่อตอบสนองต่อประสบการณ์ของเราในการเปิดตัวแอปบนอุปกรณ์เคลื่อนที่ เราต้องการให้แน่ใจว่าจะมีแพลตฟอร์มแบบเปิดสำหรับผู้ให้บริการ OEM และนักพัฒนาเพื่อใช้เพื่อทำให้แนวคิดเชิงนวัตกรรมของตนเป็นจริง นอกจากนี้เรายังต้องการหลีกเลี่ยงจุดศูนย์กลางของความล้มเหลว ดังนั้นจึงไม่มีผู้เล่นในอุตสาหกรรมรายใดที่สามารถจำกัดหรือควบคุมนวัตกรรมของผู้อื่นได้ เป้าหมายที่สำคัญที่สุดเพียงอย่างเดียวของเรากับ AOSP คือเพื่อให้แน่ใจว่าซอฟต์แวร์โอเพ่นซอร์ส Android ได้รับการปรับใช้อย่างกว้างขวางและเข้ากันได้มากที่สุดเท่าที่จะเป็นไปได้ เพื่อประโยชน์ของทุกคน

Android เป็นโครงการโอเพ่นซอร์สประเภทใด

Google ดูแลการพัฒนา AOSP หลักและทำงานเพื่อสร้างชุมชนนักพัฒนาและผู้ใช้ที่แข็งแกร่ง โดยส่วนใหญ่ ซอร์สโค้ด Android ได้รับอนุญาตภายใต้ Apache License 2.0 ที่อนุญาต แทนที่จะเป็นลิขสิทธิ์ ลิขสิทธิ์ เราเลือกใบอนุญาต Apache 2.0 เพราะเราเชื่อว่าจะสนับสนุนให้มีการนำซอฟต์แวร์ Android ไปใช้อย่างกว้างขวาง สำหรับรายละเอียด โปรดดูที่ ใบอนุญาต

ทำไม Google ถึงรับผิดชอบ Android?

การเปิดตัวแพลตฟอร์มซอฟต์แวร์มีความซับซ้อน การเปิดกว้างมีความสำคัญต่อความสำเร็จในระยะยาวของแพลตฟอร์ม เนื่องจากการเปิดกว้างดึงดูดการลงทุนจากนักพัฒนาและสร้างความมั่นใจในสนามแข่งขันที่เท่าเทียมกัน แพลตฟอร์มดังกล่าวจะต้องเป็นผลิตภัณฑ์ที่น่าสนใจสำหรับผู้ใช้ด้วย

Google ได้ทุ่มเททรัพยากรด้านวิศวกรรมระดับมืออาชีพที่จำเป็นเพื่อให้แน่ใจว่า Android เป็นแพลตฟอร์มซอฟต์แวร์ที่มีการแข่งขันเต็มรูปแบบ Google ถือว่าโครงการ Android เป็นการดำเนินการพัฒนาผลิตภัณฑ์เต็มรูปแบบและบรรลุข้อตกลงทางธุรกิจที่จำเป็นเพื่อให้แน่ใจว่าอุปกรณ์ที่ยอดเยี่ยมที่ใช้ Android จะออกสู่ตลาด

ด้วยการทำให้แน่ใจว่า Android จะประสบความสำเร็จกับผู้ใช้ เราช่วยรับประกันความมีชีวิตชีวาของ Android ในฐานะแพลตฟอร์มและโครงการโอเพ่นซอร์ส ท้ายที่สุดแล้วใครต้องการซอร์สโค้ดให้กับผลิตภัณฑ์ที่ไม่ประสบความสำเร็จ?

เป้าหมายของเราคือเพื่อให้แน่ใจว่าระบบนิเวศรอบ Android จะประสบความสำเร็จ เราเปิดซอร์สโค้ด Android เพื่อให้ทุกคนสามารถแก้ไขและแจกจ่ายซอฟต์แวร์ให้ตรงตามความต้องการของตนเองได้

กลยุทธ์โดยรวมของ Google ในการพัฒนาผลิตภัณฑ์ Android คืออะไร

เราเปิดตัวอุปกรณ์ที่ยอดเยี่ยมสู่ตลาดที่มีการแข่งขันสูง จากนั้นเราจะรวมนวัตกรรมและการปรับปรุงที่เราสร้างไว้ในแพลตฟอร์มหลักเป็นเวอร์ชันถัดไป

ในทางปฏิบัติ หมายความว่าทีมวิศวกรรม Android มุ่งเน้นไปที่อุปกรณ์ "เรือธง" จำนวนไม่มาก และพัฒนาซอฟต์แวร์ Android เวอร์ชันถัดไปเพื่อรองรับการเปิดตัวผลิตภัณฑ์เหล่านั้น อุปกรณ์หลักเหล่านี้ดูดซับความเสี่ยงด้านผลิตภัณฑ์ได้มาก และคอยติดตามชุมชน OEM ในวงกว้างที่ติดตามผลด้วยอุปกรณ์จำนวนมากขึ้นที่ใช้ประโยชน์จากคุณลักษณะใหม่ ด้วยวิธีนี้ เรามั่นใจว่าแพลตฟอร์ม Android จะพัฒนาไปตามความต้องการของอุปกรณ์ในโลกแห่งความเป็นจริง

ซอฟต์แวร์ Android ได้รับการพัฒนาอย่างไร?

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

ขณะเดียวกัน มี สาขาการทดลองอยู่ในปัจจุบัน ซึ่งเป็นที่ที่การพัฒนาการเก็งกำไร เช่น คุณลักษณะขนาดใหญ่รุ่นถัดไป ได้รับการพัฒนา การแก้ไขข้อบกพร่องและการสนับสนุนอื่นๆ สามารถรวมไว้ในสาขาที่เสถียรปัจจุบันจากสาขาทดลองได้ตามความเหมาะสม

ในที่สุด Google ก็ทำงานบนแพลตฟอร์ม Android เวอร์ชันถัดไปควบคู่ไปกับการพัฒนาอุปกรณ์เรือธง สาขานี้จะดึงการเปลี่ยนแปลงจากสาขาทดลองและสาขาที่เสถียรตามความเหมาะสม

สำหรับรายละเอียดเกี่ยวกับโค้ดไลน์ สาขา และการเผยแพร่ โปรดดูที่ การจัดการซอฟต์แวร์ Android

เหตุใดบางส่วนของ Android จึงพัฒนาแบบส่วนตัว

โดยทั่วไปจะใช้เวลามากกว่าหนึ่งปีในการนำอุปกรณ์ออกสู่ตลาด และแน่นอนว่า ผู้ผลิตอุปกรณ์ต้องการจัดส่งซอฟต์แวร์ล่าสุดที่ตนสามารถทำได้ ในขณะเดียวกัน นักพัฒนาก็ไม่ต้องการติดตามแพลตฟอร์มเวอร์ชันใหม่ๆ อย่างต่อเนื่องเมื่อเขียนแอป ทั้งสองกลุ่มประสบกับความตึงเครียดระหว่างการจัดส่งสินค้าและไม่ต้องการที่จะล้าหลัง

เพื่อแก้ไขปัญหานี้ บางส่วนของ Android เวอร์ชันถัดไป รวมถึง API แพลตฟอร์มหลักจึงได้รับการพัฒนาในสาขาส่วนตัว API เหล่านี้ถือเป็น Android เวอร์ชันถัดไป เป้าหมายของเราคือการมุ่งความสนใจไปที่ซอร์สโค้ด Android เวอร์ชันเสถียรในปัจจุบันในขณะที่เราสร้างแพลตฟอร์มเวอร์ชันถัดไป ซึ่งช่วยให้นักพัฒนาและ OEM สามารถใช้เวอร์ชันเดียวโดยไม่ต้องติดตามงานในอนาคตที่ยังไม่เสร็จเพียงเพื่อตามทัน ส่วนอื่นๆ ของระบบ Android ที่ไม่เกี่ยวข้องกับความเข้ากันได้ของแอปได้รับการพัฒนาแบบเปิด เราตั้งใจที่จะย้ายส่วนเหล่านี้มากขึ้นเพื่อเปิดการพัฒนาเมื่อเวลาผ่านไป

จะมีการเผยแพร่ซอร์สโค้ดเมื่อใด

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

ในบางรุ่น API ของแพลตฟอร์มหลักจะพร้อมล่วงหน้าเพียงพอเพื่อให้เราสามารถส่งซอร์สโค้ดออกมาเพื่อดูก่อนการเปิดตัวอุปกรณ์ ในรุ่นอื่นๆ สิ่งนี้เป็นไปไม่ได้ ในทุกกรณี เราจะเผยแพร่แหล่งที่มาของแพลตฟอร์มเมื่อเรารู้สึกว่าเวอร์ชันมีความเสถียร และเมื่อกระบวนการพัฒนาอนุญาต

การปล่อยซอร์สโค้ดสำหรับ Android เวอร์ชันใหม่เกี่ยวข้องกับอะไร

การเปิดตัวซอร์สโค้ดสำหรับแพลตฟอร์ม Android เวอร์ชันใหม่ถือเป็นกระบวนการที่สำคัญ ขั้นแรก ซอฟต์แวร์ถูกสร้างไว้ในอิมเมจระบบสำหรับอุปกรณ์และผ่านการรับรองรูปแบบต่างๆ รวมถึงการรับรองตามกฎระเบียบของรัฐบาลสำหรับภูมิภาคที่จะใช้งานโทรศัพท์ รหัสยังต้องผ่านการทดสอบของผู้ปฏิบัติงานด้วย นี่เป็นขั้นตอนสำคัญของกระบวนการ เนื่องจากจะช่วยตรวจจับจุดบกพร่องของซอฟต์แวร์

เมื่อการเผยแพร่ได้รับการอนุมัติจากหน่วยงานกำกับดูแลและผู้ปฏิบัติงาน ผู้ผลิตจะเริ่มผลิตอุปกรณ์จำนวนมาก และเราจะเริ่มปล่อยซอร์สโค้ด

ในขณะเดียวกันกับการผลิตจำนวนมาก ทีมงาน Google ได้เริ่มต้นความพยายามหลายประการเพื่อเตรียมการเผยแพร่โอเพ่นซอร์ส ความพยายามเหล่านี้รวมถึงการเปลี่ยนแปลง API ขั้นสุดท้าย การอัปเดตเอกสารประกอบ (เพื่อสะท้อนถึงการแก้ไขใดๆ ที่เกิดขึ้นระหว่างการทดสอบคุณสมบัติ เป็นต้น) การเตรียม SDK สำหรับเวอร์ชันใหม่ และการเปิดตัวข้อมูลความเข้ากันได้ของแพลตฟอร์ม

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

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

AOSP เกี่ยวข้องกับโปรแกรมความเข้ากันได้ของ Android อย่างไร

AOSP ดูแลรักษาซอฟต์แวร์ Android และพัฒนาเวอร์ชันใหม่ เนื่องจากเป็นโอเพ่นซอร์ส ซอฟต์แวร์นี้จึงสามารถใช้เพื่อวัตถุประสงค์ใดก็ได้ รวมถึงการพัฒนาอุปกรณ์ที่ไม่สามารถใช้งานร่วมกับอุปกรณ์อื่นที่ใช้แหล่งเดียวกันได้

หน้าที่ของโปรแกรมความเข้ากันได้ของ Android คือการกำหนดการใช้งานพื้นฐานของ Android ที่เข้ากันได้กับแอพของบุคคลที่สามที่เขียนโดยนักพัฒนา อุปกรณ์ที่ เข้ากันได้กับ Android มีสิทธิ์เข้าร่วมในระบบนิเวศของ Android รวมถึง Google Play อุปกรณ์ที่ไม่ตรงตามข้อกำหนดความเข้ากันได้นั้นมีอยู่นอกระบบนิเวศนั้น

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

ฉันจะมีส่วนร่วมกับ Android ได้อย่างไร

คุณสามารถรายงานข้อบกพร่อง เขียนแอปสำหรับ Android หรือสนับสนุนซอร์สโค้ดให้กับ AOSP

มีการจำกัดประเภทของการสนับสนุนโค้ดที่เรายอมรับ ตัวอย่างเช่น บางคนอาจต้องการสนับสนุน API ของแอปทางเลือก เช่น สภาพแวดล้อมที่ใช้ C++ เต็มรูปแบบ เราจะปฏิเสธการสนับสนุนดังกล่าว เนื่องจาก Android สนับสนุนให้แอปทำงานในรันไทม์ ART ในทำนองเดียวกัน เราจะไม่ยอมรับการสนับสนุน เช่น ไลบรารี GPL หรือ LGPL ที่ไม่สอดคล้องกับเป้าหมายการออกใบอนุญาตของเรา

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

ฉันจะเป็นผู้กระทำการ Android ได้อย่างไร

AOSP ไม่มีแนวคิดเรื่องผู้กระทำความผิดจริงๆ การสนับสนุนทั้งหมด (รวมถึงผลงานที่เขียนโดยพนักงานของ Google) ดำเนินการผ่านระบบบนเว็บที่เรียกว่า Gerrit ซึ่งเป็นส่วนหนึ่งของกระบวนการทางวิศวกรรมของ Android ระบบนี้ทำงานควบคู่กับระบบการจัดการซอร์สโค้ด Git เพื่อจัดการการมีส่วนร่วมของซอร์สโค้ดอย่างหมดจด

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

สำหรับรายละเอียด โปรดดูที่ การส่งแพตช์