Skip to content

Android SDK

Take a look at this comprehensive analysis of the Android SDK.

Structure

Let’s see what’s inside ~/Library/Android/sdk:

cd ~/Library/Android/sdk
$ tree -f -L 1
.
├── build-tools
├── cmake
├── cmdline-tools
├── emulator
├── extras
├── fonts
├── icons
├── licenses
├── ndk
├── patcher
├── platform-tools
├── platforms
├── skiaparser
├── skins
├── sources
├── system-images
└── tools

17 directories

Let’s start with the easiest ones.

Licenses

cd licenses
$ tree -f -L 1
.
├── ./android-googletv-license
├── ./android-sdk-arm-dbt-license
├── ./android-sdk-license
├── ./android-sdk-preview-license
├── ./google-gdk-license
└── ./mips-android-sysimage-license

1 directory, 6 files

These files contain hashes of license texts. Unfortunately, I couldn’t find the original license contents.

Fonts

cd fonts
$ tree -f -L 2
.
└── ./com.google.android.gms.fonts
    ├── ./com.google.android.gms.fonts/directory
    └── ./com.google.android.gms.fonts/fonts

4 directories, 0 files

Here you can find the sources of Google Fonts that are downloaded when you select “More Fonts” in the Android Studio font chooser window.

For example:

cd com.google.android.gms.fonts/fonts/asap
$ tree -f -L 2
.
└── ./v30
    └── ./v30/KFOoCniXp96ayz0e5Q.ttf

2 directories, 1 file

Icons

cd icons
$ tree -f -L 2
.
└── ./material
    ├── ./material/icons_metadata.txt
    ├── ./material/materialicons
    ├── ./material/materialiconsoutlined
    ├── ./material/materialiconsround
    ├── ./material/materialiconssharp
    ├── ./material/materialiconstwotone
    ├── ./material/materialsymbolsoutlined
    ├── ./material/materialsymbolsrounded
    └── ./material/materialsymbolssharp

This directory contains the icon sources that are downloaded after you accept the license when opening the “Configure Vector Asset” window in Android Studio. These are XML files.

For example:

cd material/materialicons/add_home
$ ls
baseline_add_home_24.xml

Skins

cd skins
$ tree -f -L 1
.
├── ./automotive_1024
├── ./automotive_landscape
├── ./automotive_large_portrait
├── ./automotive_ultrawide_cutout
├── ./galaxy_nexus
├── ./nexus_10
├── ./nexus_4
├── ./nexus_5
├── ./nexus_5x
├── ./nexus_6
├── ./nexus_6p
├── ./nexus_7
├── ./nexus_7_2013
├── ./nexus_9
├── ./nexus_one
├── ./nexus_s
├── ./pixel_2
├── ./pixel_2_xl
...

Here you can find directories for different devices containing configuration files related to device size (layout), skin .webp files, and .ini configuration files. These are used when previewing different layouts in the XML layout editor in Android Studio.

For example:

cd pixel_6
$ ls
back.webp  layout  mask.webp

Emulator

In the emulator directory, you can find Android emulator binaries that are used when you select “Download Emulator” in Android Studio.

Skiaparser

cd skiaparser
$ tree -f -L 1
.
├── ./1
├── ./2
└── ./3

4 directories, 0 files

Each directory corresponds to a specific version of the Skia parser used by the Layout Inspector image server.

Prebuilt binaries can be found here: https://android.googlesource.com/platform/prebuilts/studio/skiaparser/

For example:

cd 3
$ tree -f -L 1
.
├── ./package.xml
├── ./skia-grpc-server
├── ./source.properties
└── ./version-map.xml

1 directory, 4 files

Here, skia-grpc-server is an executable file.

Comments