LineageOS ซึ่งเป็นผู้สืบทอดต่อจาก CyanogenMod เป็น ROM แบบกำหนดเองที่ได้รับความนิยมมากที่สุดสำหรับ Android มันถูกย้ายไปยังโทรศัพท์กว่า 200 รุ่นและมีคุณสมบัติมากมายเมื่อเทียบกับประสบการณ์ Android ที่มีอยู่
อย่างไรก็ตาม แม้ว่าจะมีอุปกรณ์จำนวนมากที่มีพอร์ต LineageOS แต่ก็มีอุปกรณ์อีกมากมายที่ไม่มีพอร์ต ในคู่มือ Appual ที่ง่ายและรวดเร็วนี้ เราจะแสดงวิธีสร้าง LineageOS ในสภาพแวดล้อม Windows 10 . โปรดทราบว่าการดำเนินการนี้จะไม่สร้าง ROM ของ LineageOS ที่เข้ากันได้กับอุปกรณ์ของคุณทันที คู่มือนี้มีไว้เพื่อให้คุณตั้งค่าและทำงานบนสภาพแวดล้อม Windows 10 เพื่อสร้าง LineageOS จาก Git repo อย่างเป็นทางการเท่านั้น
โปรดทราบว่าคุณควรคุ้นเคยกับการใช้เทอร์มินัลคำสั่งของ Linux และการสร้าง Android ROM – นี่ไม่ใช่คำแนะนำสำหรับผู้เริ่มต้น คุณควรเห็นคำแนะนำของ Appual เกี่ยวกับการสร้าง ROM แบบกำหนดเองจาก AOSP หากคุณไม่เคยพยายามสร้าง ROM มาก่อน (ลิงก์ด้านล่าง)
หากคุณสนใจในการสร้าง ROM แบบกำหนดเองและบทช่วยสอน DIY Android อื่นๆ คุณควรอ่านคู่มือ Appual อื่นๆ เหล่านี้:
- วิธีการ DIY Port TWRP สำหรับ Android
- วิธีการกำหนดธีม UI ระบบ Android ด้วยตนเอง
- วิธีการสร้าง ROM แบบกำหนดเองจาก AOSP | ปตท. 2
ข้อกำหนด:
- Windows 10 (64 บิต) (แนะนำให้ติดตั้งบน SSD)
- อย่างน้อย RAM ขนาด 16GB (การคอมไพล์ใช้ทรัพยากรมาก!)
ดังนั้นโดยพื้นฐานแล้วเราจะทำการตั้งค่าระบบย่อย Windows สำหรับ Linux (WSL) สำหรับสภาพแวดล้อมการสร้างของเรา วิธีนี้ง่ายอย่างเหลือเชื่อแต่มักถูกมองข้าม เนื่องจากสิ่งที่เราต้องการส่วนใหญ่มีอยู่ใน Microsoft Store
ขั้นตอนแรกของคุณคือเปิด Microsoft Store และค้นหา Ubuntu 18.04 และติดตั้งแอป
ถัดไป เปิดแอป Ubuntu 18.04 และดำเนินการตามวิซาร์ดการตั้งค่าเริ่มต้น
ตอนนี้เปิดเทอร์มินัล Ubuntu และติดตั้งแพ็คเกจต่อไปนี้:
sudo apt install android-sdk-platform-tools bc build-essential ccache curl g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop m4 openjdk-8-jdk pngcrush repo rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
ถัดไป คุณต้องสร้างไดเร็กทอรีใหม่สำหรับซอร์สโค้ดและไปที่:
mkdir -p ~/android/lineage && cd android/lineage
ตอนนี้เราจะเริ่มต้น repo ต้นทาง LineageOS:
repo init -u https://github.com/LineageOS/android.git -b lineage-15.1
เพิ่มโค้ดนี้ใน .repo/local_manifests/roomservice.xml (ถ้าไฟล์นี้ไม่มี คุณก็สร้างมันขึ้นมาได้เลย)
<project name="TheMuppets/proprietary_vendor_your device brand" path="vendor/your device brand" remote="github" />
และเราจะดาวน์โหลดซอร์สโค้ด:
repo sync
ตอนนี้เป็นทางเลือกเท่านั้น แต่ขอแนะนำให้เปิดการแคชเพื่อเพิ่มความเร็วในงานสร้างของคุณ เราทำสิ่งนี้ผ่าน "ccache"
โดยทั่วไปคุณต้องการเพิ่มบรรทัดต่อไปนี้ในไฟล์ ~/.bashrc ของคุณ:
Export USE_CCACHE=1
จากนั้นระบุจำนวนเนื้อที่ดิสก์สูงสุดที่คุณต้องการให้ ccache ใช้ประโยชน์:
Ccache -M 50G
แทนที่ "50G" ในบรรทัดนั้นด้วยค่ากำหนดของคุณ ซึ่งสอดคล้องกับจำนวนแคชที่คุณจัดสรรเป็นกิกะไบต์ หากคุณกำลังสร้างอุปกรณ์เพียงเครื่องเดียว คุณสามารถใช้ระหว่าง 25G - 50G ได้ แต่ถ้าคุณกำลังสร้างสำหรับอุปกรณ์หลายเครื่องที่ ไม่ใช้แหล่งเคอร์เนลเดียวกัน คุณควรกระแทกได้ถึงประมาณ 75 - 100G ไม่ว่าในกรณีใด การใช้ ccache จะช่วยประหยัดเวลาในการสร้างของคุณมาก
ต่อไป คุณควรเลือกการคอมมิทต่อไปนี้:
source build/envsetup.sh && repopick -t wsl-compile
จากนั้นคุณจะต้องเตรียมรหัสเฉพาะอุปกรณ์:
breakfast your device codename
ทำวัวกระทิง 64 บิตและไอจาร์:
make bison && make ijar
ตั้งค่า BISON_EXEC ให้เรียกใช้ bison รุ่น 64 บิต และตั้งค่า IJAR_EXEC ให้เรียกใช้ ijar ที่ดัดแปลง:
export BISON_EXEC=~/android/lineage/out/host/linux-x86/bin/bison export IJAR_EXEC=~/android/lineage/out/host/linux-x86/bin/ijar
(เพิ่มคำสั่งใน ~/.bashrc หากคุณไม่ต้องการรันคำสั่งทุกครั้งที่เปิดบรรทัดคำสั่งอีกครั้ง)
และตอนนี้คุณก็เริ่มสร้างได้แล้ว!
brunch your device codename
สำหรับการสร้างในอนาคต คุณเพียงแค่ต้องทำซ้ำขั้นตอนในการเพิ่ม .repo/local_manifests เปิดใช้งาน ccache และตั้งค่า BISON_EXEC และ IJAR ที่ดัดแปลง
คุณต้องสร้างกระทิง &&ทำ ijar ทุกครั้งที่คุณล้างไดเร็กทอรี
หมายเหตุสุดท้ายบางส่วน:
- อย่า เพิ่ม/แก้ไขไฟล์ Linux ของคุณจาก Windows ไฟล์ส่วนใหญ่มักจะเสียหายใน bash ทำภายในระบบย่อย Linux
- อย่า ใช้ mnt เพื่อดาวน์โหลดซอร์สโค้ดไปยังไดรฟ์อื่นแล้วทำตามคำแนะนำนี้ คุณควรดาวน์โหลดซอร์สโค้ดไปยังโฟลเดอร์ เฉพาะภายในระบบย่อย Linux!