หากคุณคุ้นเคยกับการรูทโทรศัพท์ Android ของคุณหรือดาวน์โหลด ROM แบบกำหนดเอง เช่น CyanogenMod ที่ได้รับความนิยมอย่างสูงหรือ Lineage OS ที่สืบทอดต่อจากมัน คุณอาจสงสัยว่าผู้คนสร้าง ROM เหล่านี้อย่างไร? ต้องใช้ความพยายามมากเพียงใดในการพัฒนา ROM ที่ปรับแต่งเอง
คู่มือนี้จะแนะนำคุณเกี่ยวกับพื้นฐานการพัฒนา Android ROM ที่คุณกำหนดเอง ควรสังเกตว่านี่เป็นงานใหญ่ หากคุณไม่มีประสบการณ์ในการเขียนโปรแกรมหรือเล่นกลในเทอร์มินัล Linux คุณอาจต้องการรับความรู้ภายใต้เข็มขัดของคุณก่อนที่จะดำดิ่งสู่ส่วนลึกนี้ แต่ถ้าคุณมีแนวคิดพื้นฐานเกี่ยวกับสิ่งเหล่านั้นอย่างน้อย ฉันจะพยายามอธิบายสิ่งต่าง ๆ ให้ง่ายที่สุด เพื่อให้คุณได้ปฏิบัติตาม
โดยพื้นฐานแล้ว สิ่งที่เราทำคือการดาวน์โหลด RAW ซอร์สโค้ด Android (AOSP) และปรับเปลี่ยนตามความชอบของเรา เนื่องจากมีแหล่งข้อมูลให้เลือกมากมายสำหรับอุปกรณ์ต่างๆ คู่มือนี้จึงเป็นเพียงการอ้างอิงถึง ต้นแบบ ที่มา รู้จักกันในชื่อ AOSP (Android Open Source Project).
ตอนนี้สิ่งที่เกี่ยวกับ 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 Developers
ด้วยวิธีนั้น เรามาดำเนินการต่อภายใต้สมมติฐานที่เรากำลังสร้าง ROM สำหรับประสบการณ์ Android แบบวานิลลาขั้นพื้นฐานสำหรับอุปกรณ์ Google Pixel ด้วยความรู้นี้ภายใต้เข็มขัดของคุณ คุณจะสามารถแยกสาขาออกได้ด้วยตัวเองและเริ่มพัฒนา ROM ของผู้ผลิตในเวอร์ชันที่ปรับแต่งได้
ข้อกำหนดสำหรับคู่มือนี้:
- โครงการโอเพ่นซอร์ส Android
- โทรศัพท์ Pixel XL หรือ โปรแกรมจำลอง Android สำหรับ Linux
- ระบบปฏิบัติการ Linux 64 บิต – Ubuntu หรือ Linux Mint เป็น distros ที่เป็นมิตรกับมือใหม่มากที่สุด ในขณะที่ BBQLinux ได้รับการพัฒนาโดยเฉพาะโดยคำนึงถึงนักพัฒนา Android
- หลาม
- คอมพิวเตอร์ขนาดใหญ่ (การคอมไพล์โค้ดใช้หน่วยความจำและพื้นที่มาก!)
การตั้งค่าสภาพแวดล้อมการสร้างของคุณ
เริ่มต้นด้วยการตั้งค่าตัวจำลอง Android บนเครื่อง Linux ของคุณ ไม่ว่าคุณจะมีอุปกรณ์ Google Pixel XL หรือไม่ การลองใช้ ROM ใหม่บนเครื่องจำลอง Android จะปลอดภัยที่สุดเสมอ ก่อน กระพริบไปยังอุปกรณ์ของคุณ รายการโปรดส่วนตัวของฉันคือ Genymotion ดังนั้นฉันจะแนะนำคุณตลอดการติดตั้งอีมูเลเตอร์นั้น อย่างไรก็ตาม คุณยังสามารถอ่านคู่มือ "โปรแกรมจำลอง Android ที่ดีที่สุด" นี้ได้ เนื่องจากคู่มือส่วนใหญ่มีความเข้ากันได้กับ Linux
ไปที่เว็บไซต์ Genymotion ลงทะเบียนบัญชี ยืนยันผ่านอีเมล และดาวน์โหลดไฟล์สั่งการไปยังเดสก์ท็อป Linux
ตอนนี้เปิดเทอร์มินัล Linux แล้วพิมพ์:
Chmod +x genymotion-xxxxx.bin (แทนที่ xxxx ด้วยหมายเลขเวอร์ชันในชื่อไฟล์)
./genymotion-xxxxxx.bin
กด Y เพื่อสร้างไดเร็กทอรี Genymotion ตอนนี้พิมพ์เทอร์มินัล:
cd genymotion &&./genymotion
ตอนนี้ระบบจะขอให้คุณเริ่มกระบวนการติดตั้ง ดังนั้นให้คลิกถัดไปจนกว่าคุณจะไปที่หน้าต่าง Add Virtual Devices เลือก “Pixel XL” ภายใต้ตัวเลือกรุ่นอุปกรณ์ จากนั้นทำการติดตั้งให้เสร็จสิ้น คุณสามารถทดสอบอุปกรณ์เสมือนได้หากต้องการ โดยพื้นฐานแล้วมันเหมือนกับการมีโทรศัพท์ Pixel XL บนเดสก์ท็อปของคุณ
มาตั้งค่า Python กัน:
$ apt-get install python
ตอนนี้ เราต้องตั้งค่า Java Development Kit บนเครื่อง Linux ของคุณ เปิดเทอร์มินัล Linux และพิมพ์คำสั่งต่อไปนี้:
$ sudo apt-get update
$ sudo apt-get install 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 https://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 “Your Name”
$ git config –global user.email [email protected]
ตอนนี้เราจะบอกให้ Repo ดึงรายการหลักล่าสุดของ AOSP จาก Git:
$ repo init -u https://android.googlesource.com/platform/manifest
หากทำสำเร็จ คุณจะได้รับข้อความว่า Repo ได้รับการเตรียมใช้งานในไดเร็กทอรีการทำงานของคุณแล้ว คุณยังจะพบ “.repo” ไดเร็กทอรีภายในไดเร็กทอรีไคลเอ็นต์ ตอนนี้เราจะดาวน์โหลดซอร์สทรีของ Android ด้วย:
$ repo ซิงค์
สร้างแหล่งที่มาของ Android
นี่คือที่มาของไบนารีของฮาร์ดแวร์ที่กล่าวถึงในตอนต้นของคู่มือนี้ ไปที่หน้าไดรเวอร์ AOSP และดาวน์โหลดไบนารี Pixel XL สำหรับ Android 7.1.0 (NDE63P) คุณต้องการดาวน์โหลดทั้งอิมเมจผู้จำหน่ายและส่วนประกอบฮาร์ดแวร์ สิ่งเหล่านี้มาในรูปแบบไฟล์บีบอัด ดังนั้นให้แตกไฟล์เหล่านั้นไปที่เดสก์ท็อปของคุณและเรียกใช้สคริปต์แบบขยายตัวเองจากโฟลเดอร์รูท เลือกติดตั้งไบนารีที่รูทของ WORKING_DIRECTORY ที่เราสร้างไว้ก่อนหน้านี้
ตอนนี้พิมพ์ลงในเทอร์มินัล Linux ของคุณ:
$ ทำให้คนโกง
$ แหล่งที่มา build/envsetup.sh
ตอนนี้เราจะเลือกเป้าหมายที่จะสร้าง ดังนั้นพิมพ์:
$ lunch aosp_marlin-userdebug
$ setpaths
$ make –j4
ตอนนี้เราได้ "สร้าง" ROM Android จากแหล่งที่มาแล้ว มาทดสอบกันในโปรแกรมจำลองโดยพิมพ์ลงในเทอร์มินัล:
$ อีมูเลเตอร์
ลองเล่นในอีมูเลเตอร์สักหน่อย อย่างที่คุณเห็น ประสบการณ์ Android แบบวานิลลาล้วนๆ นั้นค่อนข้างน้อย และนี่คือเหตุผลที่ผู้ผลิตปรับแต่ง AOSP ตามความต้องการของพวกเขา ดังนั้นคุณ สามารถ แฟลช ROM นี้ที่เราเพิ่งสร้างขึ้นในอุปกรณ์ของคุณหากคุณต้องการ แต่หากไม่มีการปรับปรุงใด ๆ ประสบการณ์ Android แบบวนิลลาอย่างหมดจดจะเป็นสิ่งที่น่าเบื่ออย่างแน่นอน
ดังนั้นสิ่งที่ผู้ผลิตมักจะทำกับ AOSP คือแยกมัน เพิ่มไบนารีที่เป็นกรรมสิทธิ์ของตนเอง ปรับแต่ง UI เพิ่มโลโก้บูต ฯลฯ โดยทั่วไปผู้ผลิตเพียงแค่ทาสีทับ Android ROM สต็อกและนั่นจะเป็นเป้าหมายต่อไปของคุณเช่นกัน .
โปรดอดใจรอ เนื่องจากในส่วนที่สองของคู่มือนี้จะกล่าวถึงการเพิ่มฟอนต์ ธีม และแอนิเมชั่นการบูตให้กับ ROM ของคุณ!