Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Pobieranie źródła

Drzewo źródłowe Androida znajduje się w repozytorium Git obsługiwanym przez Google. Repozytorium Git zawiera metadane dla źródła systemu Android, w tym zmiany w źródle i datę wprowadzenia zmian. Ta strona opisuje, jak pobrać drzewo źródłowe dla określonej linii kodu systemu Android.

Aby rozpocząć od obrazu fabrycznego dla określonego urządzenia zamiast pobierania źródła, zobacz Wybieranie kompilacji urządzenia .

Inicjowanie klienta repo

Po zainstalowaniu programu uruchamiającego repozytorium skonfiguruj swojego klienta, aby uzyskać dostęp do repozytorium źródłowego Androida:

  1. Utwórz pusty katalog do przechowywania plików roboczych. Jeśli używasz macOS, musi to być system plików uwzględniający wielkość liter. Nadaj mu dowolną nazwę:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. Skonfiguruj Git, używając swojego prawdziwego imienia i nazwiska oraz adresu e-mail. Aby skorzystać z narzędzia do sprawdzania kodu Gerrit, potrzebujesz adresu e-mail połączonego z zarejestrowanym kontem Google . Upewnij się, że jest to aktywny adres, na który możesz odbierać wiadomości. Nazwa, którą tu podasz, pojawia się w atrybutach dla przesłanego kodu.

    git config --global user.name "Your Name"
    git config --global user.email "you@example.com"
    
  3. Uruchom repo init aby uzyskać najnowszą wersję Repo z najnowszymi poprawkami błędów. Musisz określić adres URL manifestu, który określa, gdzie w katalogu roboczym znajdują się różne repozytoria zawarte w źródle systemu Android.

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

    Uwaga: jeśli repo init nie powiedzie się w systemie macOS z powodu błędu certyfikatu, może być konieczne uruchomienie najpierw:

    # macOS only
    open /Applications/Python\ 3.6/Install\ Certificates.command
    

    Aby wypisać gałąź inną niż master , określ ją za pomocą -b . Aby uzyskać listę gałęzi, zobacz Tagi i kompilacje kodu źródłowego .

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

Jeśli używasz Git w wersji 2.19 lub nowszej, możesz określić --partial-clone podczas wykonywania repo init co wykorzysta możliwość częściowego klonowania Git, która pobiera obiekty Git tylko wtedy, gdy jest to potrzebne, zamiast pobierać wszystko. Ponieważ używanie częściowych klonów oznacza, że ​​wiele operacji musi komunikować się z serwerem, jest to zalecane dla programistów korzystających z sieci o małych opóźnieniach:

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

Pomyślna inicjalizacja kończy się komunikatem informującym, że repozytorium zostało zainicjowane w katalogu roboczym. Twój katalog klienta powinien teraz zawierać katalog .repo którym przechowywane są pliki, takie jak manifest.

Pobieranie drzewa źródłowego Androida

Aby pobrać drzewo źródłowe Androida do katalogu roboczego z repozytoriów, jak określono w domyślnym manifeście, uruchom:

repo sync

Pliki źródłowe systemu Android znajdują się w katalogu roboczym pod nazwami projektów. Aby przyspieszyć synchronizację, użyj flagi -j threadcount . Rozważ także dodanie -qc aby przeprowadzić tylko cichą, bieżącą synchronizację gałęzi. Więcej informacji można znaleźć w podręczniku Repo Command Reference .

Korzystanie z uwierzytelniania

Domyślnie dostęp do kodu źródłowego Androida jest anonimowy. Aby chronić serwery przed nadmiernym użyciem, każdy adres IP jest powiązany z przydziałem.

Podczas udostępniania adresu IP innym użytkownikom (na przykład podczas uzyskiwania dostępu do repozytoriów źródłowych spoza zapory NAT) przydziały mogą wyzwalać się nawet w przypadku wzorców regularnego użytkowania (na przykład, jeśli wielu użytkowników synchronizuje nowych klientów z tego samego adresu IP w obrębie krótki okres).

W takim przypadku można skorzystać z dostępu uwierzytelnionego, który następnie używa oddzielnego przydziału dla każdego użytkownika, niezależnie od adresu IP.

Pierwszym krokiem jest utworzenie hasła za pomocą generatora haseł i wykonanie instrukcji na stronie generatora haseł.

