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.
[…] just apps I don’t use for example newsstand, fitness apps, movies etc.. I got this idea from http://kacangbawang.com/nexus-5-reversible-de-bloat/ However, instead of removing the files after flashing, I want to remove the files before […]