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)
com.android.bluetooth ./system/app/Bluetooth.apk bluetooth, no details
com.android.browser.provider ./system/app/BrowserProviderProxy.apk part of browser installation
com.android.calculator2 ./system/app/Calculator.apk calculator, no details
com.android.cellbroadcastreceiver ./system/app/CellBroadcastReceiver.apk receiver for government alerts
com.android.certinstaller ./system/app/CertInstaller.apk certificate installer, why a separate apk for this?
com.android.chrome ./system/app/Chrome.apk chrome browser
com.android.documentsui ./system/app/DocumentsUI.apk ???
com.android.dreams.basic ./system/app/BasicDreams.apk screensaver
com.android.facelock ./system/app/FaceLock.apk face locking module
com.android.htmlviewer ./system/app/HTMLViewer.apk html filter, usage unclear
com.android.keychain ./system/app/KeyChain.apk password storage?
com.android.nfc ./system/app/NfcNci.apk nfc app
com.android.packageinstaller ./system/app/PackageInstaller.apk package installer (difference from package processor?)
com.android.pacprocessor ./system/app/PacProcessor.apk package processor? (what does it do to packages?)
com.android.phasebeamorange ./system/app/SunBeam.apk live wallpaper
com.android.printspooler ./system/app/PrintSpooler.apk printing support
com.android.providers.downloads.ui ./system/app/DownloadProviderUi.apk shows browser download status
com.android.providers.partnerbookmarks ./system/app/PartnerBookmarksProvider.apk 3rd party bookmarks (ie verizon)
com.android.providers.telephony ./system/app/TelephonyProvider.apk android’s phone module
com.android.providers.userdictionary ./system/app/UserDictionaryProvider.apk user dictionary for spelling, etc
com.android.stk ./system/app/Stk.apk sim toolkit application (for radio interface layer)
com.android.wallpaper.livepicker ./system/app/LiveWallpapersPicker.apk wallpaper picker
com.google.android.apps.books ./system/app/Books.apk google books
com.google.android.apps.cloudprint ./system/app/CloudPrint2.apk google cloud printing
com.google.android.apps.docs ./system/app/Drive.apk google docs
com.google.android.apps.genie.geniewidget ./system/app/GenieWidget.apk news and weather app.. google’s?
com.google.android.apps.inputmethod.hindi ./system/app/GoogleHindiIME.apk dedicated indian input w/ translit
com.google.android.apps.magazines ./system/app/Magazines.apk google/play magazines
com.google.android.apps.maps ./system/app/Maps.apk google maps
com.google.android.apps.plus ./system/app/PlusOne.apk google plus
com.google.android.apps.uploader ./system/app/MediaUploader.apk google’s uploader (which apps use it?)
com.google.android.calendar ./system/app/CalendarGoogle.apk google calendar
com.google.android.deskclock ./system/app/DeskClockGoogle.apk google’s clock widget?
com.google.android.ears ./system/app/GoogleEars.apk hotword listener
com.google.android.email ./system/app/EmailGoogle.apk email client (google’s, not gmail)
com.google.android.exchange ./system/app/Exchange2Google.apk allows setting up Exchange (not POP3, IMAP) email accounts in the email app
com.google.android.gallery3d ./system/app/GalleryGoogle.apk gallery app, invaded by google (wants google account, etc)
com.google.android.gm ./system/app/Gmail2.apk gmail app
com.google.android.GoogleCamera ./system/app/GoogleCamera.apk camera app (google’s)
com.google.android.inputmethod.korean ./system/app/KoreanIME.apk dedicated korean input w/ translit
com.google.android.inputmethod.latin ./system/app/LatinImeGoogle.apk english input
com.google.android.inputmethod.pinyin ./system/app/GooglePinyinIME.apk dedicated chinese input w/ translit
com.google.android.keep ./system/app/Keep.apk google keep
com.google.android.launcher ./system/app/GoogleHome.apk THE LAUNCHER, this is what calls on things like quickgooglesearchbar and such
com.google.android.music ./system/app/Music2.apk google/play music
com.google.android.play.games ./system/app/PlayGames.apk google/play games
com.google.android.street ./system/app/Street.apk google streetview?
com.google.android.syncadapters.contacts ./system/app/GoogleContactsSyncAdapter.apk app to sync local contacts with google
com.google.android.talk ./system/app/Hangouts.apk google hangouts (google talk, hangouts, sms) .. now the default messenger
com.google.android.tts ./system/app/GoogleTTS.apk text to speech (google’s)
com.google.android.videos ./system/app/Videos.apk google/play movies and tv (not youtube)
com.google.android.youtube ./system/app/YouTube.apk google youtube
com.google.earth ./system/app/GoogleEarth.apk google earth (not shown in app drawer)
com.hp.android.printservice ./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?
com.quickoffice.android ./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
jp.co.omronsoft.iwnnime.ml ./system/app/iWnnIME.apk smileys keyboard
jp.co.omronsoft.iwnnime.ml.kbd.white ./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
com.android.backupconfirm ./system/priv-app/BackupRestoreConfirmation.apk restorer of sync’d settings (from where?)
com.android.contacts ./system/priv-app/Contacts.apk android contacts app (contaminated by google)
com.android.defcontainer ./system/priv-app/DefaultContainerService.apk android’s default app container (needed for app installs)
com.android.externalstorage ./system/priv-app/ExternalStorageProvider.apk handler for external storage? (like what?)
com.android.inputdevices ./system/priv-app/InputDevices.apk Advanced input devices (stylus, keyboard, etc)
com.android.keyguard ./system/priv-app/Keyguard.apk the lock-screen
com.android.location.fused ./system/priv-app/FusedLocation.apk combines GPS, Wifi spying, Cell tower (?) into one module that spits out user’s best known location
com.android.musicfx ./system/priv-app/MusicFX.apk equalizer, used by google/play music, others?
com.android.onetimeinitializer ./system/priv-app/OneTimeInitializer.apk Android’s (not google-app) setup screen?
com.android.phone ./system/priv-app/TeleService.apk part of Android’s phone functionality (see also TelephonyProvider) ?
com.android.providers.calendar ./system/priv-app/CalendarProvider.apk sync system for calendar
com.android.providers.contacts ./system/priv-app/ContactsProvider.apk android contacts sync (with what?)
com.android.providers.downloads ./system/priv-app/DownloadProvider.apk handles browser downloads
com.android.providers.media ./system/priv-app/MediaProvider.apk media scanner and such?
com.android.providers.settings ./system/priv-app/SettingsProvider.apk Android’s settings backend (to feed the UI) ?
com.android.proxyhandler ./system/priv-app/ProxyHandler.apk Android’s HTTP proxy support?
com.android.settings ./system/priv-app/Settings.apk Android’s settings (seems like it is the UI) ?
com.android.sharedstoragebackup ./system/priv-app/SharedStorageBackup.apk Android’s backup of shared storage (where? how?)
com.android.shell ./system/priv-app/Shell.apk this is the shell that is launched by ‘adb shell’
com.android.systemui ./system/priv-app/SystemUI.apk System’s UI (themeing, not launcher), related to framework-res
com.android.vending ./system/priv-app/Phonesky.apk google play store
com.android.vpndialogs ./system/priv-app/VpnDialogs.apk part Android’s VPN system
com.android.wallpapercropper ./system/priv-app/WallpaperCropper.apk wallpaper installation helper
com.google.android.apps.walletnfcrel ./system/priv-app/Wallet.apk google wallet (payments, sending money, coupons, nfc, bloatware)
com.google.android.backup ./system/priv-app/GoogleBackupTransport.apk google’s backup of settings into its cloud
com.google.android.configupdater ./system/priv-app/ConfigUpdater.apk related to updating settings (which ones) from sync’d google ??
com.google.android.dialer ./system/priv-app/GoogleDialer.apk google’s non-AOSP dialer
com.google.android.feedback ./system/priv-app/GoogleFeedback.apk force-close reporting for market apps
com.google.android.gms ./system/priv-app/PrebuiltGmsCore.apk part of the (evil) 4.4 launcher/googlehome
com.google.android.googlequicksearchbox ./system/priv-app/Velvet.apk part of the (evil) 4.4 launcher/googlehome
com.google.android.gsf ./system/priv-app/GoogleServicesFramework.apk Google’s BACK-DOOR. It updates itself, outside of market, and pushes updates onto anything google
com.google.android.gsf.login ./system/priv-app/GoogleLoginService.apk google’s login system (for adding gmail accounts?)
com.google.android.marvin.talkback ./system/priv-app/talkback.apk accessibility, reads screen output
com.google.android.onetimeinitializer ./system/priv-app/GoogleOneTimeInitializer.apk some sort of initializer for google services framework
com.google.android.partnersetup ./system/priv-app/GooglePartnerSetup.apk ??, seems like definite bloat
com.google.android.setupwizard ./system/priv-app/SetupWizard.apk Android’s setup ui ? (then runs OneTimeSetup?)
com.google.android.tag ./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 com.package.name
To reverse the effect do:
#pm enable com.package.name
3. Restart Android:
#stop
#start
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.