Updated: September 2026
Running a Flutter app on a real Android phone is one of the most useful steps in development.
An emulator is convenient, but physical hardware exposes real USB behavior, permissions, sensors, performance, battery usage and manufacturer-specific Android changes.
The connection path is simple when everything works:
Android phone → ADB → Flutter → flutter run
When it does not work, the key is to identify which layer is failing instead of reinstalling Flutter.
Quick Checklist
- Developer Options are enabled.
- USB debugging is enabled.
- The phone is unlocked.
- The USB cable supports data, not only charging.
- ADB can see the phone.
- The RSA debugging prompt has been approved.
- Flutter lists the device.
How Flutter Connects to an Android Phone
Flutter does not communicate directly with the phone over USB.
The connection normally goes through Android Debug Bridge (ADB).
| Layer | Purpose |
|---|---|
| USB or Wi-Fi | Physical or network connection |
| ADB | Communicates with the Android device |
| Flutter | Detects the ADB device and deploys the app |
| flutter run | Builds, installs and launches the Flutter app |
This distinction matters.
If adb devices cannot see the phone, the problem is usually below Flutter.
Step 1: Enable Developer Options
Developer Options are hidden by default on Android devices.
The exact path differs between manufacturers, but a common method is:
- Open Settings.
- Open About phone.
- Find Build number.
- Tap it repeatedly until Android confirms Developer Options are enabled.
Some manufacturers place the build number inside a software-information submenu.
Step 2: Enable USB Debugging
Open Developer Options and enable:
USB debugging
Android requires this setting before ADB can communicate with the phone over USB.
On many devices the path is similar to:
Settings → System → Developer options → USB debugging
Samsung, Xiaomi, OnePlus and other manufacturers may use slightly different menu names.
Step 3: Connect the Phone With a Data Cable
Connect the phone to your development computer.
Not every USB cable supports data transfer.
Some inexpensive or charging-only cables provide power but no data connection.
If the phone charges but ADB never detects it, the cable should be one of the first things you test.
Try Another USB Port Too
A faulty port, hub or adapter can cause intermittent debugging problems.
For troubleshooting, connect the phone directly to the computer where possible.
Step 4: Approve the RSA Debugging Prompt
The first time a computer connects to an Android device for debugging, Android normally displays an authorization dialog.
It asks whether you want to allow USB debugging from that computer.
Unlock the phone and approve the prompt.
Android uses this RSA authorization mechanism to prevent an unknown computer from issuing ADB commands without user approval.
Step 5: Check the Device With ADB
Before checking Flutter, test the Android connection directly.
Run:
adb devices
A healthy connection normally appears similar to:
List of devices attached
ABC123456 device
The important part is the status:
device
Understanding ADB Device Status
| Status | Meaning | What to Do |
|---|---|---|
| device | ADB connection is authorized and working | Continue to Flutter |
| unauthorized | The computer has not been approved | Unlock phone and accept RSA prompt |
| offline | ADB sees the connection but the device is not responding correctly | Reconnect or restart ADB |
| No device listed | ADB cannot see the phone | Check cable, driver, USB debugging and port |
Step 6: Check the Phone With Flutter
Once ADB reports the device correctly, run:
flutter devices
Your Android phone should appear in Flutter's device list.
You can also run:
flutter doctor -v
to inspect the wider development environment.
Step 7: Run the Flutter App
Move into your Flutter project folder:
cd your_flutter_project
Then run:
flutter run
Flutter will build the Android app, install it on the connected phone and launch it.
During development, you can use Flutter's hot reload features while the app remains running on the physical device.
What If Several Devices Are Connected?
You may have:
- A physical phone
- An Android emulator
- A second phone
Run:
flutter devices
to see the available device IDs.
Then target a specific device with:
flutter run -d DEVICE_ID
ADB also supports targeting a specific serial number when multiple devices are connected.
Fix: Device Shows as Unauthorized
If:
adb devices
shows:
unauthorized
the physical connection is probably working, but the debugging authorization is not complete.
Try This
- Unlock the phone.
- Look for the USB debugging authorization dialog.
- Approve the computer.
- Run adb devices again.
If no prompt appears, you can revoke existing USB debugging authorizations in Developer Options and reconnect the phone.
Fix: ADB Shows No Device
If the list is completely empty, troubleshoot from the bottom of the connection stack.
- Confirm USB debugging is enabled.
- Unlock the phone.
- Try another USB cable.
- Try another USB port.
- Avoid a USB hub temporarily.
- Check whether Windows recognizes the phone.
- Check the appropriate USB driver if required.
Windows May Need an OEM USB Driver
On Windows, some Android devices require a manufacturer-specific USB driver for ADB communication.
Android's official hardware-device documentation notes that Windows may need an OEM USB driver depending on the device.
If the phone appears in Windows but not in:
adb devices
check Device Manager for driver problems.
Avoid downloading random driver packages from untrusted websites.
Use the device manufacturer's support resources or Android's official OEM-driver references where possible.
Fix: Device Shows as Offline
An offline status means ADB knows about the device but cannot communicate normally with it.
Try restarting the ADB server:
adb kill-server
adb start-server
adb devices
You can also disconnect and reconnect the phone.
If the problem continues, restart both the phone and development computer before changing unrelated Flutter settings.
Fix: Flutter Cannot See a Device That ADB Can See
If:
adb devices
shows the phone correctly but:
flutter devices
does not, the USB connection is probably not the main problem anymore.
Check:
- Flutter installation
- Android SDK configuration
- Platform tools
- flutter doctor -v output
Restarting the terminal after environment-variable changes can also help.
USB Mode: Does File Transfer Need to Be Enabled?
USB debugging and normal file-transfer mode are different functions.
ADB can work without treating the phone like ordinary removable storage.
However, some devices or Windows driver setups behave differently depending on the selected USB configuration.
If debugging is failing, temporarily testing another USB mode can be useful, but the important requirement is that ADB recognizes the device.
Wireless Debugging on Android 11 and Later
Android 11 and later support wireless debugging over ADB.
This allows a developer to deploy and debug without keeping the phone connected by USB.
Android's official documentation requires the workstation and device to be on the same wireless network for the standard pairing workflow.
Enable Wireless Debugging
On the phone:
- Open Developer Options.
- Enable Wireless debugging.
- Open the Wireless debugging menu.
You can then pair the device using the supported Android Studio workflow or ADB pairing information shown by Android.
Why Wireless Debugging Is Useful
- No cable needed during normal development
- Useful when a USB port is unreliable
- Easier to move around while testing
- Avoids some USB-driver problems
But Keep USB as a Backup
Wireless debugging depends on the network and pairing state.
For initial troubleshooting, USB can still be the simplest baseline because it removes Wi-Fi configuration from the problem.
Wireless Device Not Appearing?
Check:
- Android 11 or later is installed.
- Wireless debugging is enabled.
- Phone and workstation are on the same network.
- The device is still paired.
- ADB platform tools are current.
If the wireless ADB connection becomes stuck, restarting the ADB server can help:
adb kill-server
adb start-server
Why Real-Device Testing Matters
A physical phone can reveal issues that a development computer cannot reproduce accurately.
Permissions
Users can deny, revoke or partially grant Android permissions.
Battery and Background Behavior
Manufacturers may apply aggressive battery-management rules that affect background work.
Camera and Sensors
Real hardware behavior can differ from simulated environments.
Performance
A Flutter app that runs perfectly on a fast development machine may perform differently on mid-range hardware.
Manufacturer Differences
Android behavior can vary across Pixel, Samsung, Xiaomi, OnePlus and other manufacturers.
Android's own documentation recommends testing applications on a real device before releasing them.
Do Not Debug Flutter Before Checking ADB
The Fastest Troubleshooting Rule
If adb devices cannot see the phone:
troubleshoot USB, drivers, Android settings or ADB.If adb devices sees the phone but flutter devices does not:
troubleshoot Flutter or the Android development environment.If flutter devices sees the phone but flutter run fails:
troubleshoot the project or Android build.
Android Phone Connection Diagnostic Table
| Symptom | Likely Layer | First Check |
|---|---|---|
| Phone only charges | USB cable / port | Try another data cable |
| ADB list is empty | USB / driver / debugging | USB debugging and driver |
| ADB says unauthorized | Authorization | RSA prompt on phone |
| ADB says offline | ADB connection | Restart ADB server |
| ADB works, Flutter does not | Flutter environment | flutter doctor -v |
| Flutter sees device, build fails | Project / Gradle | First meaningful build error |
Final Checklist
Before troubleshooting the Flutter project itself, verify:
- Developer Options are enabled.
- USB debugging is enabled.
- The cable supports data.
- The phone is unlocked.
- The debugging computer is authorized.
- adb devices shows the device as device.
- flutter devices lists the phone.
- flutter doctor -v does not show a critical Android toolchain failure.
Final Thoughts
Connecting an Android phone to Flutter becomes much easier once you stop treating it as one single connection.
Think of it as layers:
USB or Wi-Fi → ADB → Flutter → Android build → app.
Test each layer separately.
If ADB cannot see the phone, fix the Android connection first. If ADB works but Flutter cannot see it, investigate the Flutter environment. If Flutter detects it but the app will not run, move on to the project and Gradle build.
That diagnostic approach is faster than randomly reinstalling Flutter, Android Studio or USB drivers.
Continue the Flutter Android Series
- Flutter Android App Development Guide: From First Project to Play Store
- How to Install Flutter on Windows 11 for Android Development
- How to Fix Flutter Gradle Build Errors
- How to Prepare a Flutter App for Google Play Store
Official Sources & Further Reading
