Nexus 5 – Reversible De-Bloat

by kacang bawang

In this post I show you a list of pre-installed apps that come with your Nexus 5 along with a quick explanation of what they do and how to reversibly disable them, should you choose to do so.

We will need:
* Rooted Nexus 5
* adb

First, let’s take a look at the list of all pre-installed apk’s that are found on the Nexus5 (there are also libraries and xml’s, but we will concern ourselves only with the apk’s). I have color coded them according to the thoroughness of debloat.

Color code:
Red – Level 1 De-bloat, removes non-essential Google apps, but leaves the quick search box, Play store and Google Services Framework (GSF)
Blue – Level 2 De-bloat, removes all Google apps including quick search box, GSF, Play store. REQUIRES PRIOR INSTALLATION OF AN ALTERNATIVE LAUNCHER (eg NOVA)
Green – “Forgiven” apps. These are critical to phone functioning (eg Dialer), but are contaminated by Google (such as “log in” buttons). Ideally these will be replaced with free-market analogs, but I leave that step up to you.

## Anything installed in /system/app will run with system privileges, regardless
## of being signed with system key or not.
## These often have an odex counterpart.
android ./system/framework/framework-res.apk GUI resources for the framework (for themeing ui) ./system/app/Bluetooth.apk bluetooth, no details ./system/app/BrowserProviderProxy.apk part of browser installation ./system/app/Calculator.apk calculator, no details ./system/app/CellBroadcastReceiver.apk receiver for government alerts ./system/app/CertInstaller.apk certificate installer, why a separate apk for this? ./system/app/Chrome.apk chrome browser ./system/app/DocumentsUI.apk ??? ./system/app/BasicDreams.apk screensaver ./system/app/FaceLock.apk face locking module ./system/app/HTMLViewer.apk html filter, usage unclear ./system/app/KeyChain.apk password storage? ./system/app/NfcNci.apk nfc app ./system/app/PackageInstaller.apk package installer (difference from package processor?) ./system/app/PacProcessor.apk package processor? (what does it do to packages?) ./system/app/SunBeam.apk live wallpaper ./system/app/PrintSpooler.apk printing support ./system/app/DownloadProviderUi.apk shows browser download status ./system/app/PartnerBookmarksProvider.apk 3rd party bookmarks (ie verizon) ./system/app/TelephonyProvider.apk android’s phone module ./system/app/UserDictionaryProvider.apk user dictionary for spelling, etc ./system/app/Stk.apk sim toolkit application (for radio interface layer) ./system/app/LiveWallpapersPicker.apk wallpaper picker ./system/app/Books.apk google books ./system/app/CloudPrint2.apk google cloud printing ./system/app/Drive.apk google docs ./system/app/GenieWidget.apk news and weather app.. google’s? ./system/app/GoogleHindiIME.apk dedicated indian input w/ translit ./system/app/Magazines.apk google/play magazines ./system/app/Maps.apk google maps ./system/app/PlusOne.apk google plus ./system/app/MediaUploader.apk google’s uploader (which apps use it?) ./system/app/CalendarGoogle.apk google calendar ./system/app/DeskClockGoogle.apk google’s clock widget? ./system/app/GoogleEars.apk hotword listener ./system/app/EmailGoogle.apk email client (google’s, not gmail) ./system/app/Exchange2Google.apk allows setting up Exchange (not POP3, IMAP) email accounts in the email app ./system/app/GalleryGoogle.apk gallery app, invaded by google (wants google account, etc) ./system/app/Gmail2.apk gmail app ./system/app/GoogleCamera.apk camera app (google’s) ./system/app/KoreanIME.apk dedicated korean input w/ translit ./system/app/LatinImeGoogle.apk english input ./system/app/GooglePinyinIME.apk dedicated chinese input w/ translit ./system/app/Keep.apk google keep ./system/app/GoogleHome.apk THE LAUNCHER, this is what calls on things like quickgooglesearchbar and such ./system/app/Music2.apk google/play music ./system/app/PlayGames.apk google/play games ./system/app/Street.apk google streetview? ./system/app/GoogleContactsSyncAdapter.apk app to sync local contacts with google ./system/app/Hangouts.apk google hangouts (google talk, hangouts, sms) .. now the default messenger ./system/app/GoogleTTS.apk text to speech (google’s) ./system/app/Videos.apk google/play movies and tv (not youtube) ./system/app/YouTube.apk google youtube ./system/app/GoogleEarth.apk google earth (not shown in app drawer) ./system/app/HPPrintPlugin.apk hp printer support
com.lge.SprintHiddenMenu ./system/app/SprintHiddenMenu.apk may be advanced settings for sprint users (might be possible to turn off throttling, if any)
com.lge.update ./system/app/UpdateSetting.apk seems like interface to OTA updater ?
com.qualcomm.qcrilmsgtunnel ./system/app/qcrilmsgtunnel.apk qualcomm’s ???
com.qualcomm.shutdownlistner ./system/app/shutdownlistener.apk qualcomm’s shutdown listener? (to what end?)
com.qualcomm.timeservice ./system/app/TimeService.apk qualcomm’s hardware time keeper? ./system/app/QuickOffice.apk office app
com.redbend.vdmc ./system/app/OmaDmclient.apk com.redbend.vdmc, runs under ‘radio’ user, suspected to be the OTA agent
eu.chainfire.supersu ./system/app/Superuser.apk root access manager ./system/app/iWnnIME.apk smileys keyboard ./system/app/iWnnIME_Kbd_White.apk smileys keyboard, diff color scheme
## priv-app directory differs from app in that while both directory contents can not be uninstalled w/o root
## those in priv-app do not automatically run with system permissions (need to be signed with system key, and
## must request privilege escalation). This is a very good place for bloatware ./system/priv-app/BackupRestoreConfirmation.apk restorer of sync’d settings (from where?) ./system/priv-app/Contacts.apk android contacts app (contaminated by google) ./system/priv-app/DefaultContainerService.apk android’s default app container (needed for app installs) ./system/priv-app/ExternalStorageProvider.apk handler for external storage? (like what?) ./system/priv-app/InputDevices.apk Advanced input devices (stylus, keyboard, etc) ./system/priv-app/Keyguard.apk the lock-screen ./system/priv-app/FusedLocation.apk combines GPS, Wifi spying, Cell tower (?) into one module that spits out user’s best known location ./system/priv-app/MusicFX.apk equalizer, used by google/play music, others? ./system/priv-app/OneTimeInitializer.apk Android’s (not google-app) setup screen? ./system/priv-app/TeleService.apk part of Android’s phone functionality (see also TelephonyProvider) ? ./system/priv-app/CalendarProvider.apk sync system for calendar ./system/priv-app/ContactsProvider.apk android contacts sync (with what?) ./system/priv-app/DownloadProvider.apk handles browser downloads ./system/priv-app/MediaProvider.apk media scanner and such? ./system/priv-app/SettingsProvider.apk Android’s settings backend (to feed the UI) ? ./system/priv-app/ProxyHandler.apk Android’s HTTP proxy support? ./system/priv-app/Settings.apk Android’s settings (seems like it is the UI) ? ./system/priv-app/SharedStorageBackup.apk Android’s backup of shared storage (where? how?) ./system/priv-app/Shell.apk this is the shell that is launched by ‘adb shell’ ./system/priv-app/SystemUI.apk System’s UI (themeing, not launcher), related to framework-res ./system/priv-app/Phonesky.apk google play store ./system/priv-app/VpnDialogs.apk part Android’s VPN system ./system/priv-app/WallpaperCropper.apk wallpaper installation helper ./system/priv-app/Wallet.apk google wallet (payments, sending money, coupons, nfc, bloatware) ./system/priv-app/GoogleBackupTransport.apk google’s backup of settings into its cloud ./system/priv-app/ConfigUpdater.apk related to updating settings (which ones) from sync’d google ?? ./system/priv-app/GoogleDialer.apk google’s non-AOSP dialer ./system/priv-app/GoogleFeedback.apk force-close reporting for market apps ./system/priv-app/PrebuiltGmsCore.apk part of the (evil) 4.4 launcher/googlehome ./system/priv-app/Velvet.apk part of the (evil) 4.4 launcher/googlehome ./system/priv-app/GoogleServicesFramework.apk Google’s BACK-DOOR. It updates itself, outside of market, and pushes updates onto anything google ./system/priv-app/GoogleLoginService.apk google’s login system (for adding gmail accounts?) ./system/priv-app/talkback.apk accessibility, reads screen output ./system/priv-app/GoogleOneTimeInitializer.apk some sort of initializer for google services framework ./system/priv-app/GooglePartnerSetup.apk ??, seems like definite bloat ./system/priv-app/SetupWizard.apk Android’s setup ui ? (then runs OneTimeSetup?) ./system/priv-app/TagGoogle.apk google photo(?) tagging functionality (location, people, terrorists, etc)

How to turn each individual app on/off:
1. Log into the device using adb
2. On the device use package manager (pm) in the following manner:
#pm disable
To reverse the effect do:
#pm enable
3. Restart Android:
In some cases you won’t even need to restart, and the changes will be applied ‘live’

Note: there is one app that could not be turned off this way – com.redbend.vdmc (believed to be the OTA agent). To disable it one needs to rename its apk from OmaDmclient.apk to something like OmaDmclient.apk.bak, and for good measure rename its data folder analogously. Remember that you will need to remount the system partition to read-write mode by doing:
#mount -o remount,rw /system
and then back to read only (once done with renaming):
#mount -o remount,ro /system

Another Note: you will want an aftermarket SMS app if you do a Level2 de-bloat, as Google Hangouts (used as default SMS app) has been turned off.

I wrote some simple scripts to automate this process. Use like this:
1. Transfer all files to your sd card
2. From adb do:
#cd /mnt/sdcard
#sh debloat level1.lst disable
#sh debloat level2.lst disable
#sh debloat forgive.lst enable
or to reverse
#sh debloat level1.lst enable
#sh debloat level2.lst enable

Get the scripts here

If there is enough interest in this type of debloat I can write some recovery scripts that would really simplify this process.