We use cookies on this site to enhance your user experience. By using this site, you are giving your consent for us to set cookies.


Vision

  • Starting point is the latest vanilla google AAOS emulator.
  • We shall not fork and modify any upstream repositories unless absolutely necessary.
    Instead, we shall use overlays (both compile and runtime), Soong "overrides" directive, and define new devices to avoid modifying upstream as much as possible.
    Also see: https://fosdem.org/2025/schedule/event/fosdem-2025-6326-forking-android-considered-harmful/
  • We work together in distributed fashion on making necessary changes, such as:
  • Each change is peer-reviewed, and (automatically) verified for at least "build succeeded" (by build host), and "BOOT_COMPLETED" achieved (by test host), before being merged.
  • Tagged versions of emulator are automatically released by CI to binary repository (CD) and are directly available publicly (we can also consider publishing latest "development" version automatically).

General requirements

  • Team Size
    • ~1-5 people working on it at the same time.
  • Source code hosting
    • ~5-20 repositories.
    • Not expected to be checked out many times, mostly for those who actually work on it and by CI server.
  • Code review
  • CI Server
    • Any typical CI server which can connect Gerrit or GitHub, and Binary Storage solutions.
  • Build host
    • See https://source.android.com/docs/setup/start/requirements
    • To build AOSP today we need at least 500GB of fast storage and minimum of 64GB RAM.
    • For each additional version or "flavor" of emulator we would need 500GB storage and separate build directory.
    • The server should run latest Ubuntu LTS (also headless).
  • Test host (for starters we can run tests directly on build host, but it would be good to split responsibilities).
  • Binary repository
    • ~100 GB should be good for starters (storing all releases and temporary build artifacts)
    • One emulator archive with Android 14 is ~2 GB, it is only going to grow. Note: in GitHub, each individual file must be smaller than 2 GiB (https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases#storage-and-bandwidth-quotas), which could be easily exceeded with emulator.
    • We would need to store binaries for all releases: at least 3 latest versions (e.g., Android 13, Android 14, Android 15). Maybe also adding flavors to each version in future (with/without additional services).
    • Also all artifacts from pending PRs should be stored there

Preferred options

  • Code Review System
    • COVESA Github
  • Source Code Hosting
    • COVESA Github
  • CI
  • Build host
    • COVESA VM
    • alternatively Crave.io for FOSS maybe possible, need to ask them
  • Test host
    • COVESA VM
    • maaaybee also ask Crave.io, but that would be a stretch
  • Binary hosting for releases and finished builds
    • no preference, ideally a highly available trusted source

Notable examples of similar infrastructures

LineageOS

LineageOS is an Open-Source AOSP-based project with a rich history and huge codebase.

It uses Gerrit (self-hosted) for code-review. For such a scale and amount of things Lineage is doing it is essential.

Their Gerrit replicates all repositories to GitHub, which gives 2 advantages which are possibly irrelevant for us:

  • scale (less traffic to their Gerrit server, less load),
  • backup of repositories and all Gerrit data (since Gerrit v3).

Snapp Automotive

Snapp is distributing non-GAS AAOS Emulators since several versions of Android.

Everything is done in Github, no Gerrit is needed. The reasoning is that the number of cross-repo changes for such a product is too small to justify added complexity. Using a single well-established tool also increases a likelihood of external contributions.

https://github.com/snappautomotive


  • No labels