Frequently Asked Questions

This page provides answers to some frequently asked questions (FAQs).

Open Source

What is the Android Open SourceProject?

Android Open Source Project (AOSP) refers to thepeople, processes, and source code that make up Android.

The people oversee the project and develop the source code. Theprocesses are the tools and procedures that we use to manage the developmentof the software. The net result is the source code, which you can use inmobile phones and other devices.

Why did we open the Androidsource code?

Google started the Android project in response to our own experienceslaunching mobile apps. We wanted to make sure there would always be anopen platform available for carriers, OEMs, and developers to use to maketheir innovative ideas a reality. We also wanted to avoid anycentral point of failure, so no single industry player could restrict or controlthe innovations of any other. Our single most important goal withAOSP is to make sure that open source Androidsoftware is implemented as widely and compatibly as possible, to everyone'sbenefit.

What kind of open sourceproject is Android?

Google oversees the development of the core Android open source platformand works to create robust developer and user communities. For the most part,the Android source code is licensed under the permissive ApacheLicense 2.0, rather than acopyleft license. We chose the Apache 2.0license because we believe that it encourages widespreadAndroid software adoption. For details, seeLicenses.

Why is Google in charge ofAndroid?

Launching a software platform is complex. Openness is vital to thelong-term success of a platform, because openness attractsinvestment from developers and ensures a level playing field.The platform must also be a compelling product to users.

Google has committed the professional engineering resourcesnecessary to ensure that Android is a fully competitive software platform.Google treats the Android project as a full-scale product developmentoperation and strikes the business deals necessary to make sure greatdevices running Android make it to market.

By making sure Android is a success with users, we help ensure thevitality of Android as a platform and as an open source project. After all,who wants the source code to an unsuccessful product?

Google's goal is to ensure a successful ecosystem around Android.We opened the Android source code so that anyonecan modify and distribute the software to meet their own needs.

Whatis Google's overall strategy for Android product development?

We release great devices into a competitive marketplace. Wethen incorporate the innovations and enhancements we made into the coreplatform as the next version.

In practice, this means that the Android engineering team focuseson a small number of "flagship" devices and develops the next version ofAndroid software to support those product launches. These flagshipdevices absorb much of the product risk and blaze a trail for the broad OEMcommunity, who follow up with more devices that take advantage of thenew features. In this way, we make sure that the Android platform evolvesaccording to the needs of real-world devices.

How is Android softwaredeveloped?

Each platform version of Android (such as 1.5 or 8.1) has acorresponding branch in the open source tree. The most recentbranch is considered thecurrent stable branch version.This is the branch that manufacturers port to theirdevices. This branch is kept suitable for release at all times.

Simultaneously, there's acurrent experimental branch, which iswhere speculative contributions, such as large next-generation features, aredeveloped. Bug fixes and other contributions can be included in the currentstable branch from the experimental branch as appropriate.

Finally, Google works on the next version of the Android platform in tandemwith developing a flagship device. This branch pulls in changes from theexperimental and stable branches as appropriate.

For details, seeCodelines, Branches, andReleases.

Why are parts of Androiddeveloped in private?

It typically takes more than a year to bring a device to market. And, ofcourse, device manufacturers want to ship the latest software they can.Meanwhile, developers don't want to constantly track new versions of theplatform when writing apps. Both groups experience a tension betweenshipping products and not wanting to fall behind.

To address this, some parts of the next version of Android including thecore platform APIs are developed in a private branch. These APIs constitutethe next version of Android. Our aim is to focus attention on the currentstable version of the Android source code while we create the next versionof the platform. This allows developersand OEMs to use a single version without tracking unfinishedfuture work just to keep up. Other parts of the Android system that aren'trelated to application compatibility are developed in the open.It's our intention to move more of these parts to open development overtime.

When are source code releasesmade?

When they're ready. Releasing the source code is a fairly complex process.Some parts of Android are developed in the open,and that source code is always available. Other parts are developed first ina private tree, and that source code is released when the next platformversion is ready.

In some releases, core platform APIs are ready far enough in advance sothat we can push the source code out for an early look prior to thedevice's release. In other releases, this isn't possible. In all cases,we release the platform source when we feel that the version is stable,and when the development process permits.

What'sinvolved in releasing the source code for a new Android version?

Releasing the source code for a new version of the Android platform is asignificant process. First, the software is built into a system image fora device and put through various forms of certification, includinggovernment regulatory certification for the regions the phones will bedeployed. The code also goes through operator testing. This is an importantphase of the process, because it helps detect software bugs.

