Google 致力于为黑人社区推动种族平等。查看具体举措
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 Androida.

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

Inicjowanie klienta repozytorium

Po zainstalowaniu Repo Launchera skonfiguruj swojego klienta, aby uzyskać dostęp do źródłowego repozytorium 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 przeglądania 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 podajesz, pojawia się w atrybutach dla przesłanych przez Ciebie kodów.

    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
    

    Aby sprawdzić gałąź główną:

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

    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 .

    Tylko dla macOS: jeśli repo init nie powiedzie się w systemie macOS z powodu błędu certyfikatu, może być konieczne wykonanie następujących czynności:

    open /Applications/Python\ 3.6/Install\ Certificates.command
    
  4. Jeśli używasz Git w wersji 2.19 lub nowszej, możesz określić --partial-clone podczas wykonywania repo init . Wykorzystuje to możliwość częściowego klonowania Git, aby pobierać obiekty Git tylko wtedy, gdy są potrzebne, zamiast pobierać wszystko. Ponieważ używanie częściowych klonów oznacza, że ​​wiele operacji musi komunikować się z serwerem, jeśli jesteś programistą i korzystasz z sieci o małych opóźnieniach, użyj następujących wskazówek:

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

    Tylko dla systemu operacyjnego Windows: jeśli pojawi się komunikat o błędzie informujący, że nie można utworzyć dowiązań symbolicznych, co powoduje niepowodzenie repo init zapoznaj się z dokumentacją GitHub Symbolic Links, aby je utworzyć lub włączyć ich obsługę. W przypadku użytkowników niebędących administratorami zobacz sekcję Zezwalanie osobom niebędącym administratorami na tworzenie dowiązań symbolicznych .

Pomyślna inicjalizacja kończy się komunikatem informującym, że repozytorium zostało zainicjowane w katalogu roboczym. Twój katalog klienta zawiera teraz 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 określonych w domyślnym manifeście, uruchom:

repo sync

Aby przyspieszyć synchronizację, -j threadcount flagi -c (bieżąca gałąź) i -j threadcount :

repo sync -c -j8

Pliki źródłowe systemu Android są pobierane do katalogu roboczego pod ich nazwami projektów.

Aby powstrzymać wyjście, przekaż flagę -q (cicho). Wszystkie opcje znajdują się 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 przy wzorcach regularnego użytkowania (na przykład, jeśli wielu użytkowników synchronizuje nowych klientów z tego samego adresu IP w 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.

Najpierw utwórz hasło za pomocą generatora haseł i postępuj zgodnie z instrukcjami na stronie generatora haseł.

Następnie wymuś dostęp uwierzytelniony za pomocą 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 do użycia 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 ). Sytuację można poprawić, dostosowując ustawienia stosu TCP / IP i używając poleceń nierównoległych. Musisz mieć uprawnienia administratora, aby zmodyfikować ustawienie TCP:

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

Korzystanie z lokalnego serwera lustrzanego

W przypadku korzystania z kilku klientów, zwłaszcza w sytuacjach, w których 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 i 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 na jego podstawie tworzyć nowych klientów. Pamiętaj, że musisz 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. Zobacz poniższe sekcje, aby uzyskać linki 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 tagowanymi 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 są instalowane 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