If your Flutter app icon disappears after changing the Android package name and Android starts showing the default Android/robot icon instead, the problem may be much simpler than rebuilding the icons.
I recently ran into exactly this problem after using the Flutter packages icons_launcher to generate my launcher icons and package_rename to change the application’s package name.
Everything had been working correctly before the rename.
After changing the package name, however, the application installed successfully but displayed the default Android icon instead of my custom launcher icon.
Running flutter clean, rebuilding the application, and regenerating the icons did not solve the problem.
The actual cause was one missing line in:
android/app/src/main/AndroidManifest.xml
The <application> element was missing:
android:icon="@mipmap/ic_launcher"
Adding that single line fixed the issue immediately.
This guide explains the problem, the fix, and what to check if your Flutter launcher icon suddenly disappears after renaming your Android application.
The Problem
My Flutter project used the icons_launcher package to generate the application icons.
A typical configuration looks similar to this:
dev_dependencies:
icons_launcher: ^3.1.0
icons_launcher:
image_path: "assets/app_icon.png"
platforms:
android:
enable: true
The launcher icons were generated using:
flutter pub get dart run icons_launcher:create
The icons_launcher package generates launcher icons for Android and other supported platforms from the configured image.
Everything worked correctly.
I then changed the package name using package_rename.
For example:
package_rename_config:
android:
app_name: "My App"
package_name: "com.example.myapp"
and ran:
dart run package_rename
package_rename modifies a number of platform-specific project configuration fields, including Android project configuration.
After this change, the application still built and installed normally.
But the launcher icon had changed to the generic Android icon.
Symptoms
You may have the same problem if:
- Your Flutter application previously had the correct icon.
- You changed the Android package name or application configuration.
- The app still builds without errors.
- The correct
ic_launcherfiles are present inside the Android project. - Regenerating the launcher icons does not help.
flutter cleandoes not help.- Android displays a generic/default Android application icon.
In this situation, don’t immediately assume that icons_launcher failed.
The icon files may already be perfectly fine.
Android may simply not be told which icon resource to use.
The Fix
Open:
android/app/src/main/AndroidManifest.xml
Find the <application> element.
Mine effectively looked like this:
<application
android:label="My App"
android:name="${applicationName}">
The launcher icon declaration was missing.
Add:
android:icon="@mipmap/ic_launcher"
The corrected configuration becomes:
<application
android:label="My App"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
That’s it.
After adding the line and rebuilding the application, my custom Flutter launcher icon appeared again.
Why android:icon Matters
Android gets important application-level configuration from the <application> element in AndroidManifest.xml.
The following line tells Android which drawable or mipmap resource should be used as the application’s launcher icon:
android:icon="@mipmap/ic_launcher"
Here:
@mipmap/
refers to an Android mipmap resource directory, while:
ic_launcher
is the name of the launcher icon resource.
Your Flutter icon generator may have already created files such as:
android/app/src/main/res/mipmap-mdpi/ic_launcher.png android/app/src/main/res/mipmap-hdpi/ic_launcher.png android/app/src/main/res/mipmap-xhdpi/ic_launcher.png android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
But generating these files and referencing them from the Android application are two separate things.
In my case:
Icon resources ✅ Correct icons_launcher configuration ✅ Correct Flutter build ✅ Correct Package rename ✅ Completed AndroidManifest icon ❌ Missing
So regenerating the images repeatedly could never fix the underlying problem.
Quick Fix
If you just want the solution, open:
android/app/src/main/AndroidManifest.xml
and make sure your <application> contains:
android:icon="@mipmap/ic_launcher"
For example:
<application
android:label="My App"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
Then build the application again:
flutter run
or:
flutter build apk
There was no need in my case to regenerate the icons, delete Gradle caches, recreate the Android project, or reinstall Flutter.
How to Verify the Launcher Icon Files
Before regenerating anything, check:
android/app/src/main/res/
You will normally see directories such as:
mipmap-mdpi mipmap-hdpi mipmap-xhdpi mipmap-xxhdpi mipmap-xxxhdpi
Look inside them for:
ic_launcher.png
For example:
android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Open one of the images.
If it contains your correct application icon, your icon generation process probably worked.
Next check:
android/app/src/main/AndroidManifest.xml
for:
android:icon="@mipmap/ic_launcher"
This is a much faster diagnostic process than repeatedly regenerating the same icon files.
Using icons_launcher with Flutter
If the icon resources actually are missing, then regenerate them.
A basic pubspec.yaml configuration can look like:
dev_dependencies:
icons_launcher: ^3.1.0
icons_launcher:
image_path: "assets/app_icon.png"
platforms:
android:
enable: true
Then run:
flutter pub get dart run icons_launcher:create
The official icons_launcher documentation currently recommends dart run icons_launcher:create after configuring the package.
After generation, check the Android mipmap-* directories again.
Using package_rename
package_rename is useful when you want to change Flutter application details such as the Android package name without manually editing every platform-specific file.
For example:
dev_dependencies:
package_rename: ^1.10.1
package_rename_config:
android:
app_name: "My App"
package_name: "com.example.myapp"
Then run:
dart run package_rename
The current package_rename package documentation describes dart run package_rename as its standard command.
After running a tool that modifies native Android configuration, however, I recommend checking your final:
android/app/src/main/AndroidManifest.xml
before generating a production release.
Recommended Order When Renaming a Flutter App
For future projects, I prefer doing the rename before generating the final launcher icons.
For example:
Configure package_rename
↓
Run package_rename
↓
Check AndroidManifest.xml
↓
Generate launcher icons
↓
Build application
↓
Test installed app
Commands:
dart run package_rename
Then check that the manifest contains:
android:icon="@mipmap/ic_launcher"
Then generate the icons:
dart run icons_launcher:create
Finally:
flutter build apk
or:
flutter build appbundle
For release builds, you can also review the official Flutter Android deployment documentation.
What About flutter clean?
A common reaction when a Flutter icon does not update is:
flutter clean flutter pub get flutter run
There is nothing wrong with trying this when dealing with stale build artifacts.
But it is important to understand that:
flutter clean
cannot restore a missing XML attribute.
If this is missing:
android:icon="@mipmap/ic_launcher"
cleaning and rebuilding the same project will still build with the same incorrect Android manifest configuration.
That is exactly why repeated rebuilding did not solve my issue.
Check Your Full <application> Configuration
A typical Flutter Android application section may look similar to:
<application
android:label="My App"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
The three attributes have different purposes:
android:label
Controls the application’s displayed name.
android:name
Defines the Android Application class configuration used by Flutter.
android:icon
Defines the application’s launcher icon.
For this particular problem, the important line is:
android:icon="@mipmap/ic_launcher"
What If I Use a Different Launcher Icon Name?
Not every Flutter project has to use:
ic_launcher
For example, your generated resource could be called:
launcher_icon
In that situation your manifest must reference the same name:
android:icon="@mipmap/launcher_icon"
The important thing is that these two sides match.
For example:
Manifest: @mipmap/ic_launcher Resource: mipmap-xxxhdpi/ic_launcher.png ✅ Match
But:
Manifest: @mipmap/launcher_icon Resource: mipmap-xxxhdpi/ic_launcher.png ❌ Mismatch
So always check the resource name rather than blindly copying a value from another project.
Troubleshooting Checklist
If your Flutter app shows the default Android icon, check these items in order.
1. Check AndroidManifest.xml
Open:
android/app/src/main/AndroidManifest.xml
Confirm:
android:icon="@mipmap/ic_launcher"
2. Check that the resources exist
Look under:
android/app/src/main/res/
for:
mipmap-mdpi/ic_launcher.png mipmap-hdpi/ic_launcher.png mipmap-xhdpi/ic_launcher.png mipmap-xxhdpi/ic_launcher.png mipmap-xxxhdpi/ic_launcher.png
3. Check the actual image
Open one of the generated ic_launcher.png files.
Make sure it contains your custom icon.
4. Check the resource name
If your manifest says:
@mipmap/ic_launcher
your generated resource should also be named:
ic_launcher
5. Regenerate only if necessary
If the files are missing or wrong:
dart run icons_launcher:create
6. Clean if Android still appears to be using old build artifacts
flutter clean flutter pub get flutter run
7. Uninstall the old app if necessary
Android launchers can sometimes retain old icon information temporarily.
You can uninstall your package using:
adb uninstall com.example.myapp
and reinstall it.
For more information about Android debugging and device commands, see the official Flutter Android setup documentation.
But this should come after checking the manifest.
The Lesson From This Bug
The biggest mistake I made while troubleshooting this problem was assuming:
The icon looks wrong, therefore the icon generator must be broken.
It wasn’t.
icons_launcher had already generated the correct image resources.
The problem was Android configuration.
The missing line:
android:icon="@mipmap/ic_launcher"
meant Android was no longer being explicitly pointed to the generated launcher icon.
Once that line was restored, everything worked without any other changes.
So if your Flutter launcher icon disappears after changing the package name, check AndroidManifest.xml before spending time deleting caches or regenerating icons.
FAQ
Why is my Flutter app showing the default Android icon?
One possible cause is a missing launcher icon declaration in your Android manifest.
Check:
android/app/src/main/AndroidManifest.xml
and make sure the <application> tag contains:
android:icon="@mipmap/ic_launcher"
Why did my Flutter icon disappear after changing the package name?
A package rename changes native Android project configuration. If the resulting AndroidManifest.xml does not contain the correct launcher icon reference, Android can stop using your generated icon.
In my case, restoring:
android:icon="@mipmap/ic_launcher"
completely solved the problem.
Do I need to run icons_launcher again after changing the package name?
Not necessarily.
First check whether the generated icon resources already exist.
If they do, and they contain your correct icon, check the Android manifest.
Regenerating the exact same resources will not fix a missing manifest reference.
Does flutter clean fix a missing Flutter launcher icon?
It can help when cached build files are responsible for an old icon appearing.
However, it cannot fix missing configuration.
If:
android:icon="@mipmap/ic_launcher"
is absent from AndroidManifest.xml, you need to correct the manifest.
Where is the Flutter Android launcher icon configured?
The Android application icon is referenced from:
android/app/src/main/AndroidManifest.xml
inside the <application> element.
For the common ic_launcher resource:
android:icon="@mipmap/ic_launcher"
The corresponding resources are normally stored under:
android/app/src/main/res/mipmap-*/
For additional Android manifest details, see the official Android application manifest documentation.
Conclusion
If your Flutter app icon changes to the default Android icon after renaming the package, don’t immediately start rebuilding the project from scratch.
Check:
android/app/src/main/AndroidManifest.xml
and look at the <application> element.
In my case, the entire issue came down to this missing line:
android:icon="@mipmap/ic_launcher"
After adding it:
<application
android:label="My App"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
the correct launcher icon returned immediately.
If you are using **Flutter + icons_launcher + **package_rename, this should be one of the first things you check whenever the Android launcher icon suddenly disappears.

