Tải xuống nguồn

Cây nguồn Android nằm trong kho lưu trữ Git do Google lưu trữ. Kho lưu trữ Git bao gồm siêu dữ liệu cho nguồn Android, bao gồm các thay đổi đối với nguồn và thời điểm thực hiện các thay đổi. Trang này mô tả cách tải xuống cây nguồn cho một dòng mã Android cụ thể.

Để bắt đầu với hình ảnh xuất xưởng cho một thiết bị cụ thể thay vì tải xuống nguồn, hãy xem Chọn bản dựng thiết bị .

Khởi tạo ứng dụng khách Repo

Sau khi cài đặt Trình khởi chạy kho, hãy thiết lập ứng dụng khách của bạn để truy cập vào kho nguồn Android:

  1. Tạo một thư mục trống để chứa các tệp làm việc của bạn. Đặt cho nó bất kỳ tên nào bạn thích:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. Định cấu hình Git với tên thật và địa chỉ email của bạn. Để sử dụng công cụ xem xét mã Gerrit, bạn cần có địa chỉ email được kết nối với tài khoản Google đã đăng ký . Đảm bảo rằng đây là địa chỉ trực tiếp nơi bạn có thể nhận tin nhắn. Tên mà bạn cung cấp ở đây hiển thị trong ghi nhận tác giả cho các lần gửi mã của bạn.

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. Chạy repo init để tải phiên bản Repo mới nhất với các bản sửa lỗi gần đây nhất. Bạn phải chỉ định một URL cho tệp kê khai, chỉ định nơi đặt các kho lưu trữ khác nhau có trong nguồn Android trong thư mục làm việc của bạn.

    repo init -u https://android.googlesource.com/platform/manifest
    

    Để kiểm tra nhánh chính:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    

    Để kiểm tra một nhánh khác với nhánh chính , hãy chỉ định nó bằng -b . Để biết danh sách các nhánh, hãy xem Các thẻ và bản dựng mã nguồn .

    Đối với Python 2

    Đối với Python 3

    Nếu bạn nhận được thông báo lỗi " /usr/bin/env 'python' no such file or directory ", hãy sử dụng một trong các giải pháp sau:

    Nếu Ubuntu 20.04.2 LTS của bạn là phiên bản Linux mới được cài đặt (so với nâng cấp):

    sudo ln -s /usr/bin/python3 /usr/bin/python

    Nếu sử dụng Git phiên bản 2.19 trở lên, bạn có thể chỉ định --partial-clone khi thực hiện repo init . Điều này sử dụng khả năng sao chép một phần của Git để chỉ tải xuống các đối tượng Git khi cần thiết, thay vì tải xuống mọi thứ. Bởi vì việc sử dụng bản sao một phần có nghĩa là nhiều hoạt động phải giao tiếp với máy chủ, hãy sử dụng cách sau nếu bạn là nhà phát triển và bạn đang sử dụng mạng có độ trễ thấp:

    repo init -u https://android.googlesource.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M
    

    Chỉ dành cho HĐH Windows: nếu bạn nhận được thông báo lỗi cho biết không thể tạo liên kết tượng trưng, ​​khiến repo init không thành công, hãy tham khảo tài liệu GitHub Symbolic Links để tạo các liên kết này hoặc để kích hoạt hỗ trợ của chúng. Đối với những người không phải là quản trị viên, hãy xem phần Cho phép những người không phải là quản trị viên tạo liên kết tượng trưng .

Quá trình khởi tạo thành công kết thúc bằng một thông báo cho biết Repo được khởi tạo trong thư mục làm việc của bạn. Thư mục khách hàng của bạn bây giờ chứa một thư mục .repo nơi các tệp như tệp kê khai được lưu giữ.

Tải xuống cây nguồn Android

Để tải cây nguồn Android xuống thư mục làm việc của bạn từ kho lưu trữ như được chỉ định trong tệp kê khai mặc định, hãy chạy:

repo sync

Để tăng tốc độ đồng bộ hóa, hãy chuyển cờ số lượng luồng -c (nhánh hiện tại) và -j threadcount :

repo sync -c -j8

Các tệp nguồn Android được tải xuống trong thư mục làm việc của bạn dưới tên dự án của chúng.

Để chặn đầu ra, hãy chuyển cờ -q (yên tĩnh). Xem Tham chiếu Lệnh Repo để biết tất cả các tùy chọn.

Sử dụng xác thực

Theo mặc định, quyền truy cập vào mã nguồn Android là ẩn danh. Để bảo vệ máy chủ khỏi việc sử dụng quá mức, mỗi địa chỉ IP được liên kết với một hạn ngạch.

Khi chia sẻ địa chỉ IP với người dùng khác (ví dụ: khi truy cập kho nguồn từ bên ngoài tường lửa NAT), hạn ngạch có thể kích hoạt ngay cả đối với các kiểu sử dụng thông thường (ví dụ: nếu nhiều người dùng đồng bộ hóa máy khách mới từ cùng một địa chỉ IP trong một thời gian ngắn).

Trong trường hợp đó, bạn có thể sử dụng quyền truy cập đã xác thực, sau đó sử dụng hạn ngạch riêng cho mỗi người dùng, bất kể địa chỉ IP.