When the release is approved by the regulators and operators, themanufacturer begins mass producing devices, and we begin releasing thesource code.

Simultaneous to mass production, the Google team kicks off several effortsto prepare the open source release. These efforts include making final APIchanges, updating documentation (to reflect any modifications that were madeduring qualification testing, for example), preparing an SDK for the newversion, and launching the platform compatibility information.

Our legal team does a final sign-off to release the code into opensource. Just as open source contributors are required to sign a ContributorsLicense Agreement attesting to their intellectual property ownership of theircontribution, Google must verify that the source is cleared to make contributions.

From the time that mass production begins, the software release processusually takes about a month, so source code releases often happen ataround the same time the devices reach users.

How doesAOSP relate to the Android Compatibility Program?

The Android Open Source Project maintains Android software, anddevelops new versions. Because it's open source, this software can be used forany purpose, including developing devices that aren't compatible with otherdevices based on the same source.

The function of the Android Compatibility Program is to define a baselineimplementation of Android that is compatible with third-party apps writtenby developers. Devices that areAndroid compatible may participate inthe Android ecosystem, including Google Play; devices that don't meet thecompatibility requirements exist outside of that ecosystem.

In other words, the Android Compatibility Program is how we separateAndroid-compatible devices from devices that merely run derivatives of thesource code. We welcome all uses of the Android source code, but to participatein the Android ecosystem, a device must be identified as Android-compatibleby the program.

How can I contribute to Android?

You can report bugs, write apps for Android, or contribute source codeto the Android Open Source Project.

There are limits to the kinds of code contributions weaccept. For instance, someone might want to contribute analternative application API, such as a full C++-based environment. We woulddecline that contribution, because Android encourages applications to be runin the ART runtime. Similarly, we won't accept contributions such as GPLor LGPL libraries that are incompatible with our licensing goals.

We encourage those interested in contributing source code to contact usvia the channels listed on theAndroid Community page prior to beginning any work. For details, seeContributing.

How do I become an Androidcommitter?

The Android Open Source Project doesn't really have a notion of acommitter. All contributions (including those authored by Googleemployees) go through a web-based system known as Gerrit that's part ofthe Android engineering process. This system works in tandem with the gitsource code management system to cleanly manage source codecontributions.

When submitted, changes need to be accepted by a designated approver.Approvers are typically Google employees, but the same approvers areresponsible for all submissions, regardless of origin.

For details, seeSubmittingPatches.

Back to top

Compatibility

What is Android "compatibility"?

We define anAndroid-compatible device as one that can run anyapplication written by third-party developers using the Android SDK and NDK.We use this as a filter to separate devices that can participate in theAndroid app ecosystem and those that can't. For devices that are properlycompatible, device manufacturers can seek approval to use the Androidtrademark. Devices that aren't compatible are merely derived from theAndroid source code and may not use the Android trademark.

In other words, compatibility is a prerequisite to participate in theAndroid apps ecosystem. Anyone is welcome to use the Android source code.But if the device isn't compatible, it isn't considered part of the Androidecosystem.

What's the role ofGoogle Play in compatibility?

Device manufacturers with Android-compatible devices may seek to licensethe Google Play client software. Licensed devices become part of theAndroid app ecosystem, enabling their users to download developers' apps froma catalog shared by all compatible devices. Licensing isn't available toincompatible devices.

What kinds of devicescan be Android compatible?

Android software can be ported to many different devices,including some on which third-party apps won't run properly. TheAndroid Compatibility DefinitionDocument (CDD) spells out the specific device configurations that areconsidered compatible.

For example, though the Android source code could be ported to run on aphone that doesn't have a camera, the CDD requires all phones to have a camera.This allows developers to rely on a consistent set of capabilities when writingtheir apps.

The CDD continues to evolve to reflect market realities. For instance,version 1.6 of the CDD supports only cell phones. But version 2.1 allows devicesto omit telephony hardware, enabling non-phone devices such as tablet-stylemusic players to be compatible. As we make these changes, we'll alsoaugment Google Play to allow developers to retain control over wheretheir apps are available. To continue the telephony example, an app thatmanages SMS text messages isn't useful on a media player, so GooglePlay allows the developer to restrict that app exclusively to phone devices.

Ifmy device is compatible, does it automatically have access to Google Play andbranding?

