Accelerating Android Releases:
An Unofficial Guide to Trunk Stable
FOSDEM 2025, Serban Constantinescu
About me ( serban@source.dev )
2
FOSDEM 2025
What is Trunk Stable? ( A new process to streamline dev and improve quality )
A new upstream Android development process where all releases are cut from
a single main development branch that must remain stable at all times.
It requires all new features to be flagged so that they can,
on a case-by-case basis, be included or excluded from a release.
3
FOSDEM 2025
Background: Old development model ( features, timeline )
4
Android X
is released
Android X +1
code freeze
Android X +1
development starts
Android X +1
is released
Timeline
FOSDEM 2025
Background: Old development model ( features, timeline )
Android X
is released
Android X +1
code freeze
Android X +1
development starts
Android X +1
is released
Many features
Features
Merged into the release branch
Timeline
Some features might have benefited from a longer development timeline
FOSDEM 2025
Background: Old development model ( features, timeline )
Android X
is released
Android X +1
code freeze
Android X +1
development starts
Android X +1
is released
Many features
Features
Merged into the release branch
Timeline
Some features might have benefited from a longer development timeline
Quality
🔥Stabilizing the codebase after release
🔥Quality drop during code freeze and early release
FOSDEM 2025
Background: Old development model ( features, timeline )
Android X
is released
Android X +1
code freeze
Android X +1
development starts
Android X +1
is released
Many features
✅Features
Merged into the release branch
✅Timeline
Some features might have benefited from a longer development timeline
❌Quality
🔥Stabilizing the codebase after release
🔥Quality drop during code freeze and early release
FOSDEM 2025
The new development model ( features, quality )
8
Timeline
Q1 Release
Q2 Major SDK Release
Q3 Release
Q4 Minor SDK
Release
Features only
APIs, features,
behaviour changes
APIs,
features
Features only
FOSDEM 2025
The new development model ( features, quality )
9
Timeline
Q1 Release
Q2 Major SDK Release
Q3 Release
Q4 Minor SDK
Release
Features
🏁 features
only
🏁 features
only
🏁 features
only
🏁 features
only
Unstable features remain flagged OFF until ready for release
Features only
APIs, features,
behaviour changes
APIs,
features
Features only
FOSDEM 2025
The new development model ( features, quality )
10
Timeline
Q1 Release
Q2 Major SDK Release
Q3 Release
Q4 Minor SDK
Release
Features
🏁 features
only
🏁 features
only
🏁 features
only
🏁 features
only
Unstable features remain flagged OFF until ready for release
Quality
✔️ Stable quality most times!
Features only
APIs, features,
behaviour changes
APIs,
features
Features only
FOSDEM 2025
The new development model ( features, quality )
11
☑️Timeline
Q1 Release
Q2 Major SDK Release
Q3 Release
Q4 Minor SDK
Release
✅Features
🏁 features
only
🏁 features
only
🏁 features
only
🏁 features
only
Unstable features remain flagged OFF until ready for release
✅Quality
✔️ Stable quality most times!
Features only
APIs, features,
behaviour changes
APIs,
features
Features only
FOSDEM 2025
Old vs. New development model ( features, quality, timeline - choose two )
12
Old development model
features, timeline
New development model - Trunk Stable features, quality
FOSDEM 2025
Old vs. New development model ( features, quality, timeline - choose two )
13
Downstream OS forks ( yearly )
🆕 Downstream OS forks ( continuous )
Old development model
features, timeline
New development model - Trunk Stable features, quality
FOSDEM 2025
When to use flag based development? ( always! )
14
FOSDEM 2025
What are the types of flags I can use? ( aconfig or build flags )
Run-time controlled flags (AConfig)
Build-time controlled flags
More info here: https://source.android.com/docs/setup/build/feature-flagging
15
FOSDEM 2025
What are the release flavours? (aosp_current, runk_staging, releases)
$ source ./build/envsetup.sh
$ lunch aosp_cf_x86_64_phone-trunk_staging-eng
$ list_releases
aosp_current # mapped (inherits) from the latest release ap4a
ap2a # release
ap3a # release
ap4a # release
trunk_staging # a development release configuration
next # google internal, next release configuration
$ cat out/soong/release-config/build_flags_product.json
{
"flags": [
{
"flag_declaration": {
"name": "RELEASE_ACONFIG_FLAG_DEFAULT_PERMISSION",
"namespace": "android_UNKNOWN",
"description": "The default permission for all flags",
16
FOSDEM 2025
What are the aflags values? ( aconfig flags are reboot-stable )
$ adb shell aflags list
# flag name default value type namespace
android.adpt.enable_adaptive_auth enabled - default read-write system
android.adpt.report_biometric_auth enabled - default read-write system
android.app.admin.flags.allow_querying enabled - default read-only system
android.app.admin.flags.assist_content disabled - default read-write vendor
17
FOSDEM 2025
What is the lifecycle of a feature flag? ( do not skip stages )
18
Add feature flag infrastructure
…
1
2
Start feature development behind feature flag
3
Enable feature locally for testing
4
Enable feature Dogfood-wide for testing
Enable feature for next release
5
🆕Automatically disable feature if any issues
6
FOSDEM 2025
When do I get new features? ( IANAL, but EU EcoDesign regulation might help )
19
Smartphones and Tablets placed on the EU market starting 20th June 2025 MUST comply with:
More info here: https://energy-efficient-products.ec.europa.eu/product-list/smartphones-and-tablets_en
FOSDEM 2025
Thanks!
Want to work on an exciting project (with ex-Google Android team)?
We are hiring Android OS engineers!
Email us at: serban@source.dev
20