API Change Statistics

The overall difference between API Levels 29 and 30 is approximately 4.74%.


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 12 76 0 88
Classes and Interfaces 122 364 0 486
Constructors 36 49 0 85
Methods 580 295 0 875
Fields 752 128 8 888
Total 1502 912 8 2422

Changed Packages, Sorted by Percentage Difference

Percentage Difference* Package
52 android.drm
50 android.service.chooser
24 android.hardware.biometrics
19 android.net.wifi
19 android.os.storage
18 android.location
16 android.telephony.euicc
13 android.accessibilityservice
13 android.view.contentcapture
12 android.telephony
11 android.view.inputmethod
10 android.net
8 android.media
7 android.hardware.camera2
7 android.net.wifi.hotspot2
6 android.text
6 android.view
6 android.app.admin
5 android.view.accessibility
5 android.security
4 android.service.voice
4 android.os
4 android.app
4 android.service.quicksettings
4 android.net.wifi.p2p
3 android.media.tv
3 android.accounts
3 android.hardware.input
3 java.util.concurrent
3 android.net.rtp
3 android.content.pm
3 android.hardware.camera2.params
2 android.service.autofill
2 android.system
2 android.companion
2 android.widget
2 android.util
1 android.se.omapi
1 android.service.notification
1 android.net.wifi.aware
1 android.provider
1 android.security.keystore
1 java.util
1 android.nfc.cardemulation
1 android.telecom
1 android.content
1 android.service.wallpaper
<1 android.database
<1 android.appwidget
<1 android.gesture
<1 android.view.textclassifier
<1 android
<1 android.icu.text
<1 android.telephony.data
<1 android.database.sqlite
<1 android.media.session
<1 android.nfc
<1 android.graphics
<1 android.icu.util
<1 android.icu.lang
<1 android.net.sip
<1 android.text.style
<1 java.time.chrono
<1 android.app.usage
<1 android.text.format
<1 android.app.assist
<1 android.net.wifi.rtt
<1 android.content.res
<1 android.graphics.drawable
<1 android.inputmethodservice
<1 android.hardware
<1 android.speech.tts
<1 android.webkit
<1 android.view.animation
<1 android.media.audiofx
<1 android.bluetooth

* See Calculation of Change Percentages, below.


Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage
Difference*
Class or Interface
100 android.telephony.AccessNetworkConstants
100 java.util.Set
92 android.widget.TabHost.TabSpec
83 android.text.LoginFilter.PasswordFilterGMail
83 android.text.LoginFilter.UsernameFilterGMail
83 android.text.LoginFilter.UsernameFilterGeneric
77 android.drm.DrmRights
75 android.media.DrmInitData
73 android.widget.TabWidget
73 android.drm.DrmManagerClient
70 android.net.wifi.WifiNetworkSuggestion
70 android.util.TimingLogger
66 android.os.AsyncTask
65 android.widget.TabHost
62 android.drm.DrmInfoEvent
61 android.drm.DrmInfo
60 android.drm.DrmErrorEvent
60 android.drm.DrmEvent
50 android.accounts.AccountAuthenticatorActivity
50 android.app.AliasActivity
50 android.app.ExpandableListActivity
50 android.app.IntentService
50 android.app.LauncherActivity
50 android.app.LauncherActivity.IconResizer
50 android.app.LauncherActivity.ListItem
50 android.app.ListActivity
50 android.drm.DrmConvertedStatus
50 android.drm.DrmInfoRequest
50 android.drm.DrmInfoStatus
50 android.drm.DrmManagerClient.OnErrorListener
50 android.drm.DrmManagerClient.OnEventListener
50 android.drm.DrmManagerClient.OnInfoListener
50 android.drm.DrmStore
50 android.drm.DrmStore.ConstraintsColumns
50 android.drm.DrmUtils
50 android.drm.DrmUtils.ExtendedMetadataParser
50 android.drm.ProcessedData
50 android.service.chooser.ChooserTarget
50 android.service.chooser.ChooserTargetService
50 android.telephony.euicc.EuiccManager
50 android.text.AlteredCharSequence
50 android.text.LoginFilter
50 android.view.View.OnSystemUiVisibilityChangeListener
50 android.view.WindowManager
50 android.widget.TabHost.OnTabChangeListener
50 android.widget.TabHost.TabContentFactory
45 android.media.MediaCas
44 android.drm.DrmStore.Action
43 android.drm.DrmSupportInfo
42 android.content.pm.CrossProfileApps
40 android.view.WindowInsets
40 android.drm.DrmStore.DrmObjectType
40 android.drm.DrmStore.Playback
40 android.drm.DrmStore.RightsStatus
40 android.net.wifi.WifiManager.LocalOnlyHotspotReservation
38 android.view.WindowInsets.Builder
37 android.location.LocationListener
36 android.media.tv.TvInputService
33 android.hardware.biometrics.BiometricManager
33 android.hardware.biometrics.BiometricPrompt.AuthenticationResult
33 android.media.DrmInitData.SchemeInitData
33 android.media.MediaCas.EventListener
33 android.os.FileUtils
33 android.os.RemoteException
33 android.provider.MediaStore.MediaColumns
33 java.util.List
29 android.telephony.SmsManager
29 android.accessibilityservice.AccessibilityService
28 android.provider.MediaStore.Audio.AudioColumns
28 android.view.contentcapture.ContentCaptureManager
28 android.content.ContentProviderOperation.Builder
28 android.os.Vibrator
27 android.service.voice.AlwaysOnHotwordDetector
26 android.hardware.camera2.CameraDevice
25 android.companion.WifiDeviceFilter.Builder
25 android.database.ContentObserver
25 android.graphics.Canvas.EdgeType
25 android.os.AsyncTask.Status
25 android.provider.MediaStore.Audio
25 android.provider.MediaStore.Images.ImageColumns
25 android.provider.MediaStore.Video.VideoColumns
25 android.system.ErrnoException
24 android.net.wifi.p2p.WifiP2pConfig
23 android.location.LocationManager
21 android.app.AppOpsManager
20 java.util.Map
20 android.app.Notification.BubbleMetadata.Builder
20 android.content.ContentProviderResult
20 android.hardware.camera2.CameraManager.AvailabilityCallback
20 android.net.wifi.ScanResult
20 android.net.wifi.aware.Characteristics
20 android.security.AttestedKeyPair
18 android.telephony.CarrierConfigManager
18 android.hardware.biometrics.BiometricPrompt
17 android.net.NetworkRequest.Builder
17 android.net.wifi.WifiConfiguration
17 android.net.wifi.WifiNetworkSuggestion.Builder
17 android.service.autofill.SaveInfo
17 android.media.tv.TvInputManager
17 android.media.tv.TvTrackInfo.Builder
17 java.util.Objects
17 android.telephony.PhoneStateListener
16 android.net.NetworkRequest
16 android.text.style.ReplacementSpan
16 android.view.SurfaceControl.Transaction
16 android.telephony.CellInfo
15 android.provider.MediaStore.Files.FileColumns
15 android.content.pm.ShortcutManager
15 android.view.HapticFeedbackConstants
15 android.provider.MediaStore
14 android.telecom.Connection
14 android.accessibilityservice.GestureDescription.Builder
14 android.app.UiModeManager
14 android.hardware.biometrics.BiometricPrompt.CryptoObject
14 android.net.rtp.AudioGroup
14 android.net.wifi.hotspot2.PasspointConfiguration
14 android.service.autofill.Dataset.Builder
14 android.util.TimeUtils
14 android.view.textclassifier.TextClassificationSessionId
13 android.net.ProxyInfo
13 android.telephony.AccessNetworkConstants.UtranBand
12 android.provider.MediaStore.Audio.ArtistColumns
12 android.provider.MediaStore.Audio.PlaylistsColumns
12 android.provider.Telephony.Sms.Intents
12 android.telephony.SubscriptionPlan.Builder
12 android.net.wifi.WifiManager
12 android.media.tv.TvTrackInfo
12 android.media.CamcorderProfile
11 android.database.sqlite.SQLiteQueryBuilder
11 android.hardware.biometrics.BiometricPrompt.Builder
11 android.location.GnssClock
11 android.accessibilityservice.GestureDescription
11 android.gesture.GestureLibraries
11 android.net.wifi.WifiConfiguration.Protocol
11 android.net.wifi.p2p.WifiP2pGroup
11 android.provider.MediaStore.Downloads
11 android.telephony.AccessNetworkConstants.EutranBand
11 android.telephony.CellIdentityLte
11 android.telephony.CellIdentityNr
11 android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo
10 android.net.wifi.WifiEnterpriseConfig
10 android.provider.Settings
10 android.net.LinkProperties
10 android.view.contentcapture.ContentCaptureSession
10 android.location.GnssNavigationMessage
10 android.content.ContentProviderOperation
10 android.content.pm.LauncherApps.Callback
10 android.provider.ContactsContract.RawContacts
10 android.telephony.CellIdentityTdscdma
10 android.view.accessibility.AccessibilityNodeInfo.CollectionInfo
9 android.service.notification.ZenPolicy
9 android.provider.MediaStore.Audio.AlbumColumns
9 android.widget.Toast
9 android.accessibilityservice.AccessibilityService.SoftKeyboardController
9 android.media.MediaCas.Session
9 android.media.VolumeProvider
9 android.net.wifi.WifiConfiguration.AuthAlgorithm
9 android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder
9 android.os.storage.StorageManager
9 android.provider.Telephony.Mms.Addr
9 android.se.omapi.SEService
9 android.view.SurfaceView
9 android.view.textclassifier.TextLinks.Request.Builder
8 android.app.NotificationManager.Policy
8 android.view.Surface
8 android.content.pm.LauncherApps.ShortcutQuery
8 android.hardware.camera2.CameraManager
8 android.os.PersistableBundle
8 android.telecom.ConnectionRequest
8 android.telephony.CellIdentityWcdma
8 android.view.DisplayCutout
8 android.location.GnssMeasurement
7 android.telephony.TelephonyManager
7 android.hardware.input.InputManager
7 android.media.AudioRecord.Builder
7 android.net.wifi.WifiConfiguration.PairwiseCipher
7 android.os.storage.StorageVolume
7 android.provider.MediaStore.Video.Media
7 android.telephony.AccessNetworkConstants.AccessNetworkType
7 android.telephony.CellSignalStrengthWcdma
7 android.content.ContentProvider
7 android.app.NotificationManager
7 android.view.accessibility.AccessibilityWindowInfo
7 android.net.MacAddress
7 android.service.autofill.FillResponse.Builder
7 android.media.AudioTrack
6 android.net.wifi.WifiInfo
6 android.app.NotificationChannel
6 android.R.id
6 android.icu.util.JapaneseCalendar
6 android.location.GpsStatus
6 android.media.tv.TvRecordingClient
6 android.net.wifi.WifiConfiguration.GroupCipher
6 android.nfc.cardemulation.CardEmulation
6 android.telephony.SignalStrength
6 android.telecom.TelecomManager
6 android.content.ContentResolver
6 android.view.WindowManager.LayoutParams
5 android.net.NetworkInfo
5 android.telephony.CellSignalStrengthGsm
5 android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction
5 android.view.accessibility.AccessibilityNodeInfo.RangeInfo
5 android.view.inputmethod.EditorInfo
5 android.view.textclassifier.TextLinks.Request
5 java.time.chrono.JapaneseEra
5 android.telecom.Call
5 android.nfc.NfcAdapter
5 android.provider.ContactsContract.RawContactsColumns
5 android.service.quicksettings.Tile
5 android.content.ContentProviderClient
5 android.graphics.Outline
5 android.os.Handler
5 android.security.keystore.KeyProtection.Builder
5 android.graphics.drawable.Icon
5 android.hardware.camera2.CameraCaptureSession
5 android.media.AudioTrack.Builder
5 android.net.wifi.WifiEnterpriseConfig.Eap
5 android.os.Build.VERSION
5 android.provider.Settings.Global
5 android.service.autofill.FillRequest
5 android.location.GnssStatus
4 android.view.Display
4 android.app.Notification.BubbleMetadata
4 android.app.Notification.MessagingStyle.Message
4 android.media.session.MediaController.PlaybackInfo
4 android.media.tv.TvInputService.RecordingSession
4 android.net.DhcpInfo
4 android.net.wifi.p2p.WifiP2pDevice
4 android.provider.MediaStore.Audio.Media
4 android.net.NetworkCapabilities
4 android.app.admin.DevicePolicyManager
4 android.content.pm.ServiceInfo
4 android.app.ActivityManager
4 android.os.VibrationEffect
4 android.service.autofill.SaveInfo.Builder
4 android.telephony.SubscriptionManager
4 android.telecom.Conference
4 android.graphics.Canvas
4 android.media.AudioDeviceInfo
4 android.content.pm.PackageInstaller.SessionInfo
4 android.media.MediaMetadataRetriever
4 android.provider.MediaStore.Images.Media
4 android.telephony.CellIdentityGsm
3 android.media.MediaCodec
3 android.media.tv.TvContract.Programs
3 android.os.Looper
3 android.os.Environment
3 android.security.keystore.KeyGenParameterSpec.Builder
3 android.service.autofill.FillEventHistory.Event
3 android.view.textclassifier.TextLinks
3 android.widget.TextClock
3 android.R.string
3 android.app.ActivityManager.TaskDescription
3 android.appwidget.AppWidgetHost
3 android.icu.util.VersionInfo
3 android.provider.Telephony.Mms.Part
3 android.media.MediaFormat
3 android.icu.lang.UCharacter.IndicPositionalCategory
3 android.net.sip.SipProfile
3 android.content.pm.ApplicationInfo
3 android.graphics.PointF
3 android.telephony.ServiceState
3 android.content.pm.PackageManager
2 android.accessibilityservice.AccessibilityServiceInfo
2 android.content.Context
2 android.app.Activity
2 android.app.usage.UsageStatsManager
2 android.os.IBinder
2 android.provider.MediaStore.Video.Thumbnails
2 android.security.KeyChain
2 android.security.keystore.KeyProtection
2 android.service.quicksettings.TileService
2 android.telephony.SubscriptionPlan
2 android.content.pm.PackageInstaller
2 android.icu.lang.UCharacter.UnicodeBlock
2 android.security.keystore.KeyProperties
2 android.view.accessibility.AccessibilityEvent
2 android.webkit.CookieManager
2 android.Manifest.permission
2 android.os.UserManager
2 android.content.ClipDescription
2 android.content.pm.PackageInstaller.SessionParams
2 android.os.PowerManager
2 android.util.SparseArray
2 android.net.TrafficStats
2 android.telecom.Call.Details
2 android.security.keystore.KeyInfo
2 android.view.View
2 android.media.audiofx.AudioEffect
2 android.view.accessibility.AccessibilityNodeInfo
2 android.view.ViewConfiguration
2 android.media.session.MediaController
2 android.provider.MediaStore.Images.Thumbnails
2 android.service.notification.ZenPolicy.Builder
2 android.media.ExifInterface
2 android.service.notification.StatusBarNotification
2 android.content.pm.ResolveInfo
2 android.util.ArraySet
2 android.provider.DocumentsContract.Document
2 android.service.wallpaper.WallpaperService.Engine
1 android.telecom.DisconnectCause
1 android.view.accessibility.AccessibilityRecord
1 android.icu.lang.UScript
1 android.security.keystore.KeyGenParameterSpec
1 android.database.sqlite.SQLiteDatabase
1 android.content.res.Resources
1 android.view.animation.Animation
1 android.webkit.WebSettings
1 android.media.MediaRecorder
1 android.hardware.camera2.CameraMetadata
1 android.bluetooth.BluetoothDevice
1 android.icu.util.Currency
1 android.os.Build.VERSION_CODES
1 android.hardware.camera2.CaptureRequest
1 android.app.UiAutomation
1 android.hardware.camera2.CameraCharacteristics
1 android.provider.CallLog.Calls
1 android.content.pm.ShortcutInfo
1 android.os.ParcelFileDescriptor
1 android.content.ContentValues
1 android.icu.util.MeasureUnit
1 android.net.wifi.rtt.ResponderLocation
1 android.app.admin.SecurityLog
1 android.hardware.HardwareBuffer
1 android.media.tv.TvContract.Channels
1 android.telecom.PhoneAccount
1 android.view.textclassifier.TextClassifierEvent
1 android.media.tv.TvContract.RecordedPrograms
1 android.hardware.Sensor
1 android.view.Window
1 android.inputmethodservice.InputMethodService
1 android.os.Process
1 android.hardware.camera2.CaptureResult
1 android.icu.text.DateTimePatternGenerator
1 android.graphics.Path
1 android.appwidget.AppWidgetManager
1 android.telephony.data.ApnSetting
<1 android.system.Os
<1 android.media.AudioRecord
<1 android.view.ViewStructure
<1 android.speech.tts.TextToSpeech
<1 android.os.Parcel
<1 android.content.Intent
<1 android.text.format.DateUtils
<1 android.widget.RemoteViews
<1 android.app.assist.AssistStructure.ViewNode
<1 android.app.Notification
<1 android.app.Instrumentation
<1 android.media.AudioFormat
<1 android.app.Notification.Builder
<1 android.media.MediaCodecInfo.CodecCapabilities
<1 android.media.tv.TvContract.PreviewPrograms
<1 android.media.MediaDrm
<1 android.provider.Settings.Secure
<1 android.R.attr
<1 android.media.AudioManager
<1 android.media.tv.TvContract.WatchNextPrograms
<1 android.content.pm.ActivityInfo
<1 android.content.ContextWrapper
<1 android.content.res.Configuration
<1 android.system.OsConstants
<1 android.media.MediaCodecInfo.CodecProfileLevel
<1 android.widget.TextView
<1 android.R.style

* 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%.