Drugim krokiem jest wymuszenie dostępu uwierzytelnionego przy użyciu identyfikatora URI manifestu https://android.googlesource.com/a/platform/manifest . Zwróć uwagę, jak prefiks /a/ directory wyzwala obowiązkowe uwierzytelnianie. Możesz przekonwertować istniejącego klienta, aby korzystał z obowiązkowego uwierzytelniania za pomocą następującego polecenia:

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

Rozwiązywanie problemów z siecią

Podczas pobierania zza serwera proxy (co jest powszechne w niektórych środowiskach korporacyjnych), może być konieczne jawne określenie serwera proxy, który jest następnie używany przez Repo:

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>

Rzadziej klienci Linuksa doświadczają problemów z łącznością, utknęli w środku pobierania (zwykle podczas odbierania obiektów ). Zgłoszono, że zmiana ustawień stosu TCP / IP i użycie poleceń nierównoległych może poprawić sytuację. Potrzebujesz uprawnień administratora, aby zmodyfikować ustawienie TCP:

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

Korzystanie z lokalnego lustra

W przypadku korzystania z kilku klientów, szczególnie w sytuacjach, gdy przepustowość jest ograniczona, lepiej jest utworzyć lokalne lustro całej zawartości serwera i zsynchronizować klientów z tego serwera lustrzanego (co nie wymaga dostępu do sieci). Pobieranie pełnego serwera lustrzanego jest mniejsze niż pobieranie dwóch klientów, ale zawiera więcej informacji.

Te instrukcje zakładają, że serwer lustrzany jest tworzony w /usr/local/aosp/mirror . Najpierw utwórz i zsynchronizuj samo lustro. Zwróć uwagę na flagę --mirror , którą możesz określić tylko podczas tworzenia nowego klienta:

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

Gdy serwer lustrzany jest zsynchronizowany, można z niego tworzyć nowych klientów. Pamiętaj, że ważne jest, aby określić ścieżkę bezwzględną:

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

Na koniec, aby zsynchronizować klienta z serwerem, zsynchronizuj serwer lustrzany z serwerem, a następnie klient z serwerem:

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

Istnieje możliwość przechowywania kopii lustrzanej na serwerze LAN i uzyskiwania do niej dostępu przez NFS, SSH lub Git. Możliwe jest również przechowywanie go na dysku wymiennym i przekazywanie go użytkownikom lub komputerom.

Weryfikacja tagów Git

Załaduj następujący klucz publiczny do bazy danych kluczy GnuPG. Klucz służy do podpisywania oznaczonych tagów, które reprezentują wydania.

gpg --import

Skopiuj i wklej poniższy klucz, a następnie wpisz EOF ( Ctrl-D ), aby zakończyć wprowadzanie i przetworzyć klucze.

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

Po zaimportowaniu kluczy możesz zweryfikować dowolny tag za pomocą:

git tag -v TAG_NAME

Uzyskaj zastrzeżone pliki binarne

AOSP nie może być używany tylko z czystego kodu źródłowego i wymaga do uruchomienia dodatkowych zastrzeżonych bibliotek sprzętowych, takich jak sprzętowe przyspieszanie grafiki. W poniższych sekcjach znajdują się łącza do pobierania i pliki binarne urządzeń, aby uzyskać dodatkowe zasoby.

Pobierz zastrzeżone pliki binarne

Możesz pobrać oficjalne pliki binarne dla obsługiwanych urządzeń z oznaczonymi gałęziami wydania AOSP ze sterowników Google . Te pliki binarne zapewniają dostęp do dodatkowych możliwości sprzętowych za pomocą kodu innego niż open source. Aby zbudować główną gałąź AOSP, użyj zamiast tego podglądu plików binarnych. Budując gałąź główną dla urządzenia, użyj plików binarnych dla najnowszej numerowanej wersji lub z najnowszą datą.

Wyodrębnij zastrzeżone pliki binarne

Każdy zestaw plików binarnych jest dostarczany jako samorozpakowujący się skrypt w skompresowanym archiwum. Zdekompresuj każde archiwum, uruchom dołączony skrypt samorozpakowujący z katalogu głównego drzewa źródłowego, a następnie potwierdź, że zgadzasz się na warunki załączonej umowy licencyjnej. Pliki binarne i odpowiadające im pliki makefile zostaną zainstalowane w vendor/ hierarchii drzewa źródłowego.

Sprzątać

Aby upewnić się, że nowo zainstalowane pliki binarne są prawidłowo brane pod uwagę po rozpakowaniu, usuń istniejące dane wyjściowe każdej poprzedniej kompilacji, używając:

make clobber