Xây dựng Android

Làm theo hướng dẫn trên trang này để xây dựng Android.

Thiết lập môi trường xây dựng của bạn

Từ trong thư mục làm việc của bạn, hãy lấy tập lệnh envsetup.sh để thiết lập môi trường xây dựng của bạn:

$ 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 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 trợ giúp tích hợp, hãy nhập hmm .

Chọn mục tiêu

Trước khi xây dựng Android, bạn phải xác định mục tiêu để xây dựng. Để xác định mục tiêu xây dựng của bạn, hãy sử dụng lệnh lunch , theo sau là mục tiêu xác định sản phẩm mục tiêu và quá trình xây dựng của bạn:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

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

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

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

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

lunch product_name-release-build_variant

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

  • product_name là tên sản phẩm bạn muốn build, 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, nhưng định dạng mà Google sử dụng có các thành phần sau:

    • aosp đề cập đến Nền tảng nguồn mở Android.
    • (tùy chọn) cf được đưa vào khi mục tiêu được dự định chạy trong trình mô phỏng Mực nang.
    • kiến trúc và phần cứng, chẳng hạn như x86_64_phone hoặc husky (Pixel 8 pro).
  • release được đặt ở trunk-staging .

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

    build_variant Sự miêu tả
    user Biến thể bản dựng này cung cấp quyền truy cập bảo mật hạn chế và phù hợp cho sản xuất.
    userdebug Biến thể bản dựng này giúp nhà phát triển thiết bị hiểu được 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 với bản dựng userdebug , hãy làm theo Nguyên tắc dành cho userdebug .
    tiếng anh Biến thể xây dựng này có thời gian xây dựng nhanh hơn và phù hợp nhất để phát triển hàng ngày nếu bạn không quan tâm đến hiệu suất và sức mạnh.

Xây dựng mã

Chạy lệnh sau để xây dựng mục tiêu của bạn. Tùy thuộc vào đặc điểm kỹ thuật của máy trạm của bạn, quá trình xây dựng đầu tiên có thể mất ít hơn một giờ và tối đa vài giờ. Các bản dựng tiếp theo mất ít thời gian hơn đáng kể.

$ m

Đầu ra đầu tiên bạn sẽ thấy là bản tóm tắt về mục tiêu và môi trường xây dựng của bạn:

============================================
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
============================================

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

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

Bạn có thể xây dựng 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 của mình. Ngoài ra, lệnh m còn 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 xây dựng bất cứ thứ gì nhưng phân tích cú pháp và xác thực cấu trúc xây dựng. Để có danh sách các mục tiêu hợp lệ, hãy nhập m help .

Khắc phục sự cố lỗi xây dựng (8.0 trở về trước)

Nếu bạn đang xây dựng AOSP 8 hoặc cũ hơn, m có thể hủy bỏ khi gặp sự cố với phiên bản Java của bạn. Ví dụ: bạn có thể nhận được thông báo này:

************************************************************
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
************************************************************

Dưới đây là những nguyên nhân và giải pháp có thể xảy ra:

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