Xây dựng Android

Làm theo hướng dẫn trên trang này để tạo Android.

Thiết lập môi trường xây dựng

Trong thư mục đang hoạt động, hãy lấy nguồn tập lệnh envsetup.sh để thiết lập môi trường bản dựng:

source build/envsetup.sh

Tập lệnh này nhập một số lệnh cho phép bạn làm việc với mã nguồn Android, bao gồm cả các lệnh được sử dụng trên trang này. Để xem nguồn của tập lệnh, hãy tham khảo platform/build/envsetup.sh. Để xem phần trợ giúp tích hợp, hãy nhập hmm.

Chọn mục tiêu

Trước khi tạo Android, bạn phải xác định một mục tiêu để tạo. Mục tiêu phản ánh nền tảng mục tiêu mà bạn đang xây dựng. Để xác định mục tiêu cần tạo, hãy sử dụng lệnh lunch, theo sau là một chuỗi đại diện cho mục tiêu. Ví dụ:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

Bạn sẽ thấy một bản tóm tắt về mục tiêu và môi trường xây dựng:

============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================

Chuỗi đại diện cho mục tiêu có định dạng như sau:

lunch product_name-release_config-build_variant

Các thành phần của chuỗi này là:

  • product_name là tên của sản phẩm bạn muốn tạo, chẳng hạn như aosp_cf_x86_64_phone hoặc aosp_husky. product_name cụ thể của bạn có thể tuân theo định dạng của riêng bạn cho thiết bị, nhưng định dạng mà Google sử dụng cho các thiết bị của mình có các thành phần sau:

    • aosp đề cập đến Nền tảng nguồn mở Android.
    • (không bắt buộc) cf được đưa vào khi mục tiêu được chạy trong trình mô phỏng Cuttlefish.
    • Cấu trúc và phần cứng (tên mã), chẳng hạn như x86_64_phone hoặc husky, là tên mã của Pixel 8 Pro. Để biết danh sách tên mã của các thiết bị của Google, hãy xem phần Tên mã của thiết bị.
  • release_config được đặt thành cấu hình phát hành, chẳng hạn như cấu hình phát hành phát triển có tên là trunk_staging. Cấu hình phát hành xác định một số tính năng và mã nhất định đứng sau cờ phát hành tính năng, đồng thời được bật hoặc tắt cho một bản dựng. Để biết thêm về cấu hình phát hành, hãy xem phần Đặt giá trị khởi chạy cờ tính năng.

  • Phần build_variant của chuỗi có thể là một trong ba giá trị trong bảng sau:

    build_variant Mô tả
    user Biến thể bản dựng này cung cấp quyền truy cập bảo mật có giới hạn và phù hợp với hoạt động sản xuất.
    userdebug Biến thể bản dựng này giúp các nhà phát triển thiết bị hiểu rõ hiệu suất và sức mạnh của các bản phát hành đang trong quá trình phát triển. Khi phát triển bằng bản dựng userdebug, hãy làm theo Nguyên tắc về userdebug.
    eng Biến thể bản dựng này có thời gian tạo bản dựng nhanh hơn và phù hợp nhất với hoạt động phát triển hằng ngày nếu bạn không quan tâm đến hiệu suất và nguồn điện.

Nếu bạn chạy lunch mà không có đối số nào, hệ thống sẽ cung cấp danh sách các mục tiêu phổ biến. Bạn cũng có thể tạo chuỗi mục tiêu của riêng mình bằng cách ghép các phần tử của chuỗi mục tiêu bằng thông tin trên trang này và tên mã đại diện cho phần cứng cụ thể của Google tại Tên mã thiết bị.

Xem mục tiêu hiện tại

Để xem chế độ cài đặt bữa trưa hiện tại, hãy chạy:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Tạo mã

Chạy lệnh sau để tạo mục tiêu. Tuỳ thuộc vào thông số kỹ thuật của máy trạm, bản dựng đầu tiên có thể mất chưa đến một giờ và tối đa là vài giờ. Các bản dựng tiếp theo sẽ mất ít thời gian hơn đáng kể.

m

Kết quả của bản dựng sẽ xuất hiện trong $OUT_DIR. Nếu bạn tạo nhiều mục tiêu, thì mỗi bản dựng mục tiêu sẽ xuất hiện trong $OUT_DIR.

Lệnh m tạo từ đầu cây, vì vậy, bạn có thể chạy m từ trong các thư mục con. Nếu bạn đã đặt biến môi trường TOP, thì lệnh m sẽ sử dụng biến đó. Nếu bạn không đặt TOP, lệnh m sẽ tra cứu cây từ thư mục hiện tại, cố gắng tìm đầu cây.

Lệnh m có thể xử lý các tác vụ song song bằng đối số -jN. Nếu bạn không cung cấp đối số -j, hệ thống xây dựng sẽ tự động chọn số lượng tác vụ song song mà hệ thống cho là tối ưu cho hệ thống của bạn.

Bạn có thể tạo các mô-đun cụ thể thay vì hình ảnh thiết bị đầy đủ bằng cách liệt kê tên mô-đun trong dòng lệnh m. Ngoài ra, lệnh m cung cấp một số mục tiêu giả, được gọi là mục tiêu. Ví dụ: m nothing không tạo bất kỳ mục tiêu nào, nhưng phân tích cú pháp và xác thực cấu trúc bản dựng. Để xem danh sách các mục tiêu hợp lệ, hãy nhập m help.

Khắc phục lỗi bản dựng (8.0 trở xuống)

Nếu bạn đang tạo AOSP 8 trở xuống, m có thể huỷ khi gặp vấn đề với phiên bản Java của bạn. Ví dụ: bạn có thể nhận được thông báo sau:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

Sau đây là các nguyên nhân và giải pháp có thể xảy ra:

  • Bạn không cài đặt được JDK chính xác như đã chỉ định trong các phần về JDK của bài viết Thiết lập để phát triển AOSP (2.3 – 8.0) .
  • Có một JDK khác đã cài đặt trước đó xuất hiện trong đường dẫn của bạn. Đặt JDK chính xác vào đầu đường dẫn hoặc xoá JDK có vấn đề.