Google cam kết thúc đẩy công bằng chủng tộc cho các cộng đồng Đen. Xem thế nào.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Xây dựng Android

Thực hiện theo các hướng dẫn này để bắt đầu xây dựng Android.

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

Khởi tạo môi trường với tập lệnh envsetup.sh :

source build/envsetup.sh

hoặc là

. build/envsetup.sh

Xem tập lệnh tại platform / build / envsetup.sh để biết mô tả về các lệnh liên quan, bao gồm lunch để chọn mục tiêu thiết bị và tapas để xây dựng các ứng dụng chưa được xử lý, chẳng hạn như ứng dụng TV tham chiếu .

Bạn sẽ cần phải ban hành lại lệnh này sau mỗi lần repo sync để nhận bất kỳ thay đổi nào đối với tập lệnh đó. Lưu ý rằng thay thế source bằng . (một dấu chấm đơn) lưu một vài ký tự và dạng ngắn được sử dụng phổ biến hơn trong tài liệu.

Tập lệnh envsetup.sh 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 trong bài tập này. Dưới đây là một số ví dụ lệnh quan trọng:

  • lunch - lunch product_name - build_variant Selects product_name là sản phẩm để xây dựng, và build_variant như các biến thể để xây dựng, và các cửa hàng những lựa chọn trong môi trường để được đọc bởi lời gọi tiếp theo của m và các lệnh tương tự khác.
  • m - Chạy các bản dựng từ ngọn cây. Điều này rất hữu ích vì bạn có thể chạy make từ bên trong các thư mục con. Nếu bạn có bộ biến môi trường TOP , nó sử dụng nó. Nếu bạn không, nó sẽ tìm cây từ thư mục hiện tại, cố gắng tìm đỉnh của cây. Bạn có thể xây dựng toàn bộ cây mã nguồn bằng cách chạy m mà không cần đối số hoặc xây dựng các mục tiêu cụ thể bằng cách chỉ định tên của chúng.
  • mma - Xây dựng tất cả các mô-đun trong thư mục hiện tại và các phụ thuộc của chúng.
  • mmma - Xây dựng tất cả các mô-đun trong các thư mục được cung cấp và các phụ thuộc của chúng.
  • croot - cd lên croot cây.

Để xem danh sách đầy đủ các lệnh có sẵn, hãy chạy:

hmm

Chọn một mục tiêu

Chọn mục tiêu để xây dựng với lunch . Các cấu hình chính xác có thể được thông qua như là một đối số. Ví dụ: lệnh sau đây đề cập đến một bản dựng hoàn chỉnh cho trình giả lập, với tất cả gỡ lỗi được bật:

lunch aosp_arm-eng

Nếu chạy không có đối số, lunch sẽ nhắc bạn chọn mục tiêu từ menu. Xem phần Chọn bản dựng thiết bị cho cấu hình bản dựng của tất cả các thiết bị hiện có.

Tất cả các mục tiêu xây dựng có dạng BUILD-BUILDTYPE , trong đó BUILD là tên mã liên quan đến sự kết hợp tính năng cụ thể. BUILDTYPE là một trong những điều sau đây.

Xây dựng Sử dụng
người sử dụng Truy cập hạn chế; phù hợp cho sản xuất
người dùng Giống như người dùng nhưng với quyền truy cập root và khả năng gỡ lỗi; ưa thích để gỡ lỗi
anh Phát triển cấu hình với các công cụ gỡ lỗi bổ sung

Bản dựng userdebug phải hoạt động giống như bản dựng của người dùng, với khả năng cho phép gỡ lỗi bổ sung thường vi phạm mô hình bảo mật của nền tảng. Điều này làm cho userdebug xây dựng tốt để kiểm tra người dùng với khả năng chẩn đoán lớn hơn. Khi phát triển với bản dựng userdebug, hãy làm theo hướng dẫn của userdebug .

