Skip to content

System Launcher

This chapter describes how to customize the Android system launcher, applicable to A133, H618, A733, T527, and all Rockchip series platforms.

Source Code Paths

# a133
android/packages/apps/Launcher3/

# h618 tv
vendor/aw/homlet/package/TVLauncher

# t527 a733 rk && h618 tablet
packages/apps/Launcher3/

Building APK Individually

# rk series
./build.sh lunch
source build/envsetup.sh
lunch $TARGET_PRODUCT-$BUILD_VARIANT
make Launcher3QuickStepGo -j32

# t527
source build/envsetup.sh
lunch t527_demo_arm64-userdebug
m Launcher3QuickStepGo -j32

# a733 
source build/envsetup.sh
lunch a733_demo_aiot_arm64-userdebug
m Launcher3QuickStepGo -j32

# a133
cd android/
source build/envsetup.sh
lunch ceres_c3-userdebug
m Launcher3QuickStepGo -j32

H618 Launcher Switching

In H618 Android 12.0, the KICKPI_PALTFORM variable in homlet.mk switches between TV and Tablet launchers. TV mode is the default. Add the following in BoardConfig.mk or the corresponding product .mk file:

--- a/device/softwinner/apollo/apollo_p2.mk
+++ b/device/softwinner/apollo/apollo_p2.mk
+
+KICKPI_PALTFORM := tablet
Value Launcher Applications
tv (default) TV Launcher TvLauncher, TvSettings
tablet Tablet Launcher Launcher3QuickStep, Settings, SystemUI

APK paths:

  • TV Launcher: vendor/aw/homlet/package/TVLauncher
  • Tablet Launcher: packages/apps/Launcher3/
--- a/android/packages/apps/Launcher3/src/com/android/launcher3/config/BaseFlags.java
+++ b/android/packages/apps/Launcher3/src/com/android/launcher3/config/BaseFlags.java
@@ -68,7 +68,7 @@ abstract class BaseFlags {
     public static final boolean LAUNCHER3_PROMISE_APPS_IN_ALL_APPS = false;

     // Enable moving the QSB on the 0th screen of the workspace
-    public static final boolean QSB_ON_FIRST_SCREEN = true;
+    public static final boolean QSB_ON_FIRST_SCREEN = false;

     public static final TogglableFlag EXAMPLE_FLAG = new TogglableFlag("EXAMPLE_FLAG", true,
             "An example flag that doesn't do anything. Useful for testing");

Launcher Replacement

  1. Add the HOME category attribute to your application's AndroidManifest.xml to qualify it as a home application:
<activity android:name=".MainActivity" android:directBootAware="true">
    <intent-filter>
        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>
  1. Add launcher override priority and system signing to your application's Android.mk or Android.bp.

Android.mk — Add the following to the module declaration:

--- a/vendor/rockchip/common/apps/TestLauncher/Android.mk
+++ b/vendor/rockchip/common/apps/TestLauncher/Android.mk
@@ - ... @@
+LOCAL_OVERRIDES_PACKAGES := \
+    Launcher2 \
+    Launcher3 \
+    Launcher3QuickStep \
+    Launcher3QuickStepGo

Android.bp — Add overrides to the android_app_import block:

--- a/vendor/rockchip/common/apps/TestLauncher/Android.bp
+++ b/vendor/rockchip/common/apps/TestLauncher/Android.bp
@@ - ... @@

+    certificate: "platform"
+    privileged: true

+    overrides: [
+        "Launcher2",
+        "Launcher3",
+        "Launcher3QuickStep",
+        "Launcher3QuickStepGo",
+    ],

Warning

For H618 (K2B / K2C), you also need to override TvLauncher.