This brief guide gives clear information about a command-line tool bundled with Android SDK Platform-Tools. It explains how that utility lets you interact with an android device over USB or Wi‑Fi, install apps, move files, and change runtime permissions without endless taps in settings.
This friendly guide walks a user through the practical benefits of a scripted workflow. You’ll see why developers and QA teams prefer repeatable steps for consistent access control, and how quick commands speed setup across multiple devices.
Expect clear examples, connection checks, and safe practices for granting or revoking rights. The text highlights commands you’ll run from a computer, tips for confirming device connectivity, and simple checks that verify success.
By the end, you’ll have usable steps for granting app access, a sense of when command-line control beats manual flows, and pointers on undoing changes if something goes wrong.
Understand ADB and Why Permissions via Command Line Matter
A compact command-line bridge gives developers fast, repeatable control over device state and application rights. This approach saves time during testing and ensures every device starts with the same configuration.
What the android debug bridge does
android debug bridge is a developer tool that links a computer and a device or emulator. It runs commands that install apps, move files, capture screenshots, and adjust runtime permission sets without tapping through settings.
User intent: faster, repeatable control
Teams use this method for reliable testing and setup. Scripted adb commands let engineers grant or revoke a permission set, run monkey tests, and simulate process death with am kill.
- Manage packages and storage interactions from the terminal.
- Use network connections (adb connect / disconnect) for remote devices and fleet work.
- Grant all runtime rights during install with install -g or change specific entries with pm grant/revoke.
Why this matters: scripting reduces human error, speeds onboarding, and makes system changes reversible and auditable during testing cycles.
Set Up Your Environment: SDK Platform-Tools, USB Debugging, and Device Connection
A quick setup makes command-line sessions reliable across many devices. First, download the official SDK Platform-Tools ZIP from the Android Developers website and extract the platform-tools folder to a convenient location on your computer.
Open a terminal in that platform-tools directory (Windows PowerShell or Terminal; macOS/Linux Terminal). Running commands from this folder avoids path problems and ensures the right files and binaries run.
Enable developer features and connect
On the phone, open Settings > About phone and tap Build number seven times. Then enable USB debugging in Settings > System > Developer options. Use a reliable usb cable and plug the device into your computer.
Run adb devices from the terminal. Accept the “Allow USB debugging” prompt on the phone and check Always allow from this computer for future sessions.
Fix common connection issues
If the device serial does not appear, install universal drivers such as ClockworkMod or a current installer from XDA, then retry adb devices. For later wireless work, enable tcp/ip mode with adb tcpip 5555 over the USB connection, then move to network-based sessions.
| Step | Action | Where | Note |
|---|---|---|---|
| Download | Get Platform-Tools ZIP | Android Developers website | Extract to a local folder on your computer |
| Terminal | Open shell in platform-tools | PowerShell or Terminal | Prevents path and permission errors |
| Connection | Run adb devices; accept prompt | Phone and computer | Install drivers if serial missing; optional adb tcpip 5555 |
How to Grant Permissions Using ADB in Android
Start by finding the app package you’ll target. Run adb shell pm list packages -f and copy the full identifier. This avoids giving access to the wrong app and keeps tests reliable.
Open a shell and apply a specific permission
From your computer, open an interactive adb shell. Use pm grant <package> <permission> to apply one permission instantly on the android device. The change takes effect without extra taps.
Example cases for testing access
For usage stats testing, run: pm grant com.paget96.batteryguru android.permission.PACKAGE_USAGE_STATS.
For location checks, run: pm grant com.alexzh.mapnotes android.permission.ACCESS_FINE_LOCATION and, if needed, the COARSE location string as well.
Grant all runtime permissions at once
Install an APK with adb install -g <apk> to grant requested runtime rights during install. For already installed apps, use adb shell pm grant -g <package> to apply them post-install.
- Use aapt d permissions on the APK if you need the exact permission names.
- Always launch the app after changes to confirm the required feature works.
- Keep scripted commands for repeatable lab setups.
| Task | Command | When to use |
|---|---|---|
| List packages | adb shell pm list packages -f | Find exact package identifier before any changes |
| Grant single permission | pm grant <package> <permission> | Enable a specific feature for testing |
| Grant all runtime permissions | adb install -g <apk> or pm grant -g <package> | Speed setup across multiple devices |
| Inspect declared permissions | aapt d permissions path/to/app.apk | Get exact names to use with pm grant |
Related Commands: Revoke, Reset, and Connect over Wi‑Fi
Keep a compact set of related commands nearby for quick state changes during tests.
Remove a single right with pm revoke <package> <permission>. For example: pm revoke com.alexzh.mapnotes android.permission.ACCESS_FINE_LOCATION. Use this when you need the app returned to a stricter access level for a new test cycle.
Wipe runtime grants across the entire system with adb shell pm reset-permissions. Use caution: this affects every app and can disrupt services until permissions are re-established.
Work cable-free by connecting over Wi‑Fi. Run adb connect <ip-address> or specify a port with :port. If a network link fails, enable TCP/IP mode via USB first with adb tcpip 5555, then retry the wireless connection. End sessions with adb disconnect <ip-address>.
- Script sequences that revoke, reapply, and verify rights for repeatable testing.
- Keep commands for install -g, file push/pull, and connect/disconnect in a small library for teams.
- Document device IPs and identifiers on your internal website for consistent remote access.
| Action | Command | Use case | Risk / Note |
|---|---|---|---|
| Revoke one right | adb shell pm revoke <package> <permission> | Return app to restrictive state for testing | Affects only the named package |
| Reset all runtime grants | adb shell pm reset-permissions | Wipe permissions across system for clean slate | Disrupts unrelated services until restored |
| Connect over Wi‑Fi | adb connect <ip>[:<port>] | Cable-free testing and automation | Enable tcpip 5555 via USB if connection fails |
| Disconnect | adb disconnect <ip> | Close remote session | Use when switching networks or devices |
Troubleshooting and Safe Practices
A few simple checks often fix the most common connectivity and permission failures. Start with the cable and port, then confirm the device shows the debugging prompt and that you tapped Always allow on the phone. This step prevents repeat dialogs during testing.
If adb devices does not list your phone, update or install universal drivers such as ClockworkMod or the latest installer on your computer. Running the shell from the platform-tools folder reduces path errors and keeps sessions predictable.
Quick diagnostic checklist
- Confirm USB debugging is enabled and the Allow dialog was accepted on the device.
- Verify package and permission strings with aapt d permissions on the APK when commands fail.
- Reserve pm reset-permissions for clean-room runs; it resets rights for all apps and can break background services.
- When network links flake, enable tcpip 5555 over USB, confirm the device IP, then retry the connect command for Wi‑Fi testing.
| Issue | Likely cause | Quick fix | Notes |
|---|---|---|---|
| Device not listed | USB disabled or drivers missing | Enable debugging, accept prompt, install drivers | Run from platform-tools for consistent results |
| Permission command fails | Wrong package or typo in permission | Confirm names with aapt; retry exact string | Typos are the most common case for failures |
| Wi‑Fi connect unstable | Network or tcp/ip not enabled | Run tcpip 5555 via USB; check IP and reconnect | Network conditions affect reliability during testing |
| App state inconsistent after change | Background services or storage low | Check storage, simulate process kill with adb shell am kill <package> | Observe relaunch behavior for robust lifecycle handling |
Best practice: log each run, use least-privilege for apps, and document commands on a shared page so your team can reproduce tests and find regressions fast.
Conclusion
,
This short conclusion highlights a simple truth: a small command library replaces many Settings taps and saves real time for teams.
Use the android debug bridge for quick, repeatable permission changes. Keep Platform-Tools open, confirm adb devices, and verify package and permission names before you run any command.
Document steps on a shared page. When network links fail, fall back to USB and use tcpip 5555 only after a stable connection. Run pm reset-permissions with care and use am kill for resilience checks.
Result: consistent app setups, faster testing, and fewer surprises across every android device in your lab.
FAQ
What is Android Debug Bridge (ADB) and what can it do?
Android Debug Bridge (ADB) is a command-line tool included with the Android SDK Platform-Tools. It lets developers and testers communicate with a device or emulator to install apps, run shell commands, copy files, and change app permissions for faster troubleshooting and automation.
Why use command-line control for app permissions?
Command-line control offers fast, repeatable permission changes across multiple devices. This is useful for QA, automated tests, device provisioning, and situations where tapping through settings is slow or impractical.
How do I set up Platform-Tools on Windows, macOS, or Linux?
Download the SDK Platform-Tools from developer.android.com, extract the archive, and add the folder to your PATH. Open a terminal or command prompt in that folder to run adb commands without full paths.
How do I enable Developer Options and USB debugging on my device?
Open Settings › About phone and tap Build number seven times to enable Developer Options. Then go to Developer Options and toggle USB debugging on. Confirm the prompt on the device when the computer requests authorization.
My device isn’t listed by adb devices. What should I check?
Ensure USB debugging is enabled, use a data-capable USB cable, install appropriate OEM drivers on Windows, and accept the RSA prompt on the device. Restart adb with adb kill-server then adb start-server if needed.
How do I find an app’s package name?
Use adb shell pm list packages | grep keyword or check the app’s Play Store URL. You can also run adb shell dumpsys package appname to confirm the exact package identifier.
What is the command to allow a specific permission for an app?
Open a shell and run: adb shell pm grant package.name android.permission.PERMISSION_NAME. Replace package.name and the permission constant with the target app and permission.
Can I grant runtime permissions in bulk during install?
Yes. Use adb install -g app.apk to grant all requested runtime permissions at install time. For existing installs, use pm grant per permission or scripting to loop through a list.
Are there examples for granting usage stats or location access?
For location: adb shell pm grant package.name android.permission.ACCESS_FINE_LOCATION. For usage stats, grant PACKAGE_USAGE_STATS via Settings or use adb shell appops set package.name GET_USAGE_STATS allow on devices where pm grant isn’t accepted.
How do I revoke a permission from an app?
Use adb shell pm revoke package.name android.permission.PERMISSION_NAME. This returns the app to an ungranted state for that runtime permission.
What about resetting all runtime permissions for an app?
Run adb shell pm reset-permissions or use adb shell pm clear package.name to wipe app data. Use reset commands cautiously; they may affect user data and settings.
Can I connect over Wi‑Fi instead of USB?
Yes. Connect the device by USB, run adb tcpip 5555, unplug, then adb connect device_ip:5555. Remember to run adb usb to revert to USB mode and secure the network when done.
What common errors should I watch for with permission commands?
Watch for “Operation not allowed” which means the permission is signature- or system-level. Also check Android version differences—some permissions behave differently on Android 6+—and ensure the package actually requests the permission.
Are there safe practices when changing permissions via adb?
Keep a record of changes, test on nonproduction devices, avoid granting signature-only permissions, and prefer temporary grants for testing. Undo changes after tests to restore expected security posture.
