π Control Android & iOS devices: Capture screen, manage apps, simulate input, examine system logs etc.
β‘οΈ Speed++ Are you an app developer or a tester? Boost your effectivity, discover new tools!
π² Control Android and iOS devices or Emulators/Simulators using terminal commands
π Take screeshots, change device settings, gather app & device information
βοΈ Manage mobile applications - install, restart, wipe data and much more
π Handle multiple devices effortlessly - select from list or target all connected devices
β³ Save your precious time - stop doing repetitive tasks manually
π Automatic update - get new features and fixes ASAP
π© Maybe you just want to skip to Installation?
π€ Android Commands
π Do you want to share Feedback or Contribute?
Click here to reveal step by step guide β
Note: This tool targets macOS for compatibility, but most interactions should work on any Unix system.
- Open terminal
- Clone this repository
git clone https://github.com/IntergalacticPenguin/mobile-toolkit.git - Setup Android tools
- Download and install Android Studio and Android command line tools (using Android Studio SDK manager)
- Edit .zshrc (or .bash_profile if you have bash shell)
open -e ~/.zshrc- Insert this line at the end
PATH=$PATH:/Users/dummyuser/Library/Android/sdk/platform-tools export PATH - Don't forget to replace "dummyuser" with your account username
- Use full path to the "platform-tools" directory
- Insert this line at the end
- Allow USB debugging on your device, connect it and authorize your computer (click OK on the device screen)
- Setup iOS tools
- Install latest Xcode and iOS command line tools using App Store
- Install Homebrew package manager
- Run Xcode, connect iOS device to USB and authorize your computer (click "Trust" on the device screen)
- Run any script i.e.
iscreenshot, installation of all required tools will be initiated automatically (jq and go-ios)
- Add Mobile Toolkit to $PATH, it is mandatory for iOS scripts and it will let you run scripts in any directory
- Edit .zshrc (or .bash_profile if you have bash shell)
open -e ~/.zshrc- Insert the following lines at the end
PATH=$PATH:/Users/dummyuser/mobile-toolkit/android
PATH=$PATH:/Users/dummyuser/mobile-toolkit/ios - Don't forget to replace "dummyuser" with your account username
- Use full path to the "mobile-toolkit" directory (where you cloned this repository)
- Add
export PATHto the end of the file
- Insert the following lines at the end
- Edit .zshrc (or .bash_profile if you have bash shell)
ascreenshotSave screenshot to ~/Desktopascreenshot -aTake screenshot on all connected devices
arecordRecord screen- End recording using
ctrl + c - Save screen video footage to ~/Desktop
- Records audio by default on devices running Android 12 and up (when using Scrcpy version 2.0.0 or higher)
arecord <custom-name>Specify your own filename by passing it as argumentarecord -lUse legacy-loption to record using ADB instead of Scrcpy
apaste "[email protected]" password1 "5005 1002 3332 1112" "2/19" 5004
apaste <text>Insert text into currently focused fieldapaste "[email protected]" password1Every additional argument will be inserted into subsequent fieldapaste "This is sample multi-word text."use "" to insert multi-word text into one fieldapaste -lInsert "Lorem Ipsum paragraph"apaste -a <input-text>Insert any text input (options displayed above) on all connected devicesapaste -a -lInsert "Lorem Ipsum paragraph" on all connected devices
aurl "google.com"Open link in web browser or corresponding applicationaurl -a "google.com"Open link in web browser or corresponding application on all connected devices
adarkmodeToggle system dark mode
atalkbackToggle TalkBack screen reader accessiblity option
aboundsToggle UI layout bounds- App restart may be necessary on lower APIs
aanimationspeedset slower animation speed or restore defaultaanimationspeed <speed>set animation speed multiplier
afontscaleset large font scale (1.3x bigger than default) or restore defaultafontscale <scale>set font scale multiplier
acontrolstart scrcpy session- Provides realtime device screen mirroring and keyboard+mouse control
- Start the default camera application
- Enable or disable wireless ADB connection
- Use ADB and toolkit without having USB cable attached
- Lock/Unlock the device (send Power button key event)
- Useful to unlock the device after the screen is locked automatically
alaunchList third-party apps and choose one to run italaunch -sList all available apps (including os pre-installed) and choose one to run italaunch com.dummy.package.name.appRun app by package name
aappinfoList foreground app information- Package name
- Version
- Last update
- minSdk and targetSdk
- Permissions
- (Optional) Open application settings
aappinfo com.dummy.package.name.appTarget specific app by passing package name as argument
akillRestart the foreground appakill com.dummy.package.name.appTarget specific app by passing package name as argument
aeraseDelete all local data of the foreground app and restart itaerase com.dummy.package.name.appTarget specific app by passing package name as argument
ainstall some-app-file.apkInstall and run .apkainstall -a some-app-file.apkInstall and run .apk on all connected devices
auninstallUninstall third-party app, choose from the listauninstall com.dummy.package.name.apppass package name as argumentauninstall -wUninstall all-third party packages- Skips some essential apps, edit IGNORED_PACKAGES in this script to customize the list to your needs
- Wipe internal storage and delete all third-party apps
- Revoke ALL GRANTED runtime permissions for ALL apps
- You'll have to handle permission requests upon opening almost any app
agoogleplay "Dummy App"Search for "Dummy App" on Google PlayagoogleplaySearch for currently foreground app on Google Play
abuildprojectBuild, install and run Android project located in current directoryabuildproject <relative-path>Build, install and run Android project located in <relative-path>
aoptionsOpen system settings on a specific activity- You can choose from quick presets
- Developer settings
- Locale settings
- Date & time
- Wifi settings
- Storage management
- Power usage
- Root settings activity
aoptions AChoose from exhaustive list of all available optionsaoptions 1,2,3... | dev | locale | date | wifi | storage | powerUse a preset, choose one
alogPrint system log outputalog -f <package-name>Filter log by package name
- Print genereal device information
- Perform basic safety-checks and toggle "testing firendly" settings
- 10 minutes screen timeout
- Highest brightness
- Automatic date
- Disabled notification sounds
- Internet connectivity and WIFI name
- Font scale
- enUS locale
- (Optional) Search for the device on GSMArena
- Print running background services
- Search for more information via Google
- Reboot the device
Required: Make terminal use Android Studio Java
-
Edit .bash_profile (or .zshrc if you have zsh shell)
open -e ~/.bash_profileoropen -e ~/.zshrc -
Add the following line at the end of the fileΒ
export JAVA_HOME='/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home' -
Android emulator supports all listed scripts by default + extra actions listed below
-
aemulator <option>Handle various Android emulator activitesstart- choose and launch installed emulatorgprs | edge | 3g- simulate network latency, choose onecall <number>- receive fake callsms <number> <text>- receive fake smsgps <lat> <long>- set manual GPS locationbattery <0-100>- set battery leveltelnet <command>- call command via telnet- example commands
event | redir | sensor | physics | finger | rotate | fold | unfold...see Android emulator documentation for more information
- example commands
atestmonkeyDefault test with random seed and 15000 input eventsatestmonkey <event-count>Test with random seed and custom input event countatestmonkey <event-count> <seed>Test with custom seed and custom event count- Perform automated stress test using Application Excersciser Monkey
- You can end test prematurely using ctrl^c or
atestmonkeykillin case something goes wrong - App under test needs to be pinned to fullscreen mode to prevent unwanted interactions elsewhere
- Screen pinning button location is directly tied to OS version and device manufacturer skin.
- It may be tricky to turn on, see examples below:
- It may be tricky to turn on, see examples below:
iscreenshotSave screenshot to ~/Desktopiscreenshot -aTake screenshot on all connected devices
Required: Install videosnap -> download and install videosnap-0.0.8.pkg
Required: Install ffmpeg brew install ffmpeg
irecordRecord screen- End recording using
ctrl + c - Video footage is saved to ~/Desktop
- File is compressed using ffmpeg
- Run QuickTime and open video source picker (so you can choose a device right away)
- You may have to allow security system permission, so the script can access QuickTime application
- This is a fallback script for
irecordon M1 macs as it is currently not working
iinstall some-app-file.ipaInstall .ipa (make sure to use properly signed build)iinstall -a some-app-file.ipaInstall .ipa to all connected devices
iuninstallUninstall third-party app, choose from the listiuninstall com.dummy.package.name.apppass bundle name as argumentiuninstall -wUninstall all third-party packages- Skips some essential apps, edit IGNORED_PACKAGES in this script to customize the list to your needs
ilaunchList third-party apps and choose one to run itilaunch -sList os pre-installed apps and choose one to run itilaunch com.dummy.bundle.id.appRun app by bundle id
ikillList third-party apps and choose one to restartikill -sList os pre-installed apps and choose one to restartikill com.dummy.bundle.id.appTarget specific app by passing bundle id as argument
ioptionsOpen system settings application
ilang <lang>Change the device language to different one, according to ISO-639 (i.e. "cs")ilangChange the device language to different one, choose from a list of all supported
ilogPrint system log output
- Print device information
- (Optional) Search for the device on GSMArena
- Reboot the device
- Simulator has limited functionality (no camera, biometrics, Appstore...), but offers some extra options, unavailable on physical iOS devices
isimulator <option>Handle various simulator related activitesstart- choose and launch installed simulatorscreenshot- save screenshot to ~/Desktoprecord- save screen recording to ~/Desktop (full resolution and frame rate, without QuickTime hassle)paste <text>- insert text into pasteboardimport <file>- import image or video to simulator gallery applog- print simulator logurl <url>- open link in web browser or corresponding applicationwipe- wipe all simulator databattery <0-100>- set battery level displayed in status bar (no functional impact)time <hh:mm>- set time displayed in status bar (no functional impact)
iconsoleExamine iOS or macOS system logs using Console application
Feedback & Contribution
π€ Pull requests are highly appreciated, see the issue board.
π¬ Also visit my NoMo project and leave a star.
π Find me on LinkedIn or Twitter.

