Xây dựng Android

Hãy làm theo những hướng dẫn sau để 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

. 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 phần ăn trưa để chọn mục tiêu thiết bị và tapas để xây dựng các ứng dụng chưa được nhóm, chẳng hạn như ứng dụng TV tham chiếu .

Bạn cần phát 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 việc thay thế source bằng . (một dấu chấm) 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.

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

hmm

Lựa chọn mục tiêu

bữa trưa

Chọn mục tiêu để xây dựng trong lunch . lunch product_name - build_variant chọn product_name làm sản phẩm để xây dựng và build_variant làm biến thể để xây dựng, đồng thời lưu trữ các lựa chọn đó trong môi trường để đọc bằng các lệnh gọi tiếp theo của m và các lệnh tương tự khác.

Cấu hình chính xác có thể được thông qua dưới dạng đối số. Ví dụ: lệnh sau đề cập đến bản dựng hoàn chỉnh cho trình mô phỏng, với tất cả tính năng 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, nhưng lưu ý rằng menu không bao gồm mọi khả năng. Xem 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ị được hỗ trợ trong AOSP hoặc trao đổi với mọi người trong nhóm của bạn về bữa trưa phù hợp cho thiết bị bạn đang làm việc.

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

Kiểu xây dựng Sử dụng
người dùng Truy cập hạn chế; phù hợp cho sản xuất
gỡ lỗi người dùng Giống như người dùng nhưng có khả năng truy cập root và gỡ lỗi; rất gần với hiệu suất sản xuất
tiếng anh Cấu hình phát triển với thời gian xây dựng nhanh hơn; phù hợp nhất cho sự phát triển hàng ngày

Bản dựng userdebug phải hoạt động giống như bản dựng user , với khả năng kích hoạt tính năng 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 giúp cho bản dựng userdebug có thể hiểu rõ hiệu suất và sức mạnh mà bản phát hành sử dụng. Khi phát triển bằng bản dựng userdebug , hãy làm theo hướng dẫn userdebug .

Bản 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 để tối đa hóa hiệu suất thời gian chạy. Mặt khác, bản dựng eng rất giống với bản dựng useruserdebug để các nhà phát triển thiết bị có thể xem mã hoạt động như thế nào trong các môi trường đó.

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

echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Để biết thêm thông tin về cách xây dựng và chạy trên phần cứng thực tế, hãy xem Thiết bị nhấp nháy .

món tapas

Lệnh tapas định cấu hình bản dựng ứng dụng chưa được nhóm. Nó chọn các ứng dụng riêng lẻ sẽ được xây dựng bởi hệ thống xây dựng Android. Không giống như lunch , tapas không yêu cầu xây dựng hình ảnh cho thiết bị.

Chạy tapas help để biết thêm thông tin về lệnh.

Xây dựng mã

Phần này là bản tóm tắt nhanh để đảm bảo rằng quá trình 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 -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 còn 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 tên.
  • all - m all xây dựng mọi thứ mà m droid làm, cộng với mọi thứ không có thẻ droid . Máy chủ xây dựng chạy điều này để đảm bảo rằng mọi thứ có trong cây và đều có tệp Android.mk được xây dựng.
  • 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ẽ sử dụng biến đó. Nếu không, nó sẽ tra cứu cây từ thư mục hiện tại, cố gắng tìm phần trên 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 không có đố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 mô-đun phụ thuộc của chúng.
  • mmma - Xây dựng tất cả các mô-đun trong thư mục được cung cấp và các phần phụ thuộc của chúng.
  • croot - cd lên đầu cây.
  • clean - m clean xóa tất cả các tệp đầ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à m cung cấp.

Chạy bản dựng

Bạn có thể chạy bản dựng của mình trên trình mô phỏng 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 trong lunch nên mục tiêu đó khó có thể chạy trên mục tiêu khác với mục tiêu được xây dựng.

Flash bằng fastboot

Để flash thiết bị, hãy sử dụng fastboot , thiết bị này sẽ đượ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ị để biết hướng dẫn.

Giả lập thiết bị Android

Trình mô phỏng được tự động thêm vào đường dẫn của bạn trong quá trình xây dựng. Để chạy trình mô phỏng, gõ:

emulator

Hiểu dấu vân tay xây dựng

Để theo dõi và báo cáo các sự cố liên quan đến một bản dựng Android cụ thể, điều quan trọng là phải hiểu dấu vân tay của bản dựng. Dấu vân tay bản dựng là một chuỗi duy nhất mà con người có thể đọc được, chứa thông tin nhà sản xuất cấp cho mỗi bản dựng. Xem mô tả VÂN TAY trong phần Tham số bản dựng của Tài liệu Định nghĩa Tương thích Android (CDD) để biết cú pháp chính xác.

Dấu vân tay bản dựng thể hiện việc triển khai và sửa đổi Android cụ thể. Khóa duy nhất này cho phép các nhà phát triển ứng dụng và những người khác báo cáo sự cố với các phiên bản chương trình cơ sở cụ thể. Xem Báo cáo lỗi cho quy trình báo cáo sự cố của Android.

Dấu vân tay bản dựng gói gọn tất cả chi tiết triển khai Android:

  • API: Android và các hành vi API gốc cũng như API mềm
  • API lõi và một số hành vi giao diện người dùng hệ thống
  • Các yêu cầu về tính tương thích và bảo mật được xác định trong CDD
  • Thông số kỹ thuật của sản phẩm và cài đặt tính năng sử dụng được ứng dụng sử dụng để nhắm mục tiêu các thiết bị đáp ứng yêu cầu dự kiến
  • Triển khai các thành phần phần cứng và phần mềm

Xem CDD để biết chi tiết đầy đủ và Thêm thiết bị mới để biết hướng dẫn tạo thiết bị Android hoàn toàn mới.

Khắc phục sự cố cá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 nhất quán với phiên bản Java của mình, make hủy bỏ bằng 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à những nguyên nhân và giải pháp có thể xảy ra:

  • Không cài đặt đúng JDK như được chỉ định trong các yêu cầu của 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. 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 đề.

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ổng USB. Nếu bạn thấy lỗi từ chối cấp phép, hãy làm theo hướng dẫn trong Định cấu hình quyền truy cập USB .

Nếu ADB đã 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.