19
votes

I'm trying to learn Embedded Android from the book with the same name. And the author suggested working with AOSP gingerbread branch. So I followed to download the source:

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

$ repo sync

But it's taking too long. Also from the output, it seems to me like it's also downloading source code from other branches (I see android-5.....) which is not what I want. I'm wondering if that's the reason why it takes so long.

Has anybody had the same problem? Please give me a suggestion! Thanks!

4
At the time of writing you need about 400GB of disk space to checkout the code and make one build. For additional builds more disk space is required. I'd expect this to grow by 50-100GB per year. But that's just a wild guess.Forivin

4 Answers

35
votes

AOSP is a multi-gigabyte download so there's not that much you can do. However, passing the -c/--current-branch option to repo sync causes Repo to tell Git to only fetch the branch you really need instead of all branches of each repository. With an old release like Gingerbread this should theoretically be quite beneficial. However, Repo seeds the repositories with Git bundles that it downloads via HTTP, and the bundle files aren't affected by the -c option. Using --no-clone-bundle disables the bundle files. Hence the following Repo command should yield the smallest download:

repo sync -c --no-clone-bundle

(Keep in mind that Gingerbread is a several year old release. It won't work out of the box on a lot of recent hardware.)

12
votes

You should use this commands:

Example: for my personal AOSP Repo,

repo init --depth=1 -u https://github.com/zawzaww/aosp-android.git -b android-8.1.0

and then,

repo sync  -f --force-sync --no-clone-bundle --no-tags -j$(nproc --all)

You can learn more on my GitHub Repo

6
votes
repo sync -c --no-tags --no-clone-bundle -j2

Shortens my sync times greatly.