Android Activity Alias in Flutter

Create Multiple App Icons from a Single Flutter App (Like Amazon Pay)


Introduction

Have you ever noticed that the Amazon app installs only once, but shows multiple icons in the Android app drawer—such as Amazon and Amazon Pay?

Each icon:

  • Opens a different screen
  • Has different quick actions
  • Behaves like a separate mini-app

Yet:

  • There is only one APK installed
  • Storage usage is not duplicated

This powerful Android capability is called:

Activity Alias

And yes—you can implement it inside a Flutter app.


What is Android Activity Alias?

Activity Alias is an Android manifest feature that allows:

  • Multiple launcher icons
  • Different labels & icons
  • Different entry activities
  • All from the same installed app

So instead of:

1 App → 1 Launcher Icon

You get:

1 App → Multiple Launcher Icons → Multiple Entry Experiences

Real-World Use Cases

Popular apps using this pattern:

  • Shopping + Payments separation
  • Consumer + Business mode
  • Lite tools inside a super-app
  • Feature-focused entry points

This improves:

  • User retention
  • Feature discoverability
  • Conversion to high-value flows (like payments)

Concept Architecture

Internally, Android app structure looks like:

Single APK
 ├── MainActivity        → Opens Home
 ├── PayActivity         → Opens Payments
 ├── Activity Alias #1   → Launcher icon for Main
 ├── Activity Alias #2   → Launcher icon for Pay

Each alias appears as a separate app icon, but all share:

  • Same package
  • Same permissions
  • Same data
  • Same installation

Visual Architecture Diagram Prompt (for AI image generation)

Use this prompt to generate a clean architecture diagram:



Implementing Activity Alias in Flutter

Flutter cannot directly create launcher aliases. You must configure it in the Android native layer.

We’ll do this step-by-step.


Step 1 — Create a Second Android Activity

Open:

android/app/src/main/AndroidManifest.xml

Add a new activity:

<activity
    android:name=".PayActivity"
    android:exported="true"
    android:theme="@style/Theme.App">
</activity>

This activity will later open a different Flutter route.


Step 2 — Add Activity Alias for Second Launcher Icon

<activity-alias
    android:name=".PayLauncher"
    android:enabled="true"
    android:exported="true"
    android:icon="@mipmap/ic_pay"
    android:label="My Pay"
    android:targetActivity=".PayActivity">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

</activity-alias>

Now Android will:

  • Show another icon in app drawer
  • Launch PayActivity
  • Still keep single installation

Launcher Result Illustration Prompt



Step 3 — Connect PayActivity to Flutter Route

Create:

PayActivity.kt
class PayActivity : FlutterActivity() {
    override fun getInitialRoute(): String {
        return "/pay"
    }
}

This tells Flutter:

“When launched from Pay icon → open /pay screen.”


Step 4 — Handle Route Inside Flutter

MaterialApp(
  initialRoute: '/',
  routes: {
    '/': (_) => HomeScreen(),
    '/pay': (_) => PayScreen(),
  },
);

Done 🎉

You now have:

  • Two app icons
  • Two independent entry flows
  • One Flutter app

User Flow Diagram Prompt



Advanced Capabilities

1. Enable/Disable Icons Dynamically

You can:

  • Show Pay icon only after login
  • Hide feature-based icons
  • Run A/B experiments

Controlled via:

PackageManager.setComponentEnabledSetting()

2. Separate Analytics Per Icon

Track:

  • Which launcher opened the app
  • Conversion from Pay icon vs Home
  • Feature adoption

This is huge for product teams.


3. White-Label Mini-Apps Inside One APK

Activity alias enables:

  • Partner-branded entry points
  • Region-specific icons
  • Campaign-based launchers

Without:

  • Multiple builds
  • Store re-submission

Product Strategy Illustration Prompt



Android vs iOS Limitation

Android

✔ Multiple launcher icons supported ✔ Separate quick actions per icon ✔ Same installation

iOS

❌ Multiple simultaneous icons not allowed ✔ Siri Shortcuts workaround ✔ Quick actions via long-press

So true Activity Alias exists only on Android.


When Should You Use Activity Alias?

Use it when you want:

  • Faster access to high-value features
  • Super-app architecture
  • Payment or scan flows to feel independent
  • Better engagement & retention

Avoid if:

  • App is very small
  • Features are not frequently used
  • UX may feel confusing

Final Thoughts

Android Activity Alias is one of the most underused growth features in mobile development.

With just:

  • 1 extra activity
  • 1 manifest alias
  • 1 Flutter route

You can transform a simple Flutter app into a multi-entry super-app experience—just like major fintech and commerce platforms.


If you'd like next, I can write:

Just tell me.

Post a Comment

Previous Post Next Post

Subscribe Us


Get tutorials, Flutter news and other exclusive content delivered to your inbox. Join 1000+ growth-oriented Flutter developers subscribed to the newsletter

100% value, 0% spam. Unsubscribe anytime