API Change Statistics

The overall difference between API Levels q-beta3 and 29 is approximately 0.43%.


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 1 19 0 20
Classes and Interfaces 17 69 19 105
Constructors 0 4 5 9
Methods 87 35 43 165
Fields 23 16 21 60
Total 128 143 88 359

Changed Packages, Sorted by Percentage Difference

Percentage Difference* Package
12 android.view.textclassifier
7 android.service.voice
7 android.net
4 android.media
2 android.graphics
1 android.content
1 android.app
<1 android.provider
<1 android.graphics.drawable
<1 android.util
<1 android.widget
<1 android.location
<1 android.os
<1 android.content.pm
<1 android.view.accessibility
<1 android.nfc
<1 android.view
<1 android
<1 android.app.admin

* See Calculation of Change Percentages, below.


Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage
Difference*
Class or Interface
75 android.view.textclassifier.TextClassifierEvent.Builder
66 android.media.AudioPlaybackCaptureConfiguration
50 android.graphics.PorterDuff
50 android.graphics.PorterDuffColorFilter
50 android.graphics.PorterDuffXfermode
50 android.net.ParseException
36 android.net.DnsResolver
33 android.graphics.ComposeShader
33 android.media.MediaController2
29 android.provider.MediaStore.Images.ImageColumns
28 android.app.VoiceInteractor
25 android.graphics.PorterDuff.Mode
22 android.media.MediaSession2
22 android.media.Session2Command
20 android.provider.MediaStore.DownloadColumns
17 android.provider.MediaStore.Video.VideoColumns
15 android.provider.MediaStore.MediaColumns
14 android.view.textclassifier.TextClassifierEvent
14 android.media.MediaSession2.ControllerInfo
12 android.media.MediaSession2Service
11 android.app.Notification.BubbleMetadata.Builder
11 android.media.AudioAttributes.Builder
11 android.util.StatsLog
10 android.app.Notification.BubbleMetadata
9 android.view.textclassifier.ConversationActions.Request.Builder
8 android.widget.AbsSeekBar
7 android.os.Environment
7 android.graphics.drawable.Icon
6 android.widget.ProgressBar
6 android.widget.CheckedTextView
6 android.util.DisplayMetrics
6 android.widget.CompoundButton
5 android.service.voice.VoiceInteractionSession
5 android.provider.MediaStore.Audio.AlbumColumns
5 android.widget.Switch
4 android.view.textclassifier.ConversationActions.Request
4 android.app.DownloadManager.Request
4 android.app.DownloadManager
4 android.view.MenuItem
3 android.content.pm.ShortcutInfo.Builder
3 android.os.LocaleList
3 android.provider.MediaStore
2 android.provider.MediaStore.Audio.AudioColumns
2 android.graphics.drawable.Drawable
2 android.widget.PopupWindow
2 android.widget.ImageView
2 android.location.GnssClock
1 android.view.Window
1 android.location.Location
1 android.view.accessibility.AccessibilityNodeInfo
1 android.os.Build.VERSION_CODES
1 android.content.pm.ShortcutInfo
1 android.content.pm.PermissionInfo
1 android.media.AudioAttributes
1 android.provider.Settings.Secure
1 android.nfc.NfcAdapter
1 android.view.View
<1 android.graphics.Canvas
<1 android.R.attr
<1 android.app.Notification.Builder
<1 android.graphics.Paint
<1 android.os.UserManager
<1 android.content.ContentResolver
<1 android.content.Intent
<1 android.widget.TextView
<1 android.app.Activity
<1 android.app.Notification
<1 android.media.AudioManager
<1 android.app.admin.DevicePolicyManager

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