2015-02-07 28 views
7

Próbuję nauczyć się wbudowanego Androida na podstawie książki o tej samej nazwie. I autor zasugerował współpracę z gałęzią z piernika AOSP. Więc poszedłem do źródła:Synchronizacja z repozytorium AOSP trwa zbyt długo

$ repo init -u https://android.googlesource.com/platform/manifest.git 
-b gingerbread 

$ repo sync 

Ale to trwa zbyt długo. Również z wyjścia, wydaje mi się, że to także pobieranie kodu źródłowego z innych gałęzi (widzę android-5 .....), co nie jest tym, czego chcę. Zastanawiam się, czy to dlatego tak długo.

Czy ktoś miał ten sam problem? Proszę, daj mi sugestię! Dzięki!

+0

pokrewne: https://superuser.com/questions/603547/how-can-i-limi-i-imi-size-of-the-android-source-i-need-to-download-with-repo-syn –

Odpowiedz

16

AOSP to pobieranie wielu gigabajtów, więc nie można zrobić zbyt wiele. Jednakże przekazanie opcji -c/--current-branch do repo sync powoduje, że funkcja Repo informuje program Git, aby pobierał tylko gałąź, której naprawdę potrzebujesz, zamiast wszystkich gałęzi każdego repozytorium. Ze starym wydawnictwem takim jak Gingerbread powinno to teoretycznie być całkiem korzystne. Jednak Repo wysiewa repozytoria z pakietami Git, które pobiera za pośrednictwem protokołu HTTP, a pliki pakietu nie są objęte opcją -c. Korzystanie z --no-clone-bundle wyłącza pliki pakunków. Stąd następujące polecenie Repo powinna przynieść najmniejszy pobrania: (. Należy pamiętać, że jest kilka Gingerbread letni uwolnienie To nie będzie działać po wyjęciu z pudełka na wiele nowego sprzętu.)

repo sync -c --no-clone-bundle 

+0

Ale jeśli podasz gałąź (np. Marshmallow), czy nie powinna ona pobierać innych gałęzi (nugat, piernik)? Na przykład, jeśli określisz manifest dla marshmallow z opcją -b? –

+0

@KaizerSozay: Tak, właśnie to próbuję powiedzieć. W '-c' pobierasz tylko potrzebne gałęzie. –

1
repo sync -c --no-tags --no-clone-bundle -j2 

Znacznie skraca czas synchronizacji.

+0

Ogólnie odpowiedzi są o wiele bardziej pomocne, jeśli zawierają wyjaśnienie, co ma zrobić polecenie i dlaczego rozwiązuje problem bez wprowadzania innych. Czy możesz rozwinąć działanie przełącznika '-j2' i jak to pomaga? –

+1

'-j' to przełącznik znany z' make', który ustawia liczbę zadań do wykorzystania (równoległość). '-j2' ustawia liczbę zadań na 2 (tj. używa 2 rdzeni). W Linuksie zwykle używamy '-j \' nproc \ '' lub '-j $ (getconf _NPROCESSORS_ONLN), aby automatycznie wykryć liczbę rdzeni. – pevik

0

repo init --depth 1

Jest to kolejna opcja, która może poprawić szybkość synchronizacji, jak powinien pobrać tylko najnowszą wersję repo.

Powiązane problemy