Việc xây dựng eng ưu tiên năng suất kỹ thuật cho các kỹ sư làm việc trên nền tảng. Bản dựng eng tắt các tối ưu hóa khác nhau được sử dụng để cung cấp trải nghiệm người dùng tốt. Mặt khác, bản dựng eng có hành vi tương tự như bản dựng của người dùng và userdebug để các nhà phát triển thiết bị có thể thấy cách mã hoạt động trong các môi trường đó.

Để biết thêm thông tin về việc xây dựng và chạy trên phần cứng thực tế, hãy xem Running Builds .

Xây dựng mã

Phần này là một bản tóm tắt nhanh chóng để đảm bảo rằng thiết lập đã hoàn tất.

Xây dựng mọi thứ với m . 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 số -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.

m

Như đã giải thích ở trê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 của chúng trong dòng lệnh m của bạn. Ngoài ra, m cung cấp một số mục tiêu giả cho các mục đích đặc biệt. Một số ví dụ:

  • droid - m droid là bản dựng bình thường. Mục tiêu này ở đây vì mục tiêu mặc định yêu cầu một tên.
  • all - m all xây dựng mọi thứ mà m droid làm, cộng với tất cả mọi thứ không có thẻ droid . Máy chủ bản dựng chạy cái này để đảm bảo rằng mọi thứ trong cây và có tệp Android.mk xây dựng.
  • clean - m clean xóa tất cả các tập tin đầu ra và trung gian cho cấu hình này. Điều này giống như rm -rf out/ .

Chạy m help để xem những mục tiêu giả khác m cung cấp.

Chạy đi!

Bạn có thể chạy bản dựng của mình trên trình giả lập hoặc flash nó trên thiết bị. Vì bạn đã chọn mục tiêu xây dựng của mình với lunch , nên không thể chạy trên một mục tiêu khác với mục tiêu được xây dựng.

Nhấp nháy với fastboot

Để flash thiết bị, hãy sử dụng fastboot , cần được đưa vào đường dẫn của bạn sau khi xây dựng thành công. Xem Nhấp nháy thiết bị để được hướng dẫn.

Giả lập thiết bị Android

Trình giả lập được tự động thêm vào đường dẫn của bạn bằng quá trình xây dựng. Để chạy trình giả lập, gõ:

emulator

Khắc phục sự cố lỗi xây dựng phổ biến

Phiên bản Java sai

Nếu bạn đang cố gắng xây dựng một phiên bản Android không phù hợp với phiên bản Java của bạn, make hủy bỏ bằng một thông báo như:

************************************************************
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à các nguyên nhân và giải pháp có thể:

  • Không thể cài đặt JDK chính xác như được chỉ định trong Yêu cầu JDK . Đảm bảo bạn đã làm theo các bước trong Thiết lập môi trườngChọn mục tiêu .
  • Một JDK khác được cài đặt trước đó xuất hiện trong đường dẫn của bạn. Chuẩn bị JDK chính xác vào đầu đường dẫn của bạn hoặc xóa JDK có vấn đề.

Python phiên bản 3

Repo được xây dựng trên chức năng cụ thể từ Python 2.x và không tương thích với Python 3. Để sử dụng Repo, hãy cài đặt Python 2.x:

apt-get install python

Hệ thống tập tin không phân biệt chữ hoa chữ thường

Nếu bạn đang xây dựng trên hệ thống tệp HFS trên macOS, bạn có thể gặp phải một lỗi như:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

Thực hiện theo các hướng dẫn trong Tạo hình ảnh đĩa phân biệt chữ hoa chữ thường .

Không có quyền USB

Theo mặc định trên hầu hết các hệ thống Linux, người dùng không có đặc quyền không thể truy cập các cổng USB. Nếu bạn thấy lỗi bị từ chối cấp phép, hãy làm theo các hướng dẫn trong Định cấu hình quyền truy cập USB .

Nếu [adb] (adb.md) đã chạy và không thể kết nối với thiết bị sau khi thiết lập các quy tắc đó, bạn có thể tắt nó bằng adb kill-server . Lệnh đó khiến adb khởi động lại với cấu hình mới.