Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
Contribute to upstream projects
Stay organized with collections
Save and categorize content based on your preferences.
Android makes use of a number of other open source projects. Most of these
projects reside within WORKING_DIRECTORY/external/
, and
you can follow these steps to make the changes to those projects:
- Navigate to
WORKING_DIRECTORY/external/upstream-project
.
- View the
METADATA
file. This file usually has an entry for a URL where you
can find information on contributing to the project.
- After your changes have been made to the upstream project, inform the Android
maintainers of the new upstream release that contains your changes.
The remainder of this page provides additional information on contributing to
specific upstream projects.
Bionic
Most of the code for Bionic is from BSD, so unless the change is to code
that's new to Bionic, make an upstream fix and then a pull of a whole new file
from the appropriate BSD.
Android kernel
Make all changes upstream. For general guidance, follow
How do I submit patches to Android Common Kernels
and
Develop Kernel Code for GKI.
ICU
Make all changes to the ICU project at external/icu
(icu4c/
and icu4j/
folders) on ICU-TC. See
Submitting ICU Bugs and Feature Requests for
more.
Add the label "android" to all upstream Jira requests.
CLDR
Most linguistic data in ICU comes from the
Unicode CLDR project. Submit
all requests upstream according to
Contributing to CLDR
and add the label "android."
LLVM/Clang/Compiler-rt
Make all changes to LLVM-related projects upstream. For more information about
how Google builds our toolchains from upstream source, see
Android Clang/LLVM Toolchain.
mksh
Make all changes to the MirBSD Korn Shell project at external/mksh
either by
sending an email to miros-mksh
on the mirbsd.org
domain (no subscription
required to submit there) or at Launchpad.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-08-29 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[],[],null,["# Contribute to upstream projects\n\nAndroid makes use of a number of other open source projects. Most of these\nprojects reside within \u003cvar translate=\"no\"\u003eWORKING_DIRECTORY\u003c/var\u003e`/external/`, and\nyou can follow these steps to make the changes to those projects:\n\n1. Navigate to \u003cvar translate=\"no\"\u003eWORKING_DIRECTORY\u003c/var\u003e`/external/`\u003cvar translate=\"no\"\u003eupstream-project\u003c/var\u003e.\n2. View the `METADATA` file. This file usually has an entry for a URL where you can find information on contributing to the project.\n3. After your changes have been made to the upstream project, inform the Android maintainers of the new upstream release that contains your changes.\n\nThe remainder of this page provides additional information on contributing to\nspecific upstream projects.\n\nBionic\n------\n\nMost of the code for Bionic is from BSD, so unless the change is to code\nthat's new to Bionic, make an upstream fix and then a pull of a whole new file\nfrom the appropriate BSD.\n\nAndroid kernel\n--------------\n\nMake all changes upstream. For general guidance, follow\n[How do I submit patches to Android Common Kernels](https://android.googlesource.com/kernel/common/+/refs/heads/android-mainline/README.md)\nand\n[Develop Kernel Code for GKI](/docs/core/architecture/kernel/kernel-code).\n\nICU\n---\n\nMake all changes to the ICU project at `external/icu` (`icu4c/` and `icu4j/`\nfolders) on [ICU-TC](https://icu.unicode.org/). See\n[Submitting ICU Bugs and Feature Requests](https://icu.unicode.org/bugs) for\nmore.\n\nAdd the label \"android\" to all upstream Jira requests.\n\nCLDR\n----\n\nMost linguistic data in ICU comes from the\n[Unicode CLDR project](https://cldr.unicode.org/index). Submit\nall requests upstream according to\n[Contributing to CLDR](https://github.com/unicode-org/cldr/blob/main/CONTRIBUTING.md)\nand add the label \"android.\"\n\nLLVM/Clang/Compiler-rt\n----------------------\n\nMake all changes to LLVM-related projects upstream. For more information about\nhow Google builds our toolchains from upstream source, see\n[Android Clang/LLVM Toolchain](https://android.googlesource.com/toolchain/llvm_android/+/mirror-goog-main-llvm-toolchain-source/README.md).\n\nmksh\n----\n\nMake all changes to the MirBSD Korn Shell project at `external/mksh` either by\nsending an email to `miros-mksh` on the `mirbsd.org` domain (no subscription\nrequired to submit there) or at [Launchpad](https://launchpad.net/mksh)."]]