There was a recent update to Android TV which added advertisements to the home screen of my Nvidia Shield. This was an unwanted surprise but luckily it was not too difficult switching to a 3rd party launcher. I am recreating the steps that I took with an Android TV device in the Android emulator.

Android TV App Screen

Setup

I would like to install ATV Launcher however, I do not log into my Google Account on my Nvidia Shield device so this is a problem. As of the time of this writing, ATV Launcher is also not on APKMirror. I will adapt and overcome.

I downloaded the ATV Launcher application onto my Pixel phone via the Play Store. From there I enabled USB debugging, plugged my phone into my computer, and used adb to find and pull the package.

# List packages and find the launcher
$ adb shell pm list packages | grep -i atv
package:ca.dstudio.atvlauncher.free

# Get the full path to the package
$ adb shell pm path ca.dstudio.atvlauncher.free
package:/data/app/~~uOaPvbC3hrgIqFeWGPyV-Q==/ca.dstudio.atvlauncher.free-27cidHv-2G3iZbmOTDxUAw==/base.apk

# Pull the package off of the phone
$ adb pull /data/app/~~uOaPvbC3hrgIqFeWGPyV-Q==/ca.dstudio.atvlauncher.free-27cidHv-2G3iZbmOTDxUAw==/base.apk atv_launcher.apk
/data/app/~~uOaPvbC3hrgIqFeWGPyV-Q==/ca.dstudio.atvlauncher.free-27cidHv-2G3iZbmOTDxUAw==/base.apk: 1 file pulled, 0 skipped. 36.3 MB/s (2043758 bytes in 0.054s)

Installing the Launcher on the Shield TV

Now that I have the launcher package, I can install it to the Android TV device.

I connected to the Android TV device via adb and installed the launcher app that I previously pulled from my phone. The new launcher does not start by default but can be started manually via the app list. This was not good enough, I wanted the 3rd party launcher to run by default. To force the new launcher I had to forcefully disable the default.

# Install the new launcher
$ adb install atv_launcher.apk
Performing Streamed Install
Success

# Find the default launcher
$ adb shell pm list packages | grep -i launcher
package:ca.dstudio.atvlauncher.free
package:com.google.android.tvlauncher

# Disable the default launcher
$ adb shell pm disable-user --user 0 com.google.android.tvlauncher
Package com.google.android.tvlauncher new state: disabled-user

The Result

The end result with a few favorite applications installed and a wallpaper applied. Perfect! If I ever need to re-enable the default launcher I can do so with:

$ adb shell pm enable com.google.android.tvlauncher
Package com.google.android.tvlauncher new state: enabled

Conclusion

Although this change to Android TV was unwelcome, I enjoyed learning about my device and customizing it to my needs. At least customiztion is still possible but when will the next update roll out that I have to react to?

The following threads on HN and Reddit were good resources.