mobile-toolkit
Why should I care?
π 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!
All features
π² 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
Table of contents
π© Maybe you just want to skip to Installation?
π Do you want to share Feedback or Contribute?
π» Installation
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
<li> <strong><a rel="nofollow noopener" target="_blank" href="https://developer.android.com/studio/debug/dev-options">Allow USB debugging</a> on your device, connect it and authorize your computer</strong> (click OK on the device screen) </li> </ul>
-
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 PATH
to the end of the file
-
Insert the following lines at the end
-
Edit .zshrc (or .bash_profile if you have bash shell)
π€ Android Commands
Capture screen
πΈ ascreenshot
-
ascreenshot
Save screenshot to ~/Desktop -
ascreenshot -a
Take screenshot on all connected devices
π₯ arecord
-
arecord
Record screen -
End recording using
ctrl + c
- Save screen video footage to ~/Desktop
-
arecord <custom-name>
Specify your own filename by passing it as argument
Control device
βοΈ apaste
apaste "john.doe@fakemail.com" password1 "5005 1002 3332 1112" "2/19" 5004
-
apaste <text>
Insert text into currently focused field -
apaste "john.doe@fakemail.com" password1
Every additional argument will be inserted into subsequent field -
apaste "This is sample multi-word text."
use “” to insert multi-word text into one field -
apaste -l
Insert “Lorem Ipsum paragraph” -
apaste -a <input-text>
Insert any text input (options displayed above) on all connected devices -
apaste -a -l
Insert “Lorem Ipsum paragraph” on all connected devices
π aurl
-
aurl "google.com"
Open link in web browser or corresponding application -
aurl -a "google.com"
Open link in web browser or corresponding application on all connected devices
π΄ adarkmode
-
adarkmode
Toggle system dark mode
π atalkback
-
atalkback
Toggle TalkBack screen reader accessiblity option
π abounds
-
abounds
Toggle UI layout bounds - App restart may be necessary on lower APIs
π aanimationspeed
-
aanimationspeed
set slower animation speed or restore default -
aanimationspeed <speed>
set animation speed multiplier
π afontscale
-
afontscale
set large font scale (1.3x bigger than default) or restore default -
afontscale <scale>
set font scale multiplier
πΉ acontrol
-
acontrol
start scrcpy session - Provides realtime device screen mirroring and keyboard+mouse control
π· acamera
- Start the default camera application
β‘οΈ awireless
- Enable or disable wireless ADB connection
- Use ADB and toolkit without having USB cable attached
Manage packages
π alaunch
-
alaunch
List third-party apps and choose one to run it -
alaunch -s
List all available apps (including os pre-installed) and choose one to run it -
alaunch com.dummy.package.name.app
Run app by package name
π΅οΈ aappinfo
-
aappinfo
List foreground app information- Package name
- Version
- Last update
- minSdk and targetSdk
- Permissions
- (Optional) Open application settings
-
aappinfo com.dummy.package.name.app
Target specific app by passing package name as argument
πͺ akill
-
akill
Restart the foreground app -
akill com.dummy.package.name.app
Target specific app by passing package name as argument
π§½ aerase
-
aerase
Delete all local data of the foreground app and restart it -
aerase com.dummy.package.name.app
Target specific app by passing package name as argument
π ainstall
-
ainstall some-app-file.apk
Install and run .apk -
ainstall -a some-app-file.apk
Install and run .apk on all connected devices
π auninstall
-
auninstall
Uninstall third-party app, choose from the list -
auninstall com.dummy.package.name.app
pass package name as argument -
auninstall -w
Uninstall all-third party packages- Skips some essential apps, edit IGNORED_PACKAGES in this script to customize the list to your needs
π₯ awipe
- Wipe internal storage and delete all third-party apps
π apermissionreset
-
Revoke ALL GRANTED runtime permissions for ALL apps
- You’ll have to handle permission requests upon opening almost any app
π agoogleplay
-
agoogleplay "Dummy App"
Search for “Dummy App” on Google Play -
agoogleplay
Search for currently foreground app on Google Play
π abuildproject
-
abuildproject
Build, install and run Android project located in current directory -
abuildproject <relative-path>
Build, install and run Android project located in
Manage device
βοΈ aoptions
-
aoptions
Open 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 A
Choose from exhaustive list of all available options -
aoptions 1,2,3... | dev | locale | date | wifi | storage | power
Use a preset, choose one
π alog
-
alog
Print system log output -
alog -f <package-name>
Filter log by package name
π acheckdevice
- 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
π aservices
- Print running background services
- Search for more information via Google
β» areboot
- Reboot the device
π± aemulator
Required: Make terminal use Android Studio Java
-
Edit .bash_profile (or .zshrc if you have zsh shell)
open -e ~/.bash_profile
oropen -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 activites-
start
– choose and launch installed emulator -
gprs | edge | 3g
– simulate network latency, choose one -
call <number>
– receive fake call -
sms <number> <text>
– receive fake sms -
gps <lat> <long>
– set manual GPS location -
battery <0-100>
– set battery level -
telnet <command>
– call command via telnet-
example commands
event | redir | sensor | physics | finger | rotate | fold | unfold...
see Android emulator documentation for more information
-
example commands
-
π atestmonkey
-
atestmonkey
Default test with random seed and 15000 input events -
atestmonkey <event-count>
Test with random seed and custom input event count -
atestmonkey <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
atestmonkeykill
in 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:
-
Google Nexus 5 (Android 6)
You need to bring the app window to foreground, the button is located in bottom right corner.
<li> <p> Google Pixel 3 (Android 11)<br /> You need to click on the app icon, the button is located in popup menu. </p> </li> </ul>
π iOS Commands
Capture screen
πΈ iscreenshot
-
iscreenshot
Save screenshot to ~/Desktop -
iscreenshot -a
Take screenshot on all connected devices
π₯ irecord
Required: Install videosnap -> download and installβ¦