No. Access isn't automatic. Google Play is a service operated by Google.Achieving compatibility is a prerequisite for obtaining access to theGoogle Play software and branding. After a device isqualifiedas an Android-compatible device, the device manufacturer should complete thecontact form included inlicensing Google MobileServices to seek access to Google Play. We'll be in contact if we canhelp you.

If I'm not amanufacturer, how can I get Google Play?

Google Play is only licensed to handset manufacturers shipping devices.For questions about specific cases, contactandroid-partnerships@google.com.

Howcan I get access to Google apps for Android, such as Maps?

Google apps for Android, such as YouTube, Google Maps, andGmail are Google properties that aren't part of Android andare licensed separately. Contactandroid-partnerships@google.comfor inquiries related to these apps.

Is compatibility mandatory?

No. The Android Compatibility Program is optional. The Android sourcecode is open, so anyone can use it to build any kind of device. However, ifmanufacturers wish to use the Android name with their products, or want accessto Google Play, they must firstdemonstratethat their devices are compatible.

How much doescompatibility certification cost?

There's no cost to obtain Android compatibility for a device. TheCompatibility Test Suite is open source and available to anyone for devicetesting.

How long does compatibility take?

The process is automated. The Compatibility Test Suite generates a reportthat can be provided to Google to verify compatibility. Eventually we intendto provide self-service tools to upload these reports to a public database.

Whodetermines the compatibility definition?

Google is responsible for the overall direction of Android as aplatform and product, so Google maintains the Compatibility Definition Document(CDD) for each release. We draft the CDD for a new Android version in consultationwith various OEMs who provide input.

Howlong will each Android version be supported for new devices?

Android's code is open source, so we can't prevent someone from using anold version to launch a device. Instead, Google chooses not to license theGoogle Play client software for use on versions that are consideredobsolete. This allows anyone to continue to ship old versions of Android,but those devices won't use the Android name and exist outside of theAndroid apps ecosystem, just as if they weren't compatible.

Cana device have a different user interface and still be compatible?

The Android Compatibility Program determines whether a device can runthird-party applications. The user interface components shipped with adevice (such as home screen, dialer, and color scheme) don'tgenerally have much effect on third-party apps. As such, device builders arefree to customize the user interface. The CompatibilityDefinition Document restricts the degree to which OEMs may alter thesystem user interface for areas that impact third-party apps.

Whenare compatibility definitions released for new Android versions?

Our goal is to release a new version of the Android Compatibility DefinitionDocument (CDD) when the corresponding Android platform version hasconverged enough to permit it. While we can't release a final draft of a CDDfor an Android software version before the first flagship device ships withthat software, final CDDs are always released after the first device.However, wherever practical we release draft versions of CDDs.

How aredevice manufacturers' compatibility claims validated?

There is no validation process for Android device compatibility. However,if the device is to include Google Play, Google typically validatesthe device for compatibility before agreeing to license the Google Play clientsoftware.

Whathappens if a device that claims compatibility is later found to havecompatibility problems?

Typically, Google's relationships with Google Play licensees allow us to askthe deveice manufacturer to release updated system images that fix the problems.

Back to top

Compatibility Test Suite

What's the purpose of the CTS?

The Compatibility Test Suite is a tool used by device manufacturers to helpensure that their devices are compatible, and to report test results forvalidations. The CTS is intended to be run frequently by OEMs throughout theengineering process to catch compatibility issues early.

What kinds of things does theCTS test?

The CTS currently tests that all of the supported Android strong-typed APIsare present and behave correctly. It also tests other non-API systembehaviors such as application lifecycle and performance. We plan to addsupport in future CTS versions to testsoft APIs such as Intents.

Will the CTS reports be madepublic?

Yes. While not currently implemented, Google intends to provide web-basedself-service tools for OEMs to publish CTS reports so that anyone canview them. Manufacturers can share CTS reports with as wide an audienceas they like.

How is the CTS licensed?

The CTS is licensed under the same Apache Software License 2.0 that thebulk of Android uses.

Does the CTS acceptcontributions?

Yes, please! The Android Open Source Project accepts contributions toimprove the CTS just as for any other component. In fact,improving the coverage and quality of the CTS test cases is one of the bestways to help Android.

Can anyone use the CTS onexisting devices?

The Compatibility Definition Document requires that compatible devicesimplement theadb debugging utility. This means that any compatibledevice (including those available at retail) must be able to run the CTStests.

Are codecs verified by CTS?

Yes. All mandatory codecs are verified by CTS.

Back to top

Content and code samples on this page are subject to the licenses described in theContent License. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2020-09-01 UTC.