Reconfiguring Android TV's Default Launch Sequence After a Custom UI

Updated 2026-11-03

reconfiguring the default Android TV launch sequence after flashing a custom UI package

Why the launch sequence breaks after a custom UI install

Most people treat Android TV like a set-top box that boots straight to the home screen. In reality, the launcher process runs twice: once for the system surface and once for the custom overlay that ships with a new UI package. When you flash a custom launcher via sideloading or via a manufacturer’s OTA, the system often forgets to reattach the default activity chain, leaving the first second of boot as an empty black screen or a frozen “Loading” spinner.

The root cause is simple: the native HomeSettings service loses its registered intent filter once the custom package takes over MainActivity. The result is a regression in perceived latency, broken voice search, and the dreaded “Where did my app go?” moment. This guide walks through the exact steps to reattach the default launch sequence without bricking the device’s input path.

Uninstalling and clearing the previous launcher package

Before you attach anything, remove the custom package completely. Open Settings > Apps > All apps, locate the launcher you installed (for example, Flaunt or Apex Launcher), and tap Uninstall. If the package is still listed in the package store because it came from a side-loaded .zip, use the ADB shell to delete it:

adb shell pm uninstall -f com.example.flauti

Do not skip the reboot. Android requires the old shared library cache to clear before the next launch sequence can register cleanly. After a restart, verify the old package is gone with:

adb shell pm list packages | grep -i flauti

If you see the name, re-uninstall. You do not want two launchers competing for the same intent filter.

Rebuilding the default activity chain

Once the custom launcher is removed, Android TV restarts the main surface with the stock com.google.android.runtime based home service. To restore it, edit the /system/etc/init/hw/recore.xml (or the vendor equivalent) and ensure it contains the correct <service> entries for com.google.android.rui and com.google.android.launcher.com.google.rui.

For most users, the simpler route is to push a minimal launch_settings.xml into the /vendor/framework/lib directory:

<service android:name="com.google.android.rui" android:label="@android:string/home_screen" android:exported="true"/>

Reboot. The home screen will pop up in the default layout, voice search will respond, and the quick-login tiles will reappear. If you use a third-party voice assistant (e.g., Google Assistant skills loaded after the home screen), make sure their intent-filter blocks target the default com.google.android.launcher.intent.category.LAUNCHER action again.

Keeping quick access and voice search alive

The biggest risk during reconfiguration is losing the “quick access” grid and the voice search bar. Both depend on the system’s LaunchManager having a valid reference to com.google.android.rui. After you restore the activity chain, run this one-line check to confirm the intent is firing:

dumpsys activity launcher -k | grep -i com.google.android.rui

If the log shows Process "com.google.android.rui" has stopped, the launcher’s binary didn’t register. Re-install the stock RUI APK from a trusted source (Samsung’s firmware image or Google’s official APK) and re-run the launch chain. You can also pin your custom launcher back into place by editing /system/etc/init/recore.xml to include the custom activity, but only if you keep the android:baseActivity attribute pointing to the stock UI. Leaving it pointing to a custom launcher’s PID will break the system-wide search index.

How to flash the custom launcher correctly next time

If you plan to reinstall a different custom launcher later, follow this three-step sequence to avoid a stale launch sequence:

  1. Reset the home service. Before flashing, boot into recovery and run reset-config or clear cache partitions.
  2. Flash the new package. Use adb install --stage-install and then reboot immediately—don’t keep the device in a hybrid state while the new package is mounting.
  3. Re-register the default intent. Edit recore.xml or the custom launcher’s res/xml/launch_patterns.xml to declare com.google.android.launcher.com.google.rui as the fallback. Boot, then check adb shell dumpsys launch

This order guarantees that the default home surface resumes in its original form, and the custom launcher only takes over when you explicitly start it from the quick-access grid.

Verifying the final launch sequence

After the full reconfiguration, the goal is a predictable boot: home screen → recommended apps grid → voice search bar. Test it on a cold boot (full power cycle from shutdown). Confirm the following:

If any of these fail, the culprit is usually a missing android:exported flag or an incorrect <activity> android:label. The stock Android TV launcher bundles the correct flags in a known XML block; your custom package almost never does.

Final notes on maintenance and safety

Android TV’s launcher path is a common point of failure, and not just for enthusiasts who flash UIs. Every update from the Play Store or a Samsung Firmware Update (SFU) package can overwrite recore.xml, which explains why a launcher that worked yesterday suddenly behaves strangely. Keep a copy of the original recore.xml (from a stock firmware build) handy, and always rebuild before any major customization.

Resetting the launcher settings via Settings > Home > Home screen options > Reset is safe and does not remove your installed apps, but it does wipe your custom themes. For a permanent solution that preserves both convenience and customization, the XML-based approach above remains the most reliable method.


Related reading: more Android TV notes

Read next