API Change Statistics

The overall difference between API Levels 22 and 23 is approximately 12.19%.


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 5 52 28 85
Classes and Interfaces 119 257 36 412
Constructors 6 2 3 11
Methods 541 132 38 711
Fields 466 89 83 638
Total 1137 532 188 1857

Changed Packages, Sorted by Percentage Difference

Percentage Difference* Package
96 android.telecom
88 org.apache.http.conn
57 org.apache.http.params
46 android.service.voice
33 org.apache.http.conn.scheme
24 android.app.usage
19 android.graphics.drawable
18 android.app.admin
18 android.service.carrier
17 android.security
15 android.service.media
12 android.media.browse
11 android.media
9 android.app
9 android.hardware.camera2
9 android.net.http
7 android.media.tv
7 android.hardware.camera2.params
6 android.renderscript
5 android.webkit
4 android.net.wifi
4 android.nfc
4 android
3 android.bluetooth.le
3 android.os
3 android.provider
3 android.view
3 android.telephony
2 android.net
2 android.util
2 android.transition
2 android.service.dreams
2 android.content.res
1 android.print
1 android.bluetooth
1 android.service.notification
1 android.widget
1 android.speech
1 android.text
<1 android.view.accessibility
<1 android.speech.tts
<1 android.test.mock
<1 android.printservice
<1 android.content.pm
<1 android.content
<1 android.accounts
<1 android.media.session
<1 android.database
<1 android.graphics
<1 android.hardware.usb
<1 android.system
<1 android.hardware

* See Calculation of Change Percentages, below.


Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage
Difference*
Class or Interface
100 android.util.FloatMath
80 android.graphics.drawable.ScaleDrawable
71 android.Manifest.permission_group
71 android.renderscript.ScriptGroup
70 android.provider.Browser
66 android.graphics.drawable.InsetDrawable
65 android.service.voice.VoiceInteractionSession
58 android.app.NotificationManager
53 android.graphics.drawable.ClipDrawable
50 android.media.MediaDrm.KeyRequest
50 android.nfc.NfcEvent
50 android.security.KeyStoreParameter
49 android.telecom.TelecomManager
43 android.graphics.drawable.LayerDrawable
42 android.graphics.drawable.RippleDrawable
42 android.media.AsyncPlayer
42 android.net.wifi.ScanResult
42 android.os.MessageQueue
42 android.app.AppOpsManager
33 android.media.MediaCodecInfo.CodecCapabilities
33 android.bluetooth.BluetoothSocket
33 android.media.MediaCodec.CodecException
33 android.os.DeadObjectException
33 android.os.TransactionTooLargeException
33 android.telephony.CellSignalStrength
33 android.widget.FrameLayout
30 android.widget.TimePicker
29 android.service.carrier.CarrierMessagingService
27 android.bluetooth.le.ScanSettings.Builder
26 android.bluetooth.le.ScanSettings
25 android.graphics.drawable.RotateDrawable
25 android.provider.AlarmClock
25 android.graphics.ImageFormat
24 android.widget.CalendarView
23 android.app.ActivityOptions
23 android.service.voice.VoiceInteractionService
23 android.hardware.camera2.CameraManager
20 android.app.Notification.Action.Builder
20 android.graphics.drawable.AnimatedVectorDrawable
20 android.net.wifi.WifiEnterpriseConfig
20 android.os.Build.VERSION
20 android.provider.ContactsContract.QuickContact
20 android.provider.Telephony.Threads
19 android.content.pm.PermissionInfo
18 android.net.ConnectivityManager
18 android.print.PrintAttributes
18 android.view.ActionMode
17 android.media.AudioRecord
17 android.os.Debug
16 android.content.res.ColorStateList
16 android.security.KeyStoreParameter.Builder
15 android.media.tv.TvInputService.Session
14 android.app.Notification.Action
14 android.hardware.camera2.CameraCaptureSession
14 android.media.tv.TvInputManager
14 android.media.tv.TvView
14 android.net.Network
14 android.renderscript.AllocationAdapter
13 android.Manifest.permission
13 android.provider.VoicemailContract.Voicemails
13 android.hardware.camera2.CameraDevice
13 android.provider.Settings
12 android.content.ContentProviderOperation
12 android.hardware.camera2.params.StreamConfigurationMap
12 android.widget.AnalogClock
12 android.widget.Switch
12 android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction
12 android.renderscript.Allocation
11 android.app.ActivityManager
11 android.app.ActivityManager.RecentTaskInfo
11 android.hardware.camera2.CameraAccessException
11 android.media.MediaCrypto
11 android.os.RecoverySystem
11 android.view.ContextThemeWrapper
10 android.R.id
10 android.app.admin.DevicePolicyManager
10 android.media.tv.TvContract.Programs
10 android.media.tv.TvTrackInfo.Builder
10 android.os.Debug.InstructionCount
10 android.renderscript.ScriptGroup.Builder
10 android.view.GestureDetector
9 android.app.AlertDialog
9 android.media.AudioTrack
9 android.hardware.camera2.CameraCharacteristics
9 android.os.PowerManager
9 android.speech.tts.UtteranceProgressListener
9 android.content.ContextWrapper
8 android.security.KeyChain
8 android.renderscript.RenderScript
8 android.os.Looper
8 android.widget.PopupMenu
7 android.view.Display
7 android.app.Notification.BigPictureStyle
7 android.content.RestrictionEntry
7 android.hardware.camera2.CameraCaptureSession.StateCallback
7 android.media.AudioFormat.Builder
7 android.media.MediaCodec.CryptoException
7 android.net.IpPrefix
7 android.print.PrintAttributes.Builder
7 android.print.PrinterCapabilitiesInfo.Builder
7 android.provider.ContactsContract.DisplayNameSources
7 android.view.HapticFeedbackConstants
7 android.widget.ActionMenuView
7 android.widget.SimpleAdapter
7 android.os.UserManager
7 android.net.wifi.WifiConfiguration
7 android.net.Proxy
7 android.os.StrictMode.VmPolicy.Builder
7 android.webkit.WebViewClient
6 android.media.tv.TvContract.Channels
6 android.app.KeyguardManager
6 android.app.SharedElementCallback
6 android.media.tv.TvContentRating
6 android.net.wifi.WifiEnterpriseConfig.Eap
6 android.util.EventLog
6 android.database.AbstractCursor
6 android.renderscript.Script
6 android.media.tv.TvTrackInfo
5 android.app.Fragment
5 android.content.AbstractThreadedSyncAdapter
5 android.content.res.Resources
5 android.media.Image
5 android.os.BatteryManager
5 android.print.PrinterCapabilitiesInfo
5 android.speech.RecognitionService.Callback
5 android.transition.TransitionManager
5 android.webkit.PermissionRequest
5 android.media.AudioFormat
5 android.widget.PopupWindow
5 android.text.Layout
5 android.view.ScaleGestureDetector
5 android.telephony.TelephonyManager
5 android.media.MediaDrm
5 android.service.notification.NotificationListenerService
5 android.app.admin.DeviceAdminReceiver
5 android.app.usage.UsageStatsManager
5 android.content.ComponentName
5 android.content.res.Resources.Theme
5 android.media.MediaDescription.Builder
5 android.provider.VoicemailContract.Status
5 android.service.media.MediaBrowserService
5 android.media.MediaCodec
5 android.media.AudioManager
5 android.net.ProxyInfo
5 android.os.StrictMode.ThreadPolicy.Builder
5 android.security.KeyPairGeneratorSpec
4 android.provider.Settings.System
4 android.hardware.camera2.CaptureResult
4 android.app.AlarmManager
4 android.app.usage.UsageEvents.Event
4 android.media.MediaDescription
4 android.media.MediaPlayer.TrackInfo
4 android.media.browse.MediaBrowser
4 android.os.Debug.MemoryInfo
4 android.telephony.SignalStrength
4 android.view.GestureDetector.SimpleOnGestureListener
4 android.media.ExifInterface
4 android.security.KeyPairGeneratorSpec.Builder
4 android.view.Window.Callback
4 android.media.MediaPlayer
4 android.graphics.drawable.Drawable
4 android.media.MediaFormat
4 android.bluetooth.BluetoothDevice
4 android.media.MediaCodecInfo.VideoCapabilities
4 android.media.tv.TvView.TvInputCallback
4 android.provider.DocumentsContract
4 android.util.DisplayMetrics
4 android.widget.CursorAdapter
4 android.widget.RelativeLayout.LayoutParams
4 android.media.MediaCodecInfo.CodecProfileLevel
4 android.app.Notification.Builder
4 android.telephony.PhoneNumberUtils
4 android.widget.ArrayAdapter
4 android.widget.Spinner
4 android.accounts.AbstractAccountAuthenticator
4 android.util.ArrayMap
3 android.accounts.AccountManager
3 android.hardware.camera2.CameraMetadata
3 android.app.ActivityManager.RunningAppProcessInfo
3 android.provider.ContactsContract.DataColumns
3 android.telephony.SmsMessage
3 android.webkit.WebView
3 android.test.mock.MockCursor
3 android.app.PendingIntent
3 android.hardware.camera2.CaptureRequest
3 android.database.CursorWrapper
3 android.bluetooth.BluetoothProfile
3 android.media.session.MediaController.TransportControls
3 android.printservice.PrintService
3 android.view.Surface
3 android.widget.CompoundButton
3 android.app.Activity
3 android.net.NetworkCapabilities
3 android.provider.ContactsContract.Intents.Insert
3 android.view.ViewGroup
3 android.widget.TextView
3 android.widget.QuickContactBadge
3 android.media.session.MediaSession.Callback
3 android.provider.ContactsContract.CommonDataKinds.Email
2 android.app.Notification
2 android.content.Context
2 android.net.SSLCertificateSocketFactory
2 android.view.View
2 android.content.res.Configuration
2 android.content.pm.ApplicationInfo
2 android.hardware.usb.UsbDevice
2 android.renderscript.Element
2 android.media.MediaMetadataRetriever
2 android.test.mock.MockPackageManager
2 android.graphics.Paint
2 android.service.dreams.DreamService
2 android.provider.ContactsContract.Contacts
2 android.widget.Toolbar
2 android.R.attr
2 android.os.Build.VERSION_CODES
1 android.R.string
1 android.media.MediaExtractor
1 android.provider.Settings.Secure
1 android.view.InputDevice
1 android.view.accessibility.AccessibilityEvent
1 android.content.pm.PackageManager
1 android.widget.RemoteViews
1 android.app.Dialog
1 android.text.SpannableStringBuilder
1 android.app.WallpaperManager
1 android.os.Process
1 android.app.Instrumentation
1 android.speech.RecognizerIntent
1 android.content.pm.PackageInfo
1 android.os.Environment
1 android.provider.MediaStore
1 android.view.MotionEvent
1 android.view.ViewConfiguration
1 android.content.RestrictionsManager
1 android.hardware.Camera
1 android.media.MediaRecorder
1 android.view.accessibility.AccessibilityNodeInfo
1 android.app.AlertDialog.Builder
1 android.media.session.PlaybackState
1 android.widget.ImageView
1 android.view.ViewParent
1 android.content.Intent
1 android.provider.CallLog.Calls
1 android.database.Cursor
1 android.view.KeyEvent
1 android.test.mock.MockContext
1 android.transition.Transition
1 android.graphics.Canvas
<1 android.webkit.WebSettings
<1 android.provider.Settings.Global
<1 android.system.OsConstants
<1 android.os.Parcel
<1 android.widget.ListPopupWindow
<1 android.telephony.SmsManager
<1 android.net.wifi.WifiManager
<1 android.view.WindowManager.LayoutParams
<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%.