หากคุณคุ้นเคยกับการรูทโทรศัพท์ 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 ของคุณ!