สร้าง Custom ROM เองจากซอร์สโค้ด AOSP
ใครเคย root โทรศัพท์ หรือโหลด Custom ROM อย่าง CyanogenMod/Lineage OS อาจสงสัยว่า สร้าง ROM ยังไง? ใช้ความพยายามมากน้อยแค่ไหน?
คู่มือนี้แนะนำพื้นฐานการพัฒนา Custom ROM เอง งานใหญ่มาก — ถ้าไม่มีประสบการณ์ coding หรือ Linux terminal ควรเรียนรู้ก่อน แต่ถ้ามีพื้นฐาน จะอธิบายให้เข้าใจง่ายที่สุด
โหลด raw Android source code (AOSP) แล้วปรับแต่ง AOSP master source ไม่รวม device-specific hardware proprieties กล่าวคือ กล้อง GPU จะไม่ทำงาน "out of the box" ไม่มี hardware binaries ไม่บูทได้
ถ้าพัฒนาสำหรับ Google Pixel/Nexus หา hardware binaries จาก Google ได้ คู่มือนี้แนะนำวิธีเอาและ build เข้า ROM แต่ถ้าเป็นแบรนด์อื่น (Sony, Samsung...) — โชคดีนะ เพราะจะยากมาก
บางผู้ผลิตมี open-source projects หรือปล่อย dev tools แตบางรายล็อก proprietary code รายการ open-source projects ยอดนิยม:
- Samsung Open Source Release Center
- Sony Developer World
- Lenovo Support
- Huawei Open Source Release Center
- Motorola Developers
ต่อไปสมมติว่า build ROM สำหรับ Google Pixel แบบ vanilla ด้วยความรู้นี้ จะขยายต่อไปได้
ข้อกำหนด:
- Android Open Source Project
- Pixel XL phone หรือ Android emulator สำหรับ Linux
- 64-bit Linux OS — Ubuntu/Linux Mint ใช้ง่าย BBQLinux พัฒนาสำหรับ Android dev
- Python
- คอมพิวเตอร์แรง (compile ใช้ RAM และพื้นที่มาก!)
ตั้งค่า Build Environment
ติดตั้ง Android emulator บน Linux ใช้ Genymotion (โปรด) ดาวน์โหลดจากเว็บ สมัคร verify email ดาวน์โหลด executable
Terminal:
chmod +x genymotion-xxxxx.bin ./genymotion-xxxxxx.bin
กด Y สร้างโฟลเดอร์ Genymotion แล้ว:
cd genymotion && ./genymotion
คลิก Next จนถึง Add Virtual Devices เลือก "Pixel XL" ติดตั้งเสร็จ ทดสอบได้
ติดตั้ง Python:
$ apt-get install python
ติดตั้ง Java Development Kit:
$ sudo apt-get update $ sudo apt-get install openjdk-8-jdk
ตั้งค่า USB device access:

ดาวน์โหลด 51-android.txt ใส่ username แล้ววางที่ (as root):

เสียบโทรศัพท์ USB ให้ rules ทำงาน
ดาวน์โหลด Android Source
AOSP อยู่บน Git ใช้ tool Repo จัดการ
$ mkdir ~/bin $ PATH=~/bin:$PATH $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ mkdir WORKING_DIRECTORY $ cd WORKING_DIRECTORY $ git config --global user.name "Your Name" $ git config --global user.email you@gmail.com $ repo init -u https://android.googlesource.com/platform/manifest $ repo sync
Build Android Source
โหลด Pixel XL binaries สำหรับ Android 7.1.0 (NDE63P) จาก AOSP drivers page ทั้ง vendor image และ hardware components แตกไฟล์ รัน self-extracting script จาก root folder ติดตั้งที่ root ของ WORKING_DIRECTORY
$ make clobber $ source build/envsetup.sh $ lunch aosp_marlin-userdebug $ setpaths $ make –j4
Build ROM เสร็จ ทดสอบใน emulator:
$ emulator
Vanilla Android น่าเบื่อมาก ผู้ผลิตจะ fork AOSP เพิ่ม proprietary binaries, ปรับ UI, boot logo ฯลฯ ต่อไปจะสอนเพิ่ม fonts, themes, boot animation