Zygote
API 14 · ICE_CREAM_SANDWICH

Android 4.0 Ice Cream Sandwich

Unifies phone and tablet

released
2011-10-18
runtime
Dalvik
design
Holo
status
stable

The story

Honeycomb had split the platform into phone and tablet lines, which was a problem for developers and for Google.

The problem

Two Android experiences meant two sets of design decisions, two sets of bugs, and apps that looked wrong on one or the other.

Ice Cream Sandwich merged them, brought Holo to phones, added Face Unlock and Android Beam, and turned hardware acceleration on by default.

The one thing to remember

One Android again — and a design language that applied everywhere.

What shipped

  • Unifies phone and tablet
  • Holo across the system
  • Face unlock
  • Android Beam (NFC)
  • Roboto typeface

Platform internals

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

  • One system image for phones and tablets
  • Hardware acceleration on by default

What developers had to deal with

  • android.hardware.face and Beam APIs
  • Wi-Fi Direct
  • Network usage stats
  • New GridLayout

Behaviour changes

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

targetingbackground

Foreground service types are required

Apps targeting Android 14 must declare a foreground service type and hold the matching permission.

What to doDeclare android:foregroundServiceType and request the type-specific permission.

targetingbackground

Foreground service launch restrictions tightened

Apps targeting Android 14 cannot start some foreground service types from the background.

What to doUse WorkManager or expedited jobs for background work, or start the service while visible.

targetingpermissions

Selected photos access

READ_MEDIA_VISUAL_USER_SELECTED lets users grant access to only some photos and videos.

What to doHandle partial grants by checking the permission state and asking for more content when needed.

targetingui

Non-linear font scaling

Font scaling is non-linear above 100%, so large text does not break layouts as badly.

What to doTest with large font sizes and avoid fixed-height text containers.

targetingsecurity

Full-screen intents are restricted

Apps targeting Android 14 cannot launch full-screen intents unless they are calling or alarm apps.

What to doUse notifications with a high-importance channel instead of full-screen intents.

targetingruntime

Runtime receivers must specify export behaviour

Context-registered broadcast receivers must declare RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED.

What to doAdd the flag to registerReceiver calls.

all appsbackground

Cached apps are frozen

The system freezes cached app processes more aggressively, so background work stops.

What to doDo not rely on background execution; use WorkManager or a foreground service.

all appsui

Minimum targetSdk for installation

Apps targeting API levels below 23 are blocked from installing on Android 14.

What to doRaise minSdk and targetSdk to supported levels and update the app.

targetingnotifications

Full-screen intent permission

Apps targeting Android 14 must hold USE_FULL_SCREEN_INTENT and the Play policy restricts which apps may request it.

What to doUse notifications with a high-importance channel; reserve full-screen intents for calling and alarm apps.

targetingstorage

Media permission changes for selected photos

Apps targeting Android 14 see a partial photo library when the user grants selected-photos access.

What to doHandle partial grants and provide a way to request more photos.

all appsui

Predictive back animation on more devices

Predictive back is available more broadly, and apps that do not handle it still show the system animation.

What to doEnable predictive back in the manifest and handle the back callbacks.

Permissions introduced here

  • ADD_VOICEMAILdangerous
  • BIND_TEXT_SERVICEsignature
  • BIND_VPN_SERVICEsignature

Where this sits

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

Kernel

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