API Change Statistics

The overall difference between API Levels 20 and 21 is approximately 6.51%.


Total of Differences, by Number and Type

The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were added, changed, or removed. The table includes only the highest-level program elements — that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class.

Type Additions Changes Removals Total
Packages 14 57 1 72
Classes and Interfaces 147 360 0 507
Constructors 98 3 1 102
Methods 770 117 29 916
Fields 1150 75 2 1227
Total 2179 612 33 2824

Changed Packages, Sorted by Percentage Difference

Percentage Difference* Package
59 android.service.notification
46 android.transition
21 android.net
20 android.speech.tts
20 android.graphics.pdf
19 android.hardware.display
18 android.content.pm
18 android.hardware
17 android.app.admin
16 android.animation
16 android.text.style
13 android.view.accessibility
13 java.util.zip
11 android.util
11 java.util.concurrent
11 android.media
11 android.graphics.drawable
9 android.hardware.usb
7 android.opengl
7 android.webkit
7 android.nfc.cardemulation
6 android.view.inputmethod
5 android.appwidget
5 android.provider
5 android.telephony
5 android.net.wifi
4 android.app
4 android.widget
4 android.os
3 android
3 android.net.http
3 android.preference
3 android.view
2 android.accessibilityservice
2 android.service.dreams
2 android.content.res
2 android.net.nsd
2 android.renderscript
2 android.view.animation
1 android.graphics
1 android.inputmethodservice
1 android.view.textservice
1 android.service.wallpaper
1 android.media.audiofx
1 android.bluetooth
1 java.util
<1 android.graphics.drawable.shapes
<1 android.content
<1 android.printservice
<1 android.test.mock
<1 android.text
<1 android.location
<1 android.app.backup
<1 java.util.concurrent.locks
<1 android.nfc
<1 android.accounts
<1 android.gesture

* See Calculation of Change Percentages, below.


Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage
Difference*
Class or Interface
83 android.opengl.EGLObjectHandle
83 java.util.zip.ZipInputStream
80 android.media.MediaCodecList
71 java.util.zip.ZipOutputStream
70 android.service.notification.NotificationListenerService
62 java.util.zip.ZipFile
60 android.os.Vibrator
58 android.telephony.SmsManager
50 android.app.ActionBar.OnNavigationListener
50 android.graphics.Rasterizer
50 android.hardware.Camera.AutoFocusCallback
50 android.hardware.Camera.AutoFocusMoveCallback
50 android.hardware.Camera.ErrorCallback
50 android.hardware.Camera.FaceDetectionListener
50 android.hardware.Camera.OnZoomChangeListener
50 android.hardware.Camera.PictureCallback
50 android.hardware.Camera.PreviewCallback
50 android.hardware.Camera.ShutterCallback
50 android.provider.ContactsContract.Contacts.StreamItems
50 android.provider.ContactsContract.PhoneLookup
50 android.provider.ContactsContract.RawContacts.StreamItems
50 android.provider.ContactsContract.StreamItemPhotos
50 android.provider.ContactsContract.StreamItemPhotosColumns
50 android.provider.ContactsContract.StreamItems
50 android.provider.ContactsContract.StreamItems.StreamItemPhotos
50 android.provider.ContactsContract.StreamItemsColumns
48 java.util.zip.ZipEntry
44 android.webkit.CookieSyncManager
42 android.provider.ContactsContract.CommonDataKinds.Note
41 android.graphics.drawable.RotateDrawable
38 android.view.accessibility.AccessibilityNodeInfo.CollectionInfo
37 android.app.admin.DevicePolicyManager
36 android.transition.Visibility
36 android.animation.ObjectAnimator
36 android.view.accessibility.CaptioningManager.CaptionStyle
35 android.speech.tts.TextToSpeech
34 android.os.UserManager
33 android.media.MediaFormat
33 android.media.MediaMuxer.OutputFormat
33 android.provider.ContactsContract.CommonDataKinds.GroupMembership
33 android.provider.ContactsContract.CommonDataKinds.Identity
33 android.provider.ContactsContract.CommonDataKinds.Photo
33 android.renderscript.ScriptC
33 android.speech.tts.UtteranceProgressListener
33 android.transition.AutoTransition
32 android.webkit.CookieManager
30 android.media.audiofx.Virtualizer
30 android.widget.ProgressBar
30 android.webkit.WebResourceResponse
28 android.media.Ringtone
28 android.os.PowerManager
28 android.view.WindowInsets
28 android.widget.AbsSeekBar
27 android.provider.ContactsContract.CommonDataKinds.Contactables
27 android.provider.ContactsContract.Data
27 android.transition.Transition
26 android.animation.PropertyValuesHolder
25 android.media.RemoteControlClient.MetadataEditor
25 android.net.ConnectivityManager
25 android.provider.ContactsContract.CommonDataKinds.Event
24 android.provider.CallLog.Calls
23 android.app.ActionBar
23 android.app.ActivityOptions
23 android.speech.tts.SynthesisCallback
22 android.nfc.cardemulation.CardEmulation
21 android.widget.CheckedTextView
21 android.widget.CompoundButton
20 android.media.MediaCodec
20 android.R.style
20 android.animation.AnimatorInflater
20 android.animation.RectEvaluator
20 android.graphics.drawable.Drawable.ConstantState
20 android.media.MediaRecorder.VideoSource
20 android.net.http.X509TrustManagerExtensions
20 android.os.Bundle
20 android.speech.tts.TextToSpeechService
20 android.text.InputFilter.LengthFilter
20 android.widget.EdgeEffect
19 android.app.Notification
19 android.renderscript.ScriptIntrinsicBlend
19 android.speech.tts.SynthesisRequest
18 android.widget.FrameLayout
18 android.provider.ContactsContract
18 android.transition.ChangeBounds
17 android.provider.ContactsContract.CommonDataKinds.SipAddress
17 android.transition.Scene
17 android.net.VpnService.Builder
17 android.app.UiAutomation
16 android.app.ActionBar.TabListener
16 android.graphics.LayerRasterizer
16 android.hardware.Camera.Area
16 android.hardware.Camera.Size
16 android.net.wifi.WifiEnterpriseConfig.Eap
16 android.provider.ContactsContract.CommonDataKinds.StructuredName
16 android.provider.ContactsContract.Contacts.Entity
16 android.telephony.PhoneNumberUtils
15 android.provider.ContactsContract.CommonDataKinds.Nickname
15 android.provider.ContactsContract.Contacts
15 android.provider.DocumentsContract
15 android.renderscript.Type
15 android.view.Window
15 android.hardware.usb.UsbDevice
15 android.media.MediaCodecInfo.CodecProfileLevel
14 android.app.admin.DeviceAdminReceiver
14 android.media.Image
14 android.preference.CheckBoxPreference
14 android.preference.PreferenceCategory
14 android.provider.ContactsContract.CommonDataKinds.Website
14 android.provider.ContactsContract.QuickContact
14 android.renderscript.RenderScript
14 android.transition.TransitionSet
14 android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo
14 android.widget.AnalogClock
14 android.widget.Button
14 android.widget.CheckBox
14 android.widget.ImageButton
14 android.widget.RadioButton
14 android.widget.Space
14 android.widget.StackView
13 android.util.Patterns
12 android.content.res.Resources.Theme
12 android.renderscript.ScriptIntrinsicHistogram
11 android.os.BatteryManager
11 java.util.Locale
11 android.app.Notification.Builder
11 android.app.Fragment
11 android.graphics.drawable.Drawable
11 android.graphics.drawable.LayerDrawable
11 android.hardware.display.VirtualDisplay
11 android.media.CamcorderProfile
11 android.media.MediaRecorder.VideoEncoder
11 android.net.nsd.NsdServiceInfo
11 android.provider.ContactsContract.CommonDataKinds.Organization
11 android.provider.DocumentsProvider
11 android.renderscript.ScriptIntrinsic3DLUT
11 android.telephony.PhoneNumberFormattingTextWatcher
11 android.transition.Fade
11 android.widget.AbsoluteLayout
11 android.widget.SeekBar
10 android.net.wifi.WifiManager
10 android.app.SearchManager
10 android.view.Display
10 android.content.pm.PackageInfo
10 android.provider.ContactsContract.CommonDataKinds.Email
10 android.speech.tts.TextToSpeech.Engine
10 android.os.Build
10 android.appwidget.AppWidgetProviderInfo
10 android.app.ActivityManager
10 android.hardware.usb.UsbInterface
10 android.view.textservice.TextInfo
10 android.widget.AdapterViewFlipper
9 android.widget.Switch
9 android.media.MediaCodecInfo.CodecCapabilities
9 android.R.interpolator
9 android.media.AudioFormat
9 android.view.ViewParent
9 android.bluetooth.BluetoothGatt
9 android.service.notification.StatusBarNotification
9 android.webkit.WebViewClient
9 android.bluetooth.BluetoothAdapter
9 android.app.ActivityManager.RecentTaskInfo
9 android.app.KeyguardManager
9 android.content.RestrictionEntry
9 android.content.pm.ActivityInfo
9 android.content.pm.InstrumentationInfo
9 android.graphics.ImageFormat
9 android.media.MediaCodec.CryptoException
9 android.provider.ContactsContract.ContactOptionsColumns
9 android.provider.ContactsContract.ContactsColumns
9 android.view.HapticFeedbackConstants
9 android.view.accessibility.AccessibilityNodeProvider
9 android.widget.MultiAutoCompleteTextView
9 android.widget.TwoLineListItem
9 android.widget.ZoomButton
8 android.appwidget.AppWidgetManager
8 android.media.AudioManager
8 android.provider.ContactsContract.CommonDataKinds.StructuredPostal
8 android.R.attr
8 android.hardware.Camera.CameraInfo
8 android.hardware.display.DisplayManager
8 android.hardware.usb.UsbDeviceConnection
8 android.preference.MultiSelectListPreference
8 android.app.AlarmManager
8 android.widget.DatePicker
7 android.graphics.Canvas
7 android.inputmethodservice.ExtractEditText
7 android.media.MediaRecorder.AudioEncoder
7 android.net.Proxy
7 android.os.PowerManager.WakeLock
7 android.provider.ContactsContract.CommonDataKinds.Relation
7 android.provider.ContactsContract.GroupsColumns
7 android.provider.ContactsContract.RawContactsColumns
7 android.renderscript.ScriptIntrinsicBlur
7 android.renderscript.ScriptIntrinsicConvolve3x3
7 android.renderscript.ScriptIntrinsicConvolve5x5
7 android.hardware.Camera.Face
7 android.net.wifi.WifiInfo
7 android.preference.ListPreference
7 android.widget.QuickContactBadge
6 android.provider.ContactsContract.CommonDataKinds.Im
6 android.graphics.drawable.GradientDrawable
6 android.graphics.Path
6 android.appwidget.AppWidgetProvider
6 android.media.MediaRecorder.OutputFormat
6 android.preference.EditTextPreference
6 android.renderscript.ScriptIntrinsicLUT
6 android.widget.EditText
6 android.widget.ImageView
6 android.widget.ToggleButton
6 java.util.concurrent.ScheduledThreadPoolExecutor
6 android.widget.GridLayout
6 android.media.AudioTrack
6 android.os.Environment
6 android.app.Activity
6 android.content.pm.PackageManager
6 android.content.Context
6 android.view.inputmethod.InputConnection
6 android.hardware.Sensor
5 android.bluetooth.BluetoothGattServerCallback
5 android.graphics.drawable.shapes.Shape
5 android.view.SurfaceView
5 android.view.accessibility.AccessibilityNodeInfo
5 android.view.ViewPropertyAnimator
5 android.webkit.WebChromeClient
5 android.app.AppOpsManager
5 android.widget.TabHost
5 android.view.ViewGroup
5 android.provider.Settings
5 android.app.MediaRouteButton
5 android.content.res.AssetManager.AssetInputStream
5 android.inputmethodservice.InputMethodService.InputMethodSessionImpl
5 android.media.MediaPlayer.TrackInfo
5 android.preference.SwitchPreference
5 android.provider.MediaStore.Audio.Media
5 android.provider.Telephony.ThreadsColumns
5 android.view.KeyEvent
5 android.app.FragmentBreadCrumbs
5 android.location.SettingInjectorService
5 android.webkit.WebSyncManager
4 android.app.backup.BackupAgent
4 android.bluetooth.BluetoothGattCallback
4 android.content.res.ColorStateList
4 android.graphics.BitmapFactory.Options
4 android.provider.ContactsContract.CommonDataKinds.Phone
4 android.provider.MediaStore
4 android.widget.TimePicker
4 android.content.pm.ApplicationInfo
4 android.telephony.TelephonyManager
4 android.media.RemoteController
4 android.graphics.SurfaceTexture
4 android.os.Build.VERSION_CODES
4 android.renderscript.ScriptIntrinsicColorMatrix
4 android.view.inputmethod.InputMethodSession
4 android.widget.AbsSpinner
4 android.widget.Chronometer
4 android.renderscript.Allocation
4 android.accessibilityservice.AccessibilityService
4 android.appwidget.AppWidgetHost
4 android.net.wifi.WpsInfo
4 android.provider.DocumentsContract.Root
4 android.provider.VoicemailContract.Voicemails
4 android.view.ViewStub
4 android.widget.TextClock
3 android.graphics.Paint
3 android.os.Parcel
3 android.webkit.WebView
3 android.preference.RingtonePreference
3 android.preference.TwoStatePreference
3 android.printservice.PrintService
3 android.widget.RatingBar
3 android.widget.VideoView
3 android.content.res.AssetManager
3 android.content.res.TypedArray
3 android.view.View
3 android.app.UiModeManager
3 android.preference.DialogPreference
3 android.widget.Gallery
3 android.view.inputmethod.InputMethodManager
3 android.preference.PreferenceGroup
3 android.provider.DocumentsContract.Document
3 android.test.mock.MockPackageManager
3 android.widget.SearchView
3 android.app.Instrumentation
3 android.media.MediaMetadataEditor
3 android.R.id
3 android.widget.HorizontalScrollView
3 android.widget.ScrollView
3 android.widget.TabWidget
2 android.widget.ListView
2 android.widget.NumberPicker
2 android.media.SoundPool
2 android.media.MediaPlayer
2 android.media.MediaRecorder
2 android.net.wifi.WifiConfiguration
2 android.util.LruCache
2 android.Manifest.permission
2 android.app.ActionBar.Tab
2 android.inputmethodservice.InputMethodService
2 android.provider.Telephony.BaseMmsColumns
2 android.widget.TextView
2 android.content.pm.PermissionInfo
2 android.view.TextureView
2 android.webkit.WebSettings
2 android.media.Rating
2 android.service.wallpaper.WallpaperService.Engine
2 android.util.DisplayMetrics
2 android.widget.SlidingDrawer
2 android.service.dreams.DreamService
2 android.widget.AbsListView
2 android.widget.Spinner
2 android.view.inputmethod.InputConnectionWrapper
2 android.content.res.Resources
2 android.util.ArrayMap
1 android.app.ActivityManager.RunningAppProcessInfo
1 android.content.ContentResolver
1 android.provider.ContactsContract.DataColumns
1 android.widget.GridView
1 android.view.InputDevice
1 android.provider.Settings.Secure
1 android.os.Message
1 android.provider.Telephony.TextBasedSmsColumns
1 android.view.inputmethod.BaseInputConnection
1 android.widget.AdapterViewAnimator
1 android.widget.PopupWindow
1 android.media.RemoteControlClient
1 android.text.SpannableStringBuilder
1 android.inputmethodservice.KeyboardView
1 android.widget.LinearLayout
1 java.util.concurrent.locks.AbstractQueuedLongSynchronizer
1 java.util.concurrent.locks.AbstractQueuedSynchronizer
1 android.test.mock.MockContext
1 android.accounts.AccountManager
1 android.content.Intent
1 android.content.ContextWrapper
1 android.widget.AdapterView
1 android.nfc.NdefRecord
1 android.app.FragmentTransaction
1 android.widget.RelativeLayout
1 android.media.MediaDrm
1 android.nfc.NfcAdapter
1 android.widget.CalendarView
1 android.animation.ValueAnimator
1 android.hardware.Camera
1 android.accessibilityservice.AccessibilityServiceInfo
1 android.widget.ExpandableListView
1 android.app.AlertDialog.Builder
1 android.view.WindowManager.LayoutParams
1 android.widget.AutoCompleteTextView
1 android.gesture.GestureOverlayView
<1 android.view.accessibility.AccessibilityEvent
<1 android.provider.Settings.Global
<1 android.graphics.Matrix
<1 android.os.Debug
<1 android.hardware.SensorManager
<1 android.preference.Preference
<1 android.app.Dialog
<1 android.provider.Settings.System
<1 android.hardware.Camera.Parameters
<1 android.opengl.GLES20
<1 android.view.MotionEvent

* See Calculation of Change Percentages, below.


Calculation of Change Percentages

The percent change statistic reported for all elements in the "to" API Level specification is defined recursively as follows:

Percentage difference = 100 * (added + removed + 2*changed)
                        -----------------------------------
                        sum of public elements in BOTH APIs

where added is the number of packages added, removed is the number of packages removed, and changed is the number of packages changed. This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed. The definition ensures that if all packages are removed and all new packages are added, the change will be 100%.