Zygote
API 19 · KITKAT

Android 4.4 KitKat

Runs in 512 MB of RAM

released
2013-10-31
runtime
Dalvik
design
Holo (semi-Material)
status
stable

The story

Low-cost Android devices were exploding in emerging markets, and many had only 512 MB of RAM.

The problem

Android assumed memory was plentiful. On cheap hardware it swapped and stuttered, giving the platform a reputation for being slow on budget phones.

KitKat was engineered to run in 512 MB, added the Storage Access Framework, printing, immersive mode, and — quietly — an experimental runtime called ART.

The one thing to remember

The release that hid Android's future inside its own directory.

What shipped

  • Runs in 512 MB of RAM
  • Immersive full-screen mode
  • Printing framework
  • The new 'OK Google' hotword
  • Hangouts replaces Messaging

Platform internals

What changed underneath the APIs. These are the changes this site's architecture modules explain in depth.

  • Android Runtime (ART) appears as an experimental runtime
  • Kernel moved under a tighter vendor control

What developers had to deal with

  • Host card emulation (NFC)
  • Storage Access Framework
  • Immersive mode
  • AlarmManager becomes inexact by default for targeting apps
  • WebView moves to Chromium

Behaviour changes

The full archive has every recorded change with its migration advice.

targetingbackground

Alarms become inexact by default

set() and setRepeating() alarms are inexact for apps targeting KitKat.

What to doUse setExact() only when the exact time is essential.

all appsstorage

Storage Access Framework

The system file picker lets users grant access to specific documents.

What to doUse ACTION_OPEN_DOCUMENT instead of asking for storage permission.

Permissions introduced here

  • BIND_NFC_SERVICEsignature
  • BIND_PRINT_SERVICEsignature
  • BLUETOOTH_PRIVILEGEDunknown
  • CAPTURE_AUDIO_OUTPUTunknown
  • INSTALL_SHORTCUTnormal
  • MANAGE_DOCUMENTSunknown
  • MEDIA_CONTENT_CONTROLunknown
  • TRANSMIT_IRnormal
  • UNINSTALL_SHORTCUTunknown

Where this sits

Release 19 of 37 API levels, by date
Headline features
5
Architecture changes
2
Developer changes
5
Sources cited
4

Kernel

This release shipped on Linux kernel versions 3.4. Kernel versions vary by device.