Cây nguồn Android được đặt 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 gốc 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 Repo Launcher , hãy thiết lập ứng dụng khách của bạn để truy cập kho nguồn Android:
Tạo một thư mục trống để chứa các tập tin 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
Định cấu hình Git bằng tên thật và địa chỉ email của bạn. Để sử dụng công cụ đánh giá 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 sẽ hiển thị trong phần phân bổ cho việc gửi mã của bạn.
git config --global user.name Your Name
git config --global user.email you@example.com
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 mới nhất. Bạn phải chỉ định một URL cho tệp kê khai, URL này chỉ định vị trí đặ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 chi nhánh chính:
repo init -u https://android.googlesource.com/platform/manifest -b main
Để kiểm tra một nhánh khác ngoài main , hãy chỉ định nhánh đó bằng
-b
. Để biết danh sách các nhánh, hãy xem Thẻ mã nguồn và bản dựng .Dành cho Python 2
Dành cho 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 phiên bản đã 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ệnrepo init
. Điều này tận 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, thay vì tải xuống mọi thứ. Bởi vì sử dụng bản sao một phần có nghĩa là nhiều thao tác 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à đang sử dụng mạng có độ trễ thấp:repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M
Chỉ dành cho hệ điều hành 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 cho
repo init
bị lỗi, hãy tham khảo tài liệu Liên kết tượng trưng GitHub để tạo các liên kết tượng trưng này hoặc để bật hỗ trợ cho chúng. Đối với những người không phải quản trị viên, hãy xem phần Cho phép người không phải 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 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 máy khách của bạn hiện chứa thư mục .repo
nơi lưu giữ các tệp như tệp kê khai.
Đang 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ờ -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, chuyển cờ -q
(im lặng). Xem Tài liệu tham khảo 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 bị 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 những người dùng khác (ví dụ: khi truy cập vào kho lưu trữ 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 được xác thực, sau đó sử dụng hạn ngạch riêng cho từng 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 được xác thực bằng cách sử dụng URI tệp 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áy khách hiện có sang 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 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 gặp hơn, máy khách Linux gặp phải sự cố kết nối, bị kẹt khi đang tải xuống (thường là trong khi nhận đố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 nhiều ứng dụng khách, bạn có thể tạo một bản sao cục bộ của toàn bộ nội dung máy chủ và đồng bộ hóa các máy khách từ bản sao đó (không yêu cầu truy cập mạng).
Các hướng dẫn này giả định rằng máy nhân bản được tạo trong /usr/local/aosp/mirror
. Đầu tiên, tạo và đồng bộ hóa bản thân máy nhân bản. Lưu ý cờ --mirror
, bạn chỉ có thể chỉ định cờ này khi tạo ứ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 ứng dụng khách 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/main
cd /usr/local/aosp/main
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync
Cuối cùng, để đồng bộ hóa máy khách với máy chủ, hãy đồng bộ hóa máy nhân bản với máy chủ, sau đó đồng bộ hóa máy khách với máy nhân bản:
cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/main
repo sync
Có thể lưu trữ máy nhân bản trên 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 đó giữa những người dùng hoặc máy móc.
Xác minh thẻ Git
Tải khóa chung 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ẻ chú thích đại diện cho các bản phát hành.
gpg --import
Sao chép và dán key bên dưới, sau đó gõ EOF
( Ctrl-D ) để kết thúc nhập và xử lý key.
-----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
Có được các tệp nhị phân độc quyền
AOSP không thể chỉ được sử dụng 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à Tệp nhị phân của 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 tệp nhị phân này thêm quyền truy cập vào các khả năng phần cứng bổ sung với mã nguồn không mở. Để xây dựng nhánh chính AOSP, thay vào đó hãy sử dụng Bản xem trước nhị phân . Khi xây dựng nhánh chính cho một thiết bị, hãy sử dụng các tệp nhị phân cho bản phát hành được đánh số gần đây nhất hoặc có ngày gần đây nhất.
Trích xuất các tệp nhị phân độc quyền
Mỗi bộ tệp nhị phân có dạng tập lệnh tự giải nén trong 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 đi kèm từ thư mục 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 tạo tệp phù hợp của chúng được cài đặt trong hệ thống phân cấp vendor/
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ài đặt được tính đến đúng cách sau khi được trích xuất, hãy xóa đầu ra hiện có của mọi bản dựng trước đó bằng cách sử dụng:
make clobber