π
Welcome Developers write better apps when they can read the source. Unfortunately, the sources for the Android framework and various Google Android libraries are scattered all over the web.
This page helps Android developers find the sources they're looking for.
Libraries
Jetpack
- Most Jetpack libraries have sources available on cs.android.com/androidx. Some interesting ones:
- That repository is also synced to GitHub
- You can contribute via GitHub to a subset of projects (experimental workflow). You can also contribute by clicking Edit Code in a file on cs.android.com, which should work for all projects in that repository.
ConstraintLayout / MotionLayout
- Developed directly on GitHub, browsable on cs.android.com.
- The git history starts at 2.0.0, 1.x sources are available here.
Espresso / Android Test
- Developed directly on GitHub, browsable on cs.android.com
Data Binding
- Latest sources are browsable on cs.android.com
- When a release is stable, its sources are synced to cs.android.com/android on the
studio-master-dev
branch.π π Release version is not searchable online: thestudio-master-dev
branch is not indexed.
Material Components for Android
- Developed directly on GitHub, browsable on cs.opensource.google.
Dagger 2
- Developed directly on GitHub.
The Android Framework
- Available on cs.android.com/android
- View internals? See View.java.
- Activity lifecycle? See ActivityThread.java.
- Art Runtime? See class.cc.
What if it's a new version, sources not available yet?
- Start an emulator for the latest version.
- Run
adb pull /system/framework/framework.jar
. - Unzip
framework.jar
(contains dexes). - Use dex2jar to turn dexes into jars.
- Explore with jd-gui or IntelliJ (hack: add as a dependency)
Android Studio
- Latest sources are browsable on cs.android.com.
- When a release is stable, its sources are synced to cs.android.com/android on the
studio-master-dev
branch.π π Release version is not searchable online: thestudio-master-dev
branch is not indexed.
Android Gradle Plugin (AGP)
- Latest sources are browsable on cs.android.com.
- When a release is stable, its sources are synced to cs.android.com/android on the
studio-master-dev
branch.π π Release version is not searchable online: thestudio-master-dev
branch is not indexed.
- @jrodbx dumped the sources for each release on github.
- The sources are dumped from Maven Central.
Kotlin
- Sources for the Kotlin compiler and standard lib are on GitHub.
Firebase
- A subset of Firebase Android libraries have sources available on GitHub, also browsable on cs.opensource.google/firebase-sdk.
- Firebase Analytics is not open source.
Bazel
Bazel is a build tool maintained by Google but not part of the official Android toolchain. Some Android devs begrudgingly use it.
- Bazel is developed on Github and browsable on cs.opensource.google/bazel.
Skia
Skia is a 2D graphics library used by Android and Compose Desktop. On Android it's always been used for software rendering, and is used for hardware rendering except from Android 3.0 to 9.0.
- Available on cs.opensource.google/skia.
Google Play Services
- Play Services is not open source. I added this entry because people keep asking about it
π .- A small number of Gradle plugins related to Play Services, including
strict-version-matcher-plugin
,oss-licenses-plugin
, andgoogle-services-plugin
, have been open sourced on GitHub.
- A small number of Gradle plugins related to Play Services, including