Pobieranie źródła

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

Na początek obrazu fabrycznego dla konkretnego urządzenia, zamiast pobierania źródła, zobacz Wybieranie budować urządzenia .

Inicjowanie klienta Repo

Po zainstalowaniu Launchera Repo , skonfigurować klienta, aby uzyskać dostęp do repozytorium źródłowego Androida:

  1. Utwórz pusty katalog do przechowywania plików roboczych. 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 użyć narzędzia kodu Gerrit opinię, musisz adres e-mail, który jest połączony z zarejestrowanym kontem Google . Upewnij się, że jest to adres na żywo, pod którym możesz odbierać wiadomości. Podana tutaj nazwa pojawia się w atrybucjach przesłanych przez Ciebie kodów.

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. Run repo init aby pobrać najnowszą wersję Repo z jego najnowszych poprawek. 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łąź master:

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

    Aby sprawdzić oddział innego niż kapitan, określić go -b . Aby uzyskać listę oddziałów, patrz Źródło tagów kod i buduje .

    Dla Pythona 2

    Dla Pythona 3

    Jeśli pojawi się „ /usr/bin/env 'python' no such file or directory ” komunikat o błędzie, jeden zastosowanie następujących rozwiązań:

    Jeśli Ubuntu 20.04.2 LTS jest nowo zainstalowany (w porównaniu z zmodernizowane) wersja Linux:

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

    W przypadku korzystania z Git wersji 2.19 lub wyższa, można określić --partial- clone przy wykonywaniu repo init . To sprawia, że korzystać z git w częściowym klonie możliwością pobrania Git tylko obiektów, gdy są potrzebne, zamiast pobierać wszystko. Ponieważ używanie częściowych klonów oznacza, że ​​wiele operacji musi komunikować się z serwerem, skorzystaj z poniższych wskazówek, jeśli jesteś programistą i korzystasz z sieci z małymi opóźnieniami:

    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 dowiązania symboliczne nie może być utworzone, powodując repo init na niepowodzenie, odwołać GitHub linki symboliczne dokumentacji do tworzenia tych, lub w celu umożliwienia ich poparcie. Tylko dla administratorów, zobacz Zezwalanie nie-administratorom tworzyć dowiązania symboliczne sekcję.

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

Pobieranie drzewa źródłowego Androida

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

repo sync

Do synchronizacji prędkości zdać -c (prądowym) oraz -j threadcount flagi:

repo sync -c -j8

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

Do wyjścia stłumić, przekaż -q flagę (cicho). Zobacz Repo poleceń dla wszystkich opcji.

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

Podczas współdzielenia adresu IP z innymi użytkownikami (na przykład podczas uzyskiwania dostępu do repozytoriów źródłowych spoza zapory NAT), przydziały mogą zostać uruchomione nawet w przypadku regularnych wzorców użytkowania (na przykład, jeśli wielu użytkowników synchronizuje nowych klientów z tego samego adresu IP w ramach jednego krótki okres).

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

Po pierwsze, należy utworzyć hasło z generatora haseł i postępuj zgodnie z instrukcjami na stronie generator haseł.

Następnie siła uwierzytelniony dostęp za pomocą URI manifest https://android.googlesource.com/a/platform/manifest . Wskazówki, jak /a/ prefiks wyzwalacze obowiązkowe uwierzytelniania katalogu. Istniejącego klienta można przekonwertować tak, aby używał uwierzytelniania obowiązkowego 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 wyraźne określenie serwera proxy, którego ma używać 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, Linux Problemy z łącznością klienci doświadczają, utknięcie w środku download (zazwyczaj podczas otrzymujących obiektów). Dostosowanie ustawień stosu TCP/IP i użycie nierównoległych poleceń może poprawić sytuację. Aby zmodyfikować ustawienia TCP, musisz mieć uprawnienia administratora:

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

Korzystanie z lokalnego lustra

W przypadku korzystania z kilku klientów, zwłaszcza w sytuacjach, gdy przepustowość jest ograniczona, lepiej jest utworzyć lokalną kopię lustrzaną całej zawartości serwera i synchronizować klientów z tego dublowania (co nie wymaga dostępu do sieci). Pobieranie pełnego obrazu lustrzanego jest mniejsze niż pobranie dwóch klientów i zawiera więcej informacji.

Te instrukcje zakładają, że lustro jest tworzony w /usr/local/aosp/mirror . Najpierw utwórz i zsynchronizuj samo lustro. Zauważ --mirror flag, które można 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 dublowanie jest zsynchronizowane, możesz z niego 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 dublowanie z serwerem, a następnie klienta z dublowaniem:

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

Możliwe jest przechowywanie kopii lustrzanej na serwerze LAN i dostęp do niej przez NFS, SSH lub Git. Możliwe jest również przechowywanie go na dysku wymiennym i przekazywanie go między użytkownikami lub maszynami.

Weryfikowanie tagów Git

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

gpg --import

Kopiuj i wklej poniższy przycisk, a następnie wpisz EOF (Ctrl + D) aby zakończyć wprowadzanie i przetwarzanie kluczy.

-----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, własnościowych bibliotek sprzętowych, takich jak sprzętowa akceleracja grafiki. Zobacz poniższe sekcje linki do pobrania i plików binarnych urządzeń dodatkowych zasobów.

Pobierz zastrzeżone pliki binarne

Można pobrać oficjalne pliki binarne dla obsługiwanych urządzeń z systemem oddziały znakowany zwalniające AOSP z kierowców Google . Te pliki binarne zapewniają dostęp do dodatkowych możliwości sprzętowych z kodem innym niż open source. Aby zbudować gałąź master AOSP użyj Binaries Podgląd zamiast. Przy budowie oddziału głównego za pomocą urządzenia, należy binaria dla najnowszego wydania numerowanej 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. Rozpakuj każde archiwum, uruchom dołączony samorozpakowujący się skrypt z katalogu głównego drzewa źródłowego, a następnie potwierdź, że zgadzasz się z warunkami załączonej umowy licencyjnej. Pliki binarne i ich dopasowywania makefile są instalowane w vendor/ hierarchii drzewa źródłowego.

Sprzątać

Aby upewnić się, że nowo zainstalowane pliki binarne są poprawnie brane pod uwagę po wyodrębnieniu, usuń istniejące dane wyjściowe poprzedniej kompilacji, używając:

make clobber