Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Android

Cách build Custom ROM từ Android Open Source Project (AOSP)

Nếu bạn quen với root điện thoại Android hoặc tải custom ROM, như CyanogenMod phổ biến hay người kế thừa Lineage OS, bạn có thể thắc mắc – mọi người build ROM này như thế nào? Cụ thể bao nhiêu công sức để phát triển một ROM tùy chỉnh?

Hướng dẫn này sẽ đi qua cơ bản phát triển custom Android ROM của riêng bạn. Cần lưu ý đây là công việc lớn – nếu bạn không có kinh nghiệm lập trình hay loanh quanh terminal Linux, bạn có thể muốn tích lũy kiến thức trước khi nhảy vào deep-end. Nhưng nếu bạn có ít nhất ý tưởng cơ bản về những thứ đó, tôi sẽ cố gắng giải thích đơn giản nhất để bạn theo dõi.

Cơ bản chúng ta đang tải nguyên始 mã nguồn Android (AOSP) và sửa đổi theo ý thích. Vì có quá nhiều nguồn cho thiết bị khác nhau, hướng dẫn này chỉ tham chiếu master source rõ ràng là AOSP (Android Open Source Project).

Điều về AOSP là mã nguồn thuần túy không bao gồm proprietary phần cứng riêng thiết bị. Nói ngôn ngữ đơn giản, phần cứng như camera và GPU sẽ không hoạt động "out of the box" khi phát triển với AOSP. Thực tế, thiết bị sẽ không boot nếu thiếu binary phần cứng này.

Nếu bạn phát triển cho điện thoại Google (Pixel, Nexus, v.v) bạn có thể tìm binary phần cứng trực tiếp từ Google, và hướng dẫn này sẽ chỉ cách lấy và build chúng vào ROM. Tuy nhiên, nếu bạn phát triển ROM cho điện thoại thương hiệu (Sony, Samsung, v.v)… well, bless your heart, vì bạn sẽ có chuyến đi dài.

Một số nhà sản xuất có dự án mã nguồn mở riêng hoặc phát hành công cụ phát triển cho developer tiềm năng, trong khi nhà sản xuất khác giữ bí mật code proprietary. Dưới đây danh sách ngắn dự án open source từ nhà sản xuất phổ biến hơn:

Samsung Open Source Release Center
Sony Developer World
Lenovo Support
Huawei Open Source Release Center
Motorola Developers

Với điều đó, tiếp tục với giả định chúng ta build ROM cho trải nghiệm Android vanilla cơ bản nhất, cho thiết bị Google Pixel. Với kiến thức này, bạn có thể tự mở rộng và phát triển phiên bản tùy chỉnh ROM của nhà sản xuất cụ thể.

Yêu cầu cho hướng dẫn này:

  • Android Open Source Project
  • Điện thoại Pixel XL hoặc Android emulator cho Linux
  • Hệ điều hành Linux 64-bit – Ubuntu hoặc Linux Mint thân thiện nhất với người mới, trong khi BBQLinux được phát triển đặc biệt cho nhà phát triển Android.
  • Python
  • Máy tính mạnh (compile code tốn nhiều bộ nhớ và dung lượng!)

Thiết lập môi trường Build

Bắt đầu bằng thiết lập Android emulator trên máy Linux. Dù bạn có thiết bị Google Pixel XL hay không, luôn an toàn hơn thử ROM mới trên emulator Android trước khi flash vào thiết bị. Emulator yêu thích của tôi là Genymotion, tôi sẽ hướng dẫn cài đặt emulator đó. Tuy nhiên, bạn có thể xem hướng dẫn "Best Android Emulators", vì hầu hết cũng có tương thích Linux.

Truy cập trang Genymotion, đăng ký tài khoản, xác thực qua email, và tải file thực thi về desktop Linux.

Mở terminal Linux, gõ:

Chmod +x genymotion-xxxxx.bin (thay xxxx bằng số phiên bản trong tên file)
./genymotion-xxxxxx.bin

Nhấn Y tạo thư mục Genymotion. Gõ trong terminal:

cd genymotion && ./genymotion

Giờ nó sẽ yêu cầu bắt đầu cài đặt, chỉ việc bấm Next cho đến khi cửa sổ Add Virtual Devices. Chọn "Pixel XL" dưới Device Model, và hoàn tất cài đặt. Bạn có thể test thiết bị ảo nếu muốn, cơ bản giống có điện thoại Pixel XL trên desktop.

Thiết lập Python:

$ apt-get install python

Giờ cần thiết lập Java Development Kit trên máy Linux. Mở terminal Linux và gõ lệnh sau:

$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk

Giờ cần cấu hình hệ thống Linux cho phép truy cập thiết bị USB. Chạy code sau trong terminal Linux:

Cách build Custom ROM từ Android Open Source Project (AOSP)

Điều này sẽ tải file 51-android.txt cần thiết cho phép truy cập USB như trên. Mở file .txt và sửa để thêm username Linux của bạn, sau đó đặt file .txt tại vị trí sau: Cách build Custom ROM từ Android Open Source Project (AOSP) (là root user). Giờ cắm thiết bị vào máy qua USB để rule mới tự động có hiệu lực.

Tải xuống nguồn Android

AOSP được host trên Git, nên dùng tool tên Repo giao tiếp với Git.

Đầu tiên thiết lập thư mục /bin trong Home directory. Gõ lệnh sau vào terminal Linux:

$ mkdir ~/bin
$ PATH=~/bin:$PATH

Giờ tải tool Repo, gõ vào terminal Linux:

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

Sau khi Repo cài xong, phải tạo thư mục trống chứa file làm việc. Gõ vào terminal Linux:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

Giờ cấu hình Git với tên và email – dùng địa chỉ Gmail bạn thường check, nếu không bạn không dùng được tool review code Gerrit.

$ git config –global user.name “Your Name”
$ git config –global user.email
you@gmail.com

Giờ bảo Repo kéo manifest master mới nhất của AOSP từ Git:

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

Nếu thành công, bạn nhận thông báo Repo đã khởi tạo trong working directory. Bạn cũng tìm thấy thư mục ".repo" trong client directory. Giờ tải cây nguồn Android với:

$ repo sync

Build nguồn Android

Đây là nơi binary phần cứng đề cập đầu hướng dẫn xuất hiện. Đi đến trang driver AOSP và tải binary Pixel XL cho Android 7.1.0 (NDE63P). Bạn muốn tải cả vendor image và thành phần phần cứng. Chúng đến dạng archive nén, giải nén ra desktop và chạy script self-extracting từ thư mục root. Chọn cài binary vào root của WORKING_DIRECTORY tạo trước.

Gõ vào terminal Linux:

$ make clobber
$ source build/envsetup.sh

Giờ chọn target build, gõ:

$ lunch aosp_marlin-userdebug
$ setpaths
$ make –j4

Đây, chúng ta đã "build" một Android ROM từ nguồn. Test trong emulator, gõ vào terminal:

$ emulator

Chơi một chút trong emulator. Như bạn thấy, trải nghiệm Android thuần túy khá tối giản, và đó là lý do nhà sản xuất tùy chỉnh AOSP cho nhu cầu. Bạn có thể flash ROM vừa build vào thiết bị nếu muốn, nhưng không thêm bất kỳ enhancement nào, trải nghiệm Android thuần túy sẽ rất nhàm chán.

Vậy nhà sản xuất thường làm gì với AOSP là fork nó, thêm binary proprietary của họ, tùy chỉnh UI, thêm boot logo, v.v. Nhà sản xuất cơ bản chỉ "vẽ lại" lên stock Android ROM, và đó sẽ là mục tiêu tiếp theo của bạn.

Đón xem, phần 2 hướng dẫn sẽ đi qua thêm font, chủ đề, và boot animation vào ROM!