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.
Aby rozpocząć od obrazu fabrycznego określonego urządzenia zamiast pobierać źródło, zobacz Wybieranie kompilacji urządzenia .
Inicjowanie klienta Repo
Po zainstalowaniu Repo Launcher skonfiguruj swojego klienta, aby uzyskać dostęp do repozytorium źródłowego Androida:
Utwórz pusty katalog do przechowywania plików roboczych. Nadaj mu dowolną nazwę:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
Skonfiguruj Git, używając swojego prawdziwego imienia i nazwiska oraz adresu e-mail. Aby korzystać z narzędzia do sprawdzania kodu Gerrit, potrzebujesz adresu e-mail połączonego 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
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łąź master:
repo init -u https://android.googlesource.com/platform/manifest -b master
Aby pobrać gałąź inną niż master , określ ją za pomocą
-b
. Aby uzyskać listę gałęzi, zobacz Tagi kodu źródłowego i kompilacje .Dla Pythona 2
Dla Pythona 3
Jeśli pojawi się komunikat o błędzie „
/usr/bin/env 'python' no such file or directory
„, użyj jednego z następujących rozwiązań:Jeśli twój Ubuntu 20.04.2 LTS jest nowo zainstalowaną (w porównaniu z uaktualnioną) wersją systemu Linux:
sudo ln -s /usr/bin/python3 /usr/bin/python
Jeśli używasz Git w wersji 2.19 lub nowszej, możesz określić
--partial-clone
podczas wykonywaniarepo init
. Dzięki temu korzysta się z możliwości 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, 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 nie można utworzyć dowiązań symbolicznych, powodując niepowodzenie
repo init
, zapoznaj się z dokumentacją GitHub Symbolic Links, aby je utworzyć lub włączyć ich obsługę. W przypadku osób niebędących administratorami zapoznaj się z sekcją Zezwalanie osobom niebędącym administratorami na tworzenie dowiązań symbolicznych .
Pomyślna inicjalizacja kończy się komunikatem informującym, że Repo zostało zainicjowane w twoim katalogu roboczym. Twój katalog klienta zawiera teraz katalog .repo
, 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
Aby przyspieszyć synchronizację, przekaż flagi -c
(bieżąca gałąź) i -j threadcount
:
repo sync -c -j8
Pliki źródłowe systemu Android są pobierane z katalogu roboczego pod ich nazwami projektów.
Aby pominąć wyjście, przekaż flagę -q
(cichy). 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 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.
Najpierw utwórz hasło za pomocą generatora haseł i postępuj zgodnie z instrukcjami na stronie generatora haseł.
Następnie wymuś uwierzytelniony dostęp za pomocą identyfikatora URI manifestu https://android.googlesource.com/a/platform/manifest
. Zwróć uwagę, jak prefiks katalogu /a/
wyzwala obowiązkowe uwierzytelnianie. 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 klienci Linuxa doświadczają problemów z łącznością, utykając w połowie pobierania (zwykle podczas odbierania 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 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 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
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, własnościowych bibliotek sprzętowych, takich jak sprzętowa akceleracja grafiki. Zobacz poniższe sekcje, aby uzyskać łącza do pobierania i pliki binarne urządzenia , aby uzyskać dodatkowe zasoby.
Pobierz zastrzeżone pliki binarne
Oficjalne pliki binarne dla obsługiwanych urządzeń z oznaczonymi gałęziami wersji AOSP można pobrać ze sterowników Google . Te pliki binarne zapewniają dostęp do dodatkowych możliwości sprzętowych z kodem innym niż open source. Aby zbudować główną gałąź AOSP, użyj podglądu plików binarnych. Tworząc główną gałąź dla urządzenia, użyj plików binarnych dla najnowszego wydania numerowanego 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 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ą poprawnie brane pod uwagę po wyodrębnieniu, usuń istniejące dane wyjściowe poprzedniej kompilacji, używając:
make clobber