If you are developing an Android or Flutter app, you may sometimes face a strange problem.
You install and test the app directly from Android Studio, VS Code, or Flutter using:
flutter run
Later, when you try to install the same app from the Google Play Store, the installation may fail.
One common reason is a signature mismatch.
The debug version installed from your computer is normally signed using a debug signing key. The version downloaded from the Play Store is signed using your release key or Google Play App Signing.
Android sees both apps as having the same package name but different signatures and may refuse to install the Play Store version over the debug version.
The easiest solution is to completely uninstall the debug version using ADB.
What You Need
You need:
- A computer with ADB installed
- USB debugging enabled on your Android phone
- Your phone connected through USB
- The package name or application ID of the app
First, check whether ADB can see your phone.
Run:
adb devices
You should see something similar to:
List of devices attached 1234567890 device
If you see unauthorized, check your phone. Android should show an Allow USB debugging popup.
Tap Allow.
Step 1: Find the Package Name of the App
Before uninstalling the app, you need to know its Android package name.
It normally looks something like:
com.example.myapp
or:
org.example.application
There are several ways to find it.
Method 1: Find the Package Using ADB
If you know part of the app or developer name, run:
adb shell pm list packages
This displays all installed Android packages.
The list can be very long, so it is easier to filter it.
On Linux or macOS:
adb shell pm list packages | grep example
Replace example with part of your app name or package name.
For example:
adb shell pm list packages | grep calculator
You may get:
package:com.example.calculator
The package ID is:
com.example.calculator
Method 2: Find the App ID in a Flutter Project
If this is your own Flutter project, open:
android/app/build.gradle
or, on newer Flutter projects:
android/app/build.gradle.kts
Look for:
applicationId "com.example.myapp"
or with Kotlin Gradle:
applicationId = "com.example.myapp"
That is normally the package name you need for ADB commands.
Method 3: Search Installed Packages
You can also search using:
adb shell pm list packages | grep myapp
For example, if your application is called My Notes, try keywords related to the app or developer name.
Once you know the package ID, you can continue.
For this article, I will use:
com.example.myapp
as an example.
Replace it with your actual package name in every command below.
Step 2: Completely Uninstall the App Using ADB
Run:
adb uninstall com.example.myapp
If everything works, ADB should return:
Success
This removes the installed application from Android.
In most cases, it also removes the app’s private data stored under Android’s internal app-data directory.
Now try installing the app again from the Google Play Store.
Step 3: Check Whether the Package Is Really Removed
You can verify that the package is gone.
Run:
adb shell pm list packages | grep com.example.myapp
If nothing is returned, the package is no longer installed.
You can also run:
adb shell pm path com.example.myapp
If the app has been removed, Android should not return an APK path.
When the application is still installed, you may see something similar to:
package:/data/app/~~xxxxx/com.example.myapp-xxxxx/base.apk
If there is no package path, the app has been removed.
Step 4: Remove Possible External App Folders
Normally, adb uninstall is enough.
However, some applications may create files inside Android’s shared or external storage.
You can try removing these folders too:
adb shell rm -rf /sdcard/Android/data/com.example.myapp
Also check:
adb shell rm -rf /sdcard/Android/media/com.example.myapp
And:
adb shell rm -rf /sdcard/Android/obb/com.example.myapp
Again, replace:
com.example.myapp
with your real package ID.
On newer Android versions, access to some /Android/data/ folders is restricted.
You may therefore get a permission error for some of these commands.
That is normally not a problem. The most important command is still:
adb uninstall com.example.myapp
Why Does This Happen With Flutter Debug Apps?
When you run:
flutter run
Flutter builds a debug APK.
That application is normally signed using the Android debug keystore.
The Play Store version is signed differently.
For example:
Flutter Debug Build
↓
Debug Signing Key
↓
com.example.myapp
Google Play Version
↓
Play App Signing / Release Key
↓
com.example.myapp
Both apps have the same package ID:
com.example.myapp
but they have different signing certificates.
Android normally does not allow an app signed by one key to directly replace an app signed with another key.
Uninstalling the debug version solves this because there is no existing signature to compare when the Play Store installs the application again.
What If adb uninstall Fails?
Sometimes you may see something like:
Failure
or another package-manager error.
One possible reason is that the app exists under another Android user or profile.
Android supports multiple users, guest accounts, secure folders, and work profiles.
First, list the Android users:
adb shell pm list users
You may see something like:
UserInfo{0:Owner:...}
UserInfo{10:Work profile:...}
User 0 is normally the main Android user.
Check whether the package exists for user 0:
adb shell pm list packages --user 0 | grep com.example.myapp
If it exists, remove it using:
adb shell pm uninstall --user 0 com.example.myapp
Check a Work Profile or Second User
Suppose:
adb shell pm list users
shows another user with ID 10.
Check that user:
adb shell pm list packages --user 10 | grep com.example.myapp
If the package appears, remove it:
adb shell pm uninstall --user 10 com.example.myapp
Replace 10 with the actual user ID shown on your device.
Optional: Reboot the Phone
After removing the debug app, you normally do not need to reboot.
But if the Play Store still behaves strangely, you can reboot the phone using:
adb reboot
After the phone starts again, open the Google Play Store and install the app.
Quick Command Summary
First check the phone:
adb devices
Find the package:
adb shell pm list packages
Or search for it:
adb shell pm list packages | grep example
Uninstall it:
adb uninstall com.example.myapp
Verify removal:
adb shell pm list packages | grep com.example.myapp
Check whether an APK path still exists:
adb shell pm path com.example.myapp
Optional external storage cleanup:
adb shell rm -rf /sdcard/Android/data/com.example.myapp adb shell rm -rf /sdcard/Android/media/com.example.myapp adb shell rm -rf /sdcard/Android/obb/com.example.myapp
Check Android users:
adb shell pm list users
Remove the app from a particular user:
adb shell pm uninstall --user 0 com.example.myapp
Important Warning
Be careful when using:
rm -rf
Always double-check the package name before running the command.
For example, do not accidentally modify the command so that it points to a broader Android directory.
Only remove the specific application’s folder:
/sdcard/Android/data/YOUR.PACKAGE.NAME
Conclusion
If you regularly test Android or Flutter apps directly from your computer, you may occasionally end up with a debug-signed application installed on your phone.
When the Play Store version uses the same package name but a different signing certificate, Android may refuse to install or update it.
In most cases, the solution is simply:
adb uninstall YOUR.PACKAGE.NAME
Then verify that the package is gone and install the application again from Google Play.
For Flutter developers, this is a useful ADB command to remember whenever a locally installed debug build conflicts with the published Play Store version.