Đầu tiên, tạo mật khẩu bằng trình tạo mật khẩu và làm theo hướng dẫn trên trang tạo mật khẩu.

Tiếp theo, buộc quyền truy cập đã xác thực bằng cách sử dụng URI kê khai https://android.googlesource.com/a/platform/manifest . Lưu ý cách tiền tố thư mục /a/ kích hoạt xác thực bắt buộc. Bạn có thể chuyển đổi một ứng dụng khách hiện có để sử dụng xác thực bắt buộc bằng lệnh sau:

repo init -u https://android.googlesource.com/a/platform/manifest

Khắc phục sự cố mạng

Khi tải xuống từ phía sau một proxy (phổ biến trong một số môi trường công ty), bạn có thể cần chỉ định rõ ràng proxy để Repo sử dụng:

export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

Hiếm khi hơn, các máy khách Linux gặp sự cố kết nối, bị kẹt ở giữa quá trình tải xuống (thường là trong khi nhận các đối tượng ). Điều chỉnh cài đặt của ngăn xếp TCP / IP và sử dụng các lệnh không song song có thể cải thiện tình hình. Bạn phải có quyền truy cập root để sửa đổi cài đặt TCP:

sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1

Sử dụng gương cục bộ

Khi sử dụng một số máy khách, đặc biệt là trong các tình huống băng thông khan hiếm, tốt hơn nên tạo một bản sao cục bộ của toàn bộ nội dung máy chủ và đồng bộ hoá các máy khách từ máy khách đó (không yêu cầu truy cập mạng). Tải xuống cho một máy nhân bản đầy đủ nhỏ hơn tải xuống cho hai ứng dụng khách và nó chứa nhiều thông tin hơn.

Các hướng dẫn này giả định rằng gương được tạo trong /usr/local/aosp/mirror . Đầu tiên, tạo và đồng bộ hóa chính gương. Lưu ý cờ --mirror , bạn chỉ có thể chỉ định khi tạo một ứng dụng khách mới:

mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync

Khi máy nhân bản được đồng bộ hóa, bạn có thể tạo khách hàng mới từ nó. Lưu ý rằng bạn phải chỉ định một đường dẫn tuyệt đối:

mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync

Cuối cùng, để đồng bộ máy khách với máy chủ, hãy đồng bộ máy nhân bản với máy chủ, sau đó đồng bộ máy khách với máy chủ:

cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
repo sync

Có thể lưu trữ máy nhân bản trên một máy chủ LAN và truy cập nó qua NFS, SSH hoặc Git. Cũng có thể lưu trữ nó trên một ổ đĩa di động và chuyển ổ đĩa đó cho người dùng hoặc máy móc.

Xác minh thẻ Git

Tải khóa công khai sau vào cơ sở dữ liệu khóa GnuPG của bạn. Khóa được sử dụng để ký các thẻ được chú thích đại diện cho các bản phát hành.

gpg --import

Sao chép và dán khóa bên dưới, sau đó gõ EOF ( Ctrl-D ) để kết thúc quá trình nhập và xử lý khóa.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

Sau khi nhập khóa, bạn có thể xác minh bất kỳ thẻ nào bằng:

git tag -v TAG_NAME

Nhận các tệp nhị phân độc quyền

Không thể sử dụng AOSP chỉ từ mã nguồn thuần túy và yêu cầu các thư viện độc quyền liên quan đến phần cứng bổ sung để chạy, chẳng hạn như để tăng tốc đồ họa phần cứng. Xem các phần bên dưới để biết liên kết tải xuống và Mã nhị phân thiết bị để biết thêm tài nguyên.

Tải xuống các tệp nhị phân độc quyền

Bạn có thể tải xuống các tệp nhị phân chính thức cho các thiết bị được hỗ trợ chạy các nhánh phát hành AOSP được gắn thẻ từ trình điều khiển của Google . Các mã nhị phân này bổ sung quyền truy cập vào các khả năng bổ sung của phần cứng với mã nguồn không phải là mã nguồn mở. Để xây dựng nhánh chính AOSP, hãy sử dụng Bản xem trước Binaries thay thế. Khi xây dựng nhánh chính cho một thiết bị, hãy sử dụng mã nhị phân cho bản phát hành được đánh số gần đây nhất hoặc với ngày gần đây nhất.

Trích xuất các tệp nhị phân độc quyền

Mỗi bộ mã nhị phân đi kèm như một tập lệnh tự giải nén trong một kho lưu trữ nén. Giải nén từng kho lưu trữ, chạy tập lệnh tự giải nén được bao gồm từ gốc của cây nguồn, sau đó xác nhận rằng bạn đồng ý với các điều khoản của thỏa thuận cấp phép kèm theo. Các tệp nhị phân và các tệp trang điểm phù hợp của chúng được cài đặt trong vendor/ hệ thống phân cấp của cây nguồn.

Dọn dẹp

Để đảm bảo các tệp nhị phân mới được cài đặt được tính đến đúng cách sau khi được giải nén, hãy xóa đầu ra hiện có của bất kỳ bản dựng trước nào bằng cách sử dụng:

make clobber