วิธีสร้าง ROM ที่กำหนดเองจากโครงการโอเพ่นซอร์สของ Android

หากคุณคุ้นเคยกับการรูทโทรศัพท์ Android ของคุณหรือดาวน์โหลด ROM ที่กำหนดเองเช่น CyanogenMod ที่เป็นที่นิยมอย่างสูงหรือ Lineage OS ที่สืบทอดมาคุณอาจสงสัยว่าผู้คนสร้าง ROM เหล่านี้ได้อย่างไร? การพัฒนา ROM แบบกำหนดเองต้องทำงานมากแค่ไหน?

คู่มือนี้จะแนะนำคุณเกี่ยวกับพื้นฐานของการพัฒนา ROM Android ของคุณเอง ควรสังเกตว่านี่เป็นงานที่ยิ่งใหญ่ - หากคุณไม่มีประสบการณ์ในการเขียนโค้ดหรือหลอกล่อในเทอร์มินัล Linux คุณอาจต้องการรับความรู้บางอย่างภายใต้เข็มขัดของคุณก่อนที่จะดำดิ่งสู่ส่วนลึกนี้ แต่ถ้าคุณมีความคิดพื้นฐานเกี่ยวกับสิ่งเหล่านั้นเป็นอย่างน้อยฉันจะพยายามอธิบายสิ่งต่าง ๆ ให้ง่ายที่สุดเพื่อให้คุณทำตามได้

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

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

หากคุณกำลังพัฒนาสำหรับโทรศัพท์แบรนด์ Google (Pixel, Nexus และอื่น ๆ ) คุณสามารถค้นหาไบนารีของฮาร์ดแวร์ได้โดยตรงจาก Google และคู่มือนี้จะแนะนำคุณตลอดขั้นตอนการรับและสร้างลงใน ROM ของคุณ อย่างไรก็ตามหากคุณกำลังพัฒนา ROM สำหรับโทรศัพท์แบรนด์เนม (Sony, Samsung และอื่น ๆ ) ... ขออวยพรให้หัวใจของคุณเพราะคุณอยู่ในระหว่างการเดินทาง

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

Samsung Open Source Release Center

Sony Developer World

ฝ่ายสนับสนุนของ Lenovo

Huawei Open Source Release Center

นักพัฒนา Motorola

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

ข้อกำหนดสำหรับคู่มือนี้:

  • โครงการโอเพ่นซอร์สของ Android
  • โทรศัพท์ Pixel XL หรือโปรแกรมจำลอง Android สำหรับ Linux
  • ระบบปฏิบัติการ Linux 64 บิต - อูบุนตูหรือลินุกซ์มิ้นท์เป็นดิสเพลย์ที่เป็นมิตรกับมือใหม่ที่สุดในขณะที่ BBQLinux ได้รับการพัฒนาโดยเฉพาะสำหรับนักพัฒนา Android
  • Python
  • คอมพิวเตอร์ที่มีน้ำหนักมาก (การรวบรวมรหัสใช้หน่วยความจำและพื้นที่มาก!)

การตั้งค่าสภาพแวดล้อมการสร้างของคุณ

เริ่มต้นด้วยการตั้งค่าโปรแกรมจำลอง Android บนเครื่อง Linux ของคุณ ไม่ว่าคุณจะมีอุปกรณ์ Google Pixel XL หรือไม่การลองใช้ ROM ใหม่บนโปรแกรมจำลอง Android ก่อนที่จะกระพริบไปยังอุปกรณ์ของคุณจะปลอดภัยที่สุดเสมอ สิ่งที่ฉันชอบคือ Genymotion ดังนั้นฉันจะแนะนำคุณตลอดการติดตั้งโปรแกรมจำลองนั้น ๆ อย่างไรก็ตามคุณสามารถดูคู่มือ“ Best Android Emulators” นี้ได้เนื่องจากส่วนใหญ่มีความเข้ากันได้กับ Linux

ไปที่เว็บไซต์ Genymotion ลงทะเบียนบัญชียืนยันผ่านอีเมลและดาวน์โหลดไฟล์ปฏิบัติการไปยังเดสก์ท็อป Linux ของคุณ

ตอนนี้เปิดเทอร์มินัล Linux แล้วพิมพ์:

Chmod + x genymotion-xxxxx.bin (แทนที่ xxxx ด้วยหมายเลขเวอร์ชันในชื่อไฟล์)

./genymotion-xxxxxx.bin

กดYเพื่อสร้างไดเร็กทอรี Genymotion ตอนนี้พิมพ์ในเทอร์มินัล:

cd genymotion && ./genymotion

ตอนนี้ระบบจะขอให้คุณเริ่มขั้นตอนการติดตั้งดังนั้นเพียงแค่คลิก Next ต่อไปจนกว่าคุณจะไปที่หน้าต่าง Add Virtual Devices เลือก“ Pixel XL” ภายใต้ตัวเลือกรุ่นอุปกรณ์จากนั้นทำการติดตั้งให้เสร็จสิ้น คุณสามารถทดสอบอุปกรณ์เสมือนได้หากต้องการโดยพื้นฐานแล้วจะเหมือนกับการมีโทรศัพท์ Pixel XL บนเดสก์ท็อปของคุณ

มาตั้งค่า Python กันเถอะ:

$ apt-get ติดตั้ง python

ตอนนี้เราจำเป็นต้องตั้งค่า Java Development Kit บนเครื่อง Linux ของคุณ เปิดเทอร์มินัล Linux และพิมพ์คำสั่งต่อไปนี้:

$ sudo apt-get update

$ sudo apt-get ติดตั้ง openjdk-8-jdk

ตอนนี้คุณจะต้องกำหนดค่าระบบ Linux เพื่ออนุญาตการเข้าถึงอุปกรณ์ USB เรียกใช้รหัสต่อไปนี้ในเทอร์มินัล Linux:

สิ่งนี้จะดาวน์โหลดไฟล์ 51-android.txt ที่จำเป็นซึ่งอนุญาตให้เข้าถึงอุปกรณ์ USB ดังกล่าวข้างต้น เปิดไฟล์. txt และแก้ไขเพื่อรวมชื่อผู้ใช้ Linux ของคุณจากนั้นวางไฟล์. txt ในตำแหน่งต่อไปนี้: (ในฐานะผู้ใช้รูท ) ตอนนี้เสียบอุปกรณ์ของคุณเข้ากับคอมพิวเตอร์ผ่าน USB เพื่อให้กฎใหม่มีผลโดยอัตโนมัติ

กำลังดาวน์โหลดซอร์ส Android

AOSP โฮสต์บน Git ดังนั้นเราจะใช้เครื่องมือที่เรียกว่า Repo เพื่อสื่อสารกับ Git

ก่อนอื่นเราต้องตั้งค่าโฟลเดอร์ / bin ในโฮมไดเร็กทอรีของคุณ พิมพ์คำสั่งต่อไปนี้ในเทอร์มินัล Linux:

$ mkdir ~ / bin

$ PATH = ~ / bin: $ PATH

ตอนนี้เราจะดาวน์โหลดเครื่องมือ Repo ดังนั้นพิมพ์ลงในเทอร์มินัล Linux:

$ curl //storage.googleapis.com/git-repo-downloads/repo> ~ / bin / repo

$ chmod a + x ~ / bin / repo

หลังจากติดตั้ง Repo แล้วตอนนี้เราต้องสร้างไดเร็กทอรีว่างเพื่อเก็บไฟล์งานของคุณ ดังนั้นพิมพ์สิ่งนี้ลงในเทอร์มินัล Linux:

$ mkdir WORKING_DIRECTORY

$ cd WORKING_DIRECTORY

ตอนนี้เราจะกำหนดค่า Git ด้วยชื่อและที่อยู่อีเมลของคุณ - ใช้ที่อยู่ Gmail ที่คุณตรวจสอบเป็นประจำมิฉะนั้นคุณจะไม่สามารถใช้เครื่องมือตรวจสอบโค้ด Gerrit ได้

$ git config –global user.name“ ชื่อของคุณ”

$ git config –global user.email [email protected]

ตอนนี้เราจะบอกให้ Repo ดึงรายการหลักล่าสุดของ AOSP จาก Git:

$ repo init -u //android.googlesource.com/platform/manifest

หากดำเนินการสำเร็จคุณจะได้รับข้อความว่า Repo ได้รับการเตรียมใช้งานแล้วในไดเรกทอรีการทำงานของคุณ นอกจากนี้คุณจะพบไดเร็กทอรี“ .repo” ในไดเร็กทอรีไคลเอนต์ ตอนนี้เราจะดาวน์โหลดแผนผังแหล่งที่มาของ Android ด้วย:

$ repo sync

การสร้างซอร์ส Android

นี่คือที่ที่ไบนารีฮาร์ดแวร์ที่กล่าวถึงในตอนต้นของคู่มือนี้เข้ามามีบทบาท ไปที่หน้าไดรเวอร์ AOSP และดาวน์โหลดไบนารี Pixel XL สำหรับ Android 7.1.0 (NDE63P) คุณต้องการดาวน์โหลดทั้งอิมเมจผู้จำหน่ายและส่วนประกอบฮาร์ดแวร์ สิ่งเหล่านี้มาเป็นไฟล์เก็บถาวรที่บีบอัดดังนั้นแตกไฟล์เหล่านี้ไปยังเดสก์ท็อปของคุณและเรียกใช้สคริปต์แยกตัวเองจากโฟลเดอร์ราก เลือกติดตั้งไบนารีในรูทของ WORKING_DIRECTORY ที่เราสร้างไว้ก่อนหน้านี้

ตอนนี้พิมพ์ลงในเทอร์มินัล Linux ของคุณ:

$ ทำ clobber

$ source build / envsetup.sh

ตอนนี้เราจะเลือกเป้าหมายที่จะสร้างดังนั้นพิมพ์:

$ lunch aosp_marlin-userdebug

$ setpaths

$ make –j4

ตอนนี้เราได้ "สร้าง" Android ROM จากแหล่งที่มา ลองทดสอบในโปรแกรมจำลองโดยพิมพ์ลงในเทอร์มินัล:

$ emulator

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

ดังนั้นสิ่งที่ผู้ผลิตมักจะทำกับ AOSP คือการแยกมันเพิ่มไบนารีที่เป็นกรรมสิทธิ์ของตัวเองปรับแต่ง UI เพิ่มโลโก้สำหรับบูตเป็นต้นโดยพื้นฐานแล้วผู้ผลิตเพียงแค่ระบายสีบน ROM Android ของสต็อกและนั่นจะเป็นเป้าหมายต่อไปของคุณเช่นกัน .

โปรดอดใจรอเนื่องจากส่วนที่สองของคู่มือนี้จะกล่าวถึงการเพิ่มแบบอักษรธีมและภาพเคลื่อนไหวสำหรับบูตลงใน ROM ของคุณ!