Phần này mô tả cách thiết lập môi trường làm việc cục bộ của bạn để xây dựng các tệp nguồn Android. Bạn phải sử dụng Linux; xây dựng trên MacOS hoặc Windows không được hỗ trợ. Hãy ghi nhớ sự thay đổi quan trọng đối với tệp nhị phân /usr/bin/python
.
Để biết tổng quan về toàn bộ quá trình xem xét mã và cập nhật mã, hãy xem Vòng đời của một bản vá .
Lựa chọn chi nhánh
Một số yêu cầu đối với môi trường xây dựng được xác định bởi phiên bản mã nguồn mà bạn định biên dịch. Để biết danh sách đầy đủ các nhánh có sẵn, hãy xem Số bản dựng . Bạn cũng có thể chọn tải xuống và xây dựng mã nguồn mới nhất (được gọi là main
), trong trường hợp đó bạn chỉ cần bỏ qua đặc tả nhánh khi khởi tạo kho lưu trữ.
Sau khi chọn nhánh, hãy làm theo các hướng dẫn thích hợp bên dưới để thiết lập môi trường xây dựng của bạn.
Thiết lập môi trường xây dựng Linux
Những hướng dẫn này áp dụng cho tất cả các nhánh, bao gồm cả main
.
Bản dựng Android được kiểm tra nội bộ thường xuyên trên Ubuntu LTS (14.04) và thử nghiệm Debian. Hầu hết các bản phân phối khác đều có sẵn các công cụ xây dựng cần thiết.
Đối với Gingerbread (2.3.x) và các phiên bản cao hơn, bao gồm cả nhánh main
, cần có môi trường 64-bit. Các phiên bản cũ hơn có thể được biên dịch trên hệ thống 32 bit.
Cài đặt các gói cần thiết (Ubuntu 18.04 trở lên)
Bạn cần có phiên bản Ubuntu 64 bit.
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
Cài đặt các gói cần thiết (Ubuntu 14.04)
Bạn cần có phiên bản Ubuntu 64 bit (khuyến nghị 14.04).
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
Cài đặt các gói cần thiết (Ubuntu 12.04)
Bạn có thể sử dụng Ubuntu 12.04 để xây dựng các phiên bản Android cũ hơn. Phiên bản 12.04 không được hỗ trợ trên các bản phát hành main
hoặc gần đây.
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Cài đặt các gói cần thiết (Ubuntu 10.04-11.10)
Xây dựng trên Ubuntu 10.04-11.10 không còn được hỗ trợ nhưng có thể hữu ích để xây dựng các bản phát hành AOSP cũ hơn.
sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc
Trên Ubuntu 10.10:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
Trên Ubuntu 11.10:
sudo apt-get install libx11-dev:i386
Định cấu hình truy cập USB
Cài đặt bộ quy tắc udev
mặc định do cộng đồng duy trì cho tất cả các thiết bị Android bằng cách làm theo hướng dẫn Thiết lập thiết bị để phát triển .
Sử dụng một thư mục đầu ra riêng biệt
Theo mặc định, đầu ra của mỗi bản dựng được lưu trữ trong thư mục out/
của cây nguồn phù hợp. Bạn có thể ghi đè điều này bằng cách xuất biến môi trường OUT_DIR
. Ví dụ:
export OUT_DIR=out_mytarget
Điều này sẽ khiến đầu ra của bản dựng được lưu trữ trong thư mục out_mytarget/
của cây nguồn. Khi sử dụng cùng một cây nguồn để xây dựng cho nhiều mục tiêu, nên sử dụng OUT_DIR
riêng cho từng mục tiêu.
Trên một số máy có nhiều thiết bị lưu trữ, bản dựng sẽ nhanh hơn khi lưu trữ tệp nguồn và đầu ra trên các ổ đĩa riêng biệt. Để có hiệu suất bổ sung, đầu ra có thể được lưu trữ trên một hệ thống tệp được tối ưu hóa về tốc độ thay vì độ mạnh của sự cố, bởi vì tất cả các tệp có thể được tạo lại nếu hệ thống tệp bị hỏng.
Để thiết lập điều này, hãy xuất biến OUT_DIR_COMMON_BASE
để trỏ đến vị trí nơi các thư mục đầu ra của bạn sẽ được lưu trữ.
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
Thư mục đầu ra cho mỗi cây nguồn riêng biệt được đặt tên theo thư mục chứa cây nguồn. Ví dụ: nếu bạn có cây nguồn /source/main1
và /source/main2
và nếu OUT_DIR_COMMON_BASE
được đặt thành /output
thì các thư mục đầu ra là /output/main1
và /output/main2
.
Tránh lưu trữ nhiều cây nguồn trong các thư mục có cùng tên, vì các cây nguồn sẽ chia sẻ một thư mục đầu ra và dẫn đến kết quả không thể đoán trước. Điều này chỉ được hỗ trợ trên Jelly Bean (4.1) trở lên, bao gồm cả nhánh main
.
Tiếp theo: Tải nguồn xuống
Môi trường xây dựng của bạn đã sẵn sàng! Tiến hành tải nguồn .