API Change Statistics

The overall difference between API Levels 3 and 4 is approximately 2.45%.


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.

TypeAdditionsChangesRemovalsTotal
Packages426030
Classes and Interfaces2273297
Constructors68014
Methods80433126
Fields2082729264
Total32017734531

Changed Packages, Sorted by Percentage Difference

Percentage Difference*Package
36android.telephony.gsm
22android.telephony
16android.opengl
9android.content.pm
9android.view.animation
5android.graphics.drawable
4android.content
4android.net.wifi
2android.media
2android.util
2android.os
1android
1android.widget
1android.app
<1android.view
<1android.content.res
<1android.test
<1android.location
<1android.graphics
<1android.text.style
<1android.test.mock
<1android.provider
<1android.inputmethodservice
<1java.util.concurrent.locks
<1java.util.concurrent
<1android.hardware

* See Calculation of Change Percentages, below.


Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage
Difference*
Class or Interface
55 android.telephony.gsm.SmsMessage
50 android.media.ToneGenerator
50 android.telephony.gsm.SmsManager
50 android.telephony.gsm.SmsMessage.SubmitPdu
47 android.graphics.drawable.NinePatchDrawable
42 android.media.MediaRecorder.AudioSource
33 android.util.Config
30 android.os.Build.VERSION
25 android.telephony.gsm.SmsMessage.MessageClass
23 android.R.anim
23 android.text.style.ImageSpan
22 android.app.SearchManager
22 android.widget.TabWidget
21 android.util.DisplayMetrics
21 android.graphics.BitmapFactory.Options
20 android.graphics.drawable.BitmapDrawable
20 android.test.AndroidTestCase
16 android.widget.TabHost.TabSpec
15 android.os.RemoteCallbackList
14 android.content.pm.PackageManager
14 android.graphics.Bitmap
12 android.content.pm.ApplicationInfo
12 android.content.pm.ConfigurationInfo
11 android.app.LauncherActivity
10 android.content.res.Configuration
8 android.provider.MediaStore.Audio.Genres.Members
7 android.provider.Settings.Secure
7 android.app.LauncherActivity.ListItem
7 android.location.Address
6 android.os.Build
6 android.view.VelocityTracker
6 android.widget.CheckedTextView
5 android.graphics.Typeface
5 android.provider.MediaStore.Audio.Media
5 android.telephony.TelephonyManager
5 java.util.concurrent.TimeUnit
4 android.content.ContentProvider
4 android.graphics.NinePatch
4 android.graphics.drawable.AnimationDrawable
4 android.Manifest.permission_group
4 android.graphics.BitmapFactory
4 android.Manifest.permission
4 android.content.pm.ProviderInfo
3 android.view.ViewConfiguration
3 android.view.Window.Callback
3 android.inputmethodservice.KeyboardView
3 android.content.ComponentName
3 android.widget.PopupWindow
2 android.R.attr
2 android.content.Intent
2 android.widget.AutoCompleteTextView
2 android.util.TypedValue
2 android.app.PendingIntent
2 android.view.Surface
2 android.content.Context
1 android.view.View
1 android.media.MediaRecorder
1 android.test.mock.MockPackageManager
1 java.util.concurrent.locks.AbstractQueuedSynchronizer
1 android.R.style
1 android.widget.ListView
1 android.media.AudioManager
1 android.content.pm.ActivityInfo
1 android.graphics.drawable.Drawable
1 android.graphics.Canvas
1 android.net.wifi.WifiManager
<1 android.test.mock.MockContext
<1 android.content.ContextWrapper
<1 android.hardware.SensorManager
<1 android.app.Dialog
<1 android.R.drawable
<1 android.provider.Settings.System
<1 android.app.Activity

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