- 1fexd/LinkSheet: Restore the Android <12 Url-App-Link-Chooser with Material3
- 2dust/v2rayNG: A V2Ray client for Android, support Xray core and v2fly core
- 39aldo39/DecSyncCC: Android app to sync contacts, calendars and tasks without a server using DecSync
- abertschi/ad-free: A modularized audio ad blocker for Android
- AdAway/AdAway: AdAway is a free and open source ad blocker for Android.
- adi1090x/termux-desktop: Setup A Beautiful Desktop/GUI In Termux
- adil192/ricochlime: Satisfying slime shooter
- advplyr/audiobookshelf-app: Mobile application for Audiobookshelf
- aerotoad/Thud: Simple news reader that keeps the noise low.
- aind-containers/aind: AinD: Android in Docker. Ain’t an emulator.
- aj3423/SpamBlocker: Android Call/SMS blocker.
- aJIEw/PhoneCallApp: A demo shows how to make your app as the default phone call app (Android 6.0+) and listen to phone call states change.
- Akylas/com.akylas.documentscanner: Android document document scanning app
- alashow/datmusic-android: Music search, downloader & player app using Jetpack Compose
- Alberto97/OUILookup: OUI browser and MAC Address lookup Android application
- alexal1/Insomniac: Instagram bot for automated Instagram interaction using Android device via ADB
- alexrintt/kanade: Android app to extract apks from installed apps.
- ali-imanpour/AdbCallSmsGateway: An android app to call and send sms via adb
- amnesica/KryptEY: Android keyboard for secure E2EE communication through the signal protocol in any messenger. Communicate securely and independent, regardless of the legal situation or whether messengers use E2EE
- AmrDeveloper/LinkHub: LinkHub is a simple and effective link management application that can help you to easily manage your app with no ads!
- androidtrackers/certified-android-devices: Google Play Certified Android devices list, auto updated daily!
- anilbeesetti/nextplayer: An Android native video player
- antirek/callagent: callagent - Android-приложение для интеграции телефонии смартфона в бизнес-системы
- AOSSIE-Org/Resonate: Clubhouse, but Open Source. A social voice platform.
- appleboy/gorush: A push notification server written in Go (Golang).
- aptabase/aptabase: ✨ Open Source, Privacy-First and Simple Analytics for Mobile, Desktop and Web Apps
- aramg/droidcam: Official Linux Client code for DroidDcam
- aryamangodara/Arcade-Plaza: A host of best internet casual games for mobile users.
- Asiern/SpeedrunHub: Speedrun Browser for Android/IOS
- Aurora Store | F-Droid - Free and Open Source Android App Repository
- austin2035/hermit: Don’t need ADB. It runs on Android and the software itself provides a restful API, you just need to send an HTTP request and it translates the call to the API into an operation on the phone.
- austinried/subtracks: A music streaming app for Subsonic-compatible servers
- Automattic/pocket-casts-android: Pocket Casts Android 🎧
- autoreleasefool/approach: An iOS and Android app to track 5-pin bowling statistics
- axel358/smartdock: A user-friendly desktop mode launcher that offers a modern and customizable user interface
- axet / android-audio-recorder: Android Audio Recorder · GitLab
- b3dgs/lionheart-remake: Java remake of Lionheart amiga game
- bauerj/paperless_app: An Android/iOS app for Paperless
- BeamlakAschalew/flixquest: Open-source Android app made with Flutter with functionality of watching movies and tv series for free.
- bernaferrari/ChangeDetection: Automatically track websites changes on Android in background.
- billthefarmer/gridle: Android word game
- bitfireAT/davx5-ose: DAVx⁵ is an open-source CalDAV/CardDAV suite and sync app for Android. You can also access your online files (WebDAV) with it.
- bitrise-io/android: Android Docker image
- bk138/droidVNC-NG: VNC server app for Android that does not require root privileges.
- Bnyro/InnerTune: A material design music player to stream music from YouTube Music
- Bnyro/TranslateYou: Powerful Translator App built with Material Design 3 (You)
- Bnyro/WallYou: Wallpaper app built with Material Design 3 (You)
- breez/breezmobile: Lightning Network mobile client
- bytedance/btrace: 🔥🔥 btrace(AKA RheaTrace) is a high performance Android trace tool which is based on Systrace, it support to define custom events automatically during building apk and using bhook to provider more native events like IO.
- canyie/BypassKeyguard: PoC of unlocking an Android device without lock screen password
- caoccao/Javet: Javet is Java + V8 (JAVa + V + EighT). It is an awesome way of embedding Node.js and V8 in Java.
- capcom6/android-sms-gateway: An Android SMS Gateway for sending SMS messages using a local or cloud server
- celzero/rethink-app: DNS over HTTPS / DNS over Tor / DNSCrypt client, WireGuard proxifier, firewall, and connection tracker for Android.
- cnlohr/rawdrawandroid: Build android apps without any java, entirely in C and Make
- csicar/Ning: Network-Scanner for Android
- Darkempire78/OpenCalc: A simple and beautiful calculator for Android
- darkmoonight/ToDark: 📝 Task management application
- deckerst/aves: Aves is a gallery and metadata explorer app, built for Android with Flutter.
- deniscerri/ytdlnis: Android Video/Audio Downloader app using yt-dlp
- diogok/termux-qemu-alpine-docker: Run Docker on Alpine, on Qemu, on Termux, on Android.
- Docile-Alligator/Infinity-For-Reddit: A Reddit client for Android
- dovecoteescapee/ByeDPIAndroid: Application that start a local VPN service to bypass DPI and censorship.
- droidVNC-NG | F-Droid - Free and Open Source Android App Repository
- egorolegovichyakovlev/DroidRec: An open-source screen recorder app for Android
- emanuele-f/PCAPdroid: No-root network monitor, firewall and PCAP dumper for Android
- enginebai/MovieHunt: Movie Android App written in Kotlin, MVVM, RxJava, Jetpack Compose (implementing), Android Architecture Components and Coroutine (Upcoming).
- ente-io/photos-app: Mobile apps for ente Photos, end-to-end encrypted, privacy-focused photo storage app. https://ente.io
- epicstudios856/Vectras-VM-Android: It’s a Virtual Machine App for Android Which is Based on QEMU
- eschava/FireNotify-Android: Android client for push notifications through Firebase service (FCM)
- EtchDroid: EtchDroid is an open-source application that writes disk images to USB drives. Use it to make a bootable operating system USB drive when your laptop is dead. No root required, no ads, no tracking, no nonsense.
- evilpenguin/APKProxyHelper: Patches those pesky APKs for proxy use.
- fastlane/fastlane: 🚀 The easiest way to automate building and releasing your iOS and Android apps
- federicoiosue/Omni-Notes: Open source note-taking application for Android
- ferraridamiano/ConverterNOW: The Unit Converter app: easy, immediate and multi-platform
- firemaples/EverTranslator: Translate text anytime and everywhere, even you are gaming!
- FLauncher / FLauncher: Launcher for Android TV, built with Flutter. · GitLab
- florent37/DiagonalLayout: With Diagonal Layout explore new styles and approaches on material design
- fork-maintainers/iceraven-browser: Iceraven Browser
- Genymobile/scrcpy: Display and control your Android device
- giejay/Immich-Android-TV: An Android TV app for the self hosted photos and videos backup solution.
- gist.tolpp: How to send Android push notification locally using ADB without need network connection
- [[https://kazucocoa.wordpress.com/2019/06/03/android-a-tip-to-automate-push-notification-on-android-via-adb/][[Android] A tip to automate push notification on Android via adb – ~ my tech diary ~]]
- $ adb shell am broadcast -a com.your.app.intent.YOUR_ACTION –es json_example ‘{“example”: “hello world”}’
- [[https://kazucocoa.wordpress.com/2019/06/03/android-a-tip-to-automate-push-notification-on-android-via-adb/][[Android] A tip to automate push notification on Android via adb – ~ my tech diary ~]]
- gokadzev/Musify: Unlock the full potential of music: Stream effortlessly with one app!
- google/bundletool: Bundletool is a command-line tool to manipulate Android App Bundles
- gotev/android-upload-service: Easily upload files (Multipart/Binary/FTP out of the box) in the background with progress notification. Support for persistent upload requests, customizations and custom plugins.
- gottagofaster236/SyncVideo: An app for synchronous video playback on several devices
- green-code-initiative/ecoCode-android: Reduce the environmental footprint of your Android apps with SonarQube
- green-green-avk/AnotherTerm: Local PTY, USB and Bluetooth serial ports, SSH and Telnet terminal client for Android. Xwayland support (in dev only).
- hackroid/MqttSensorDemo: An Android application using MQTT protocol to send sensor data in real time
- harjot-oberai/MusicDNA: A Music Player for android that renders beautiful DNA(Visualization) of the currently playing music.
- hegocre/NextcloudPasswords: Secure app for viewing passwords for the Nextcloud Passwords app. Supports end-to-end encryption.
- HTTP Request Shortcuts | F-Droid - Free and Open Source Android App Repository
- iakmds/librecamera: A free and open source camera app for Android written in Flutter and Dart
- ibenabdallah/the-movie-db: The Movie BD 📱 Android and iOS application built with Kotlin Multiplatform, Compose Multiplatform with MVVM, Clean Architecture recommended by Google
- ikarus23/MifareClassicTool: An Android NFC app for reading, writing, analyzing, etc. MIFARE Classic RFID tags.
- Ilya114/Box64Droid: Running x86_64 applications on Android
- ImranR98/Obtainium: Get Android App Updates Directly From the Source.
- iqiyi/xCrash: 🔥 xCrash provides the Android app with the ability to capture java crash, native crash and ANR. No root permission or any system permissions are required.
- ismartcoding/plain-app: 🔥 PlainApp is an open-source application that allows you to manage your phone through a web browser. Access files, videos, music, contacts, sms, calls, and more from your desktop using a secure, easy to use web interface!
- iSoron/uhabits: Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits
- ivanperez-keera/Yampa: Haskell Functional Reactive Programming domain-specific language for efficient hybrid systems
- Ivy-Apps/ivy-wallet: Ivy Wallet is an open-source money manager app for android that you can either build or download from Google Play.
- JakeWharton/adb-event-mirror: Mirror the touch/key/button events of one device onto one or more other devices in real-time
- jamie-mh/AuthenticatorPro: 📱 Two-Factor Authentication (2FA) client for Android + Wear OS
- jd1378/otphelper: open-source application that can copy OTP and codes from notifications automatically for you
- jonjomckay/fritter: A privacy-friendly Twitter frontend for mobile devices
- juancresc/SMSHub: Android SMS Gateway application for sending and receiving SMS via HTTP API in Kotlin
- judemanutd/AutoStarter: This library helps bring up the autostart permission manager of a phone to the user so they can add an app to autostart.
- JunkFood02/Seal: 🦭 Video/Audio Downloader for Android, based on yt-dlp, designed with Material You
- kaangiray26/geddit-app: Geddit is an open-source, Reddit client for Android without using their API
- kamgurgul/cpu-info: CPU Info provides information about device hardware and software
- kawaiiDango/pano-scrobbler: A last.fm, ListenBrainz, libre.fm and GNU FM client for Android
- KDEConnect - KDE Community Wiki
- kdrag0n/fastboot.js: WebUSB implementation of the Android fastboot protocol
- keepalivedev/KeepAlive: Android app to notify others if you haven’t used your device in a given period of time.
- keymanapp/keyman: Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
- KotatsuApp/Kotatsu: Manga reader for Android
- Kunzisoft/KeePassDX: KeePass implementation for android with material design and deluxe features
- kylecorry31/Trail-Sense: An Android app that uses your phone’s sensors to assist with wilderness treks or survival situations.
- lebaston100/mv-stats-for-obs: Provides 2 html based stats pages for use in the obs multiviewer or in a browser
- LibrePass/LibrePass-Android: LibrePass Android Application
- LinwoodDev/Butterfly: 🎨 Powerful, minimalistic, cross-platform, opensource note-taking app
- lorenzovngl/FoodExpirationDates: 📱 Android app to track food expiration dates. Built with Jetpack Compose, MVVM, Room, Dagger-Hilt.
- lucasnlm/antimine-android: Antimine is an open source minesweeper-like puzzle game.
- M66B/FairEmail: Fully featured, open source, privacy friendly email app for Android
- M66B/NetGuard: A simple way to block access to the internet per app
- marchellodev/sharik: Sharik is an open-source, cross-platform solution for sharing files via Wi-Fi or Mobile Hotspot
- markusfisch/BinaryEye: Yet another barcode scanner for Android
- markusfisch/ScreenTime: Displays your screen time in a permanent notification.
- Martichou/rquickshare: Rust implementation of NearbyShare/QuickShare from Android for Linux.
- massivemadness/Squircle-CE: 👨💻 Squircle CE is a fast and free multi-language code editor for Android
- MatsuriDayo/NekoBoxForAndroid: NekoBox for Android / sing-box / universal proxy toolchain for Android
- Mauth | F-Droid - Free and Open Source Android App Repository
- meditohq/medito-app: The Medito app is a 100% free meditation app built with flutter. The app is available on Android and iOS.
- meefik/linuxdeploy: Install and run GNU/Linux on Android
- meefik/wshell: Web-based terminal emulator for Android
- meshenger-app/meshenger-android: P2P Voice/Video phone App for local networks.
- mhss1/MyBrain: Open-source, All-in-one productivity app for Tasks, Notes, Calendar, Diary and Bookmarks.
- michaelbel/movies: Discover movies app
- mihonapp/mihon: Free and open source manga reader for Android
- MinimalAndroidDevelopment/madsw: Mad showcase. A minimal android application that uses neovim(Instead of android studio) and madpm(instead of gradle).
- muxable/rtchat: A chat app for IRL streamers.
- mzlogin/awesome-adb: ADB Usage Complete / ADB 用法大全
- ndelphit/apkurlgrep: Extract endpoints from APK files
- NdoleStudio/httpsms: HTTP API for sending and receiving SMS messages using an android phone.
- neffex97/Tiwee: IPTV player
- NetrisTV/ws-scrcpy: Web client prototype for scrcpy.
- newhinton/disky: An android filesystem analyzer that can show you the usage of your storage!
- nextcloud/talk-android: 📱😀 Video & audio calls through Nextcloud on Android
- nielsvanvelzen/tv-launcher: Android launcher with a focus on big screens like televisions.
- nihui/opencv-mobile: The minimal opencv for Android, iOS, ARM Linux, Windows, Linux, MacOS, WebAssembly
- Nulide / FindMyDevice: Find your Device with an SMS or online with the help of FMDServer. This applications goal is to track your device when it’s lost and should be a secure open source application and a alternative to Googles FindMyDevice. · GitLab
- offa/android-foss: A list of Free and Open Source Software (FOSS) for Android – saving Freedom and Privacy.
- olegos2/mobox: Mobox is a project designed to run windows x86 applications in Termux using Box64 and Wine.
- olegos2/termux-box: Termux-box is a script to install preconfigured rootfs with Box86, Box64, Wine and DXVK installed. It allows you to run x86 and x86_64 windows programs (such as games) on Android using Termux.
- oliexdev/openScale: Open-source weight and body metrics tracker, with support for Bluetooth scales
- OneKeyHQ/app-monorepo: Secure, open source and community driven crypto wallet runs on all platforms and trusted by millions.
- openfoodfacts/smooth-app: The new Open Food Facts mobile application for Android and iOS, crafted with Flutter and Dart
- OpenTracksApp/OpenTracks: OpenTracks is a sport tracking application that completely respects your privacy.
- osociety/vernet: Vernet - Network Analyzer and Monitoring Tool
- osudroid/osu-droid: osu!droid is a free-to-play circle clicking rhythm game for Android devices. It was a game hatched many years ago by the osu! community. This project is now being developed by a small group of fans and also with the help of foreign friends.
- owntracks/android: OwnTracks Android App
- Oztechan/CCC: 💰 Currency Converter Calculator for Android, iOS and Backend with power of Kotlin Multiplatform 💪
- Paralloid/Paralloid: Generic multi-booting solution for modern Android devices
- parvardegr/sharing: Sharing is a command-line tool to share directories and files from the CLI to iOS and Android devices without the need of an extra client app
- PeterCxy/Shelter: SThis repository is a mirror of https://gitea.angry.im/PeterCxy/Shelter
- podverse/podverse-rn: Podverse mobile app written in React Native for iOS, Android, and F-Droid
- postmarketOS // real Linux distribution for phones
- pppscn/SmsForwarder: 短信转发器——监控Android手机短信、来电、APP通知,并根据指定规则转发到其他手机:钉钉群自定义机器人、钉钉企业内机器人、企业微信群机器人、飞书机器人、企业微信应用消息、邮箱、bark、webhook、Telegram机器人、Server酱、PushPlus、手机短信等。包括主动控制服务端与客户端,让你轻松远程发短信、查短信、查通话、查话簿、查电量等。(V3.0 新增)PS.这个APK主要是学习与自用,如有BUG请提ISSUE,同时欢迎大家提PR指正
- prife/adb: Android’s adb standalone build with cmake, support Linux(x86-64、arm64), Windows(32bit) and macOS!
- pyamsoft/tetherfi: TetherFi - Internet sharing without Root
- pyricau/androidsrc: Find Android sources
- QC2168/mib: A backup tool based on Node.js and ADB development, according to your configuration will automatically migrate data files on mobile devices to the computer backup, support incremental backup
- Radiokot/photoprism-android-client: 📸 A convenient Android gallery for your PhotoPrism library with plenty of useful features
- rebelonion/Dantotsu: Anilist client based on Saikou
- recloudstream/cloudstream: Android app for streaming and downloading Movies, TV-Series and Anime.
- remote-android/redroid-doc: redroid (Remote-Android) is a multi-arch, GPU enabled, Android in Cloud solution. Track issues / docs here
- rephus/notification-webhook: Notification webhook service for Android
- RetroMusicPlayer/Paisa: Expense manager for Android with Material Design
- rrsaikat/AutoCallScheduler: An android app that can automatically dial a phone number.
- Ruddle/RemoteCam: Your android camera streamed on your desktop: use as a source for OBS, or as a webcam with v4l2. Free✅, No Ads✅, Open Source✅
- Skocimis/opensms: Open-source solution to programmatically send SMS using your own SIM cards
- skydoves/android-developer-roadmap: 🗺 Android Developer Roadmap 2022 suggests learning paths to understanding Android development.
- skydoves/Pokedex: 🗡️ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture.
- skylot/jadx: Dex to Java decompiler
- solkin/appteka-android: 💊 Appteka is an alternative store for Android
- spacecowboy/Feeder: Android RSS reader app
- srevinsaju/guiscrcpy: A full fledged GUI integration for the award winning open-source android screen mirroring system – scrcpy located on https://github.com/genymobile/scrcpy/ by @rom1v
- status-im/status-mobile: a free (libre) open source, mobile OS for Ethereum
- StoneAge Messenger - Cweb
- syncloudsoftech/mobserve: Send all incoming and/or outgoing calls or text messages against set rules to webhook.
- tadfisher/android-nixpkgs: Nix-packaged Android SDK
- tanujnotes/Olauncher: Minimal AF launcher for Android. Reduce your screen time by half.
- TeamAmaze/AmazeFileUtilities: An open source Google Files alternative for Android
- TechbeeAT/jtxBoard: jtx Board allows you to manage your Journals (like meeting minutes), Notes and Tasks in one Android app. The app is compatible with the iCal standard (RFC5545) and is integrated with DAVx5 to allow the synchronisation of entries through CalDAV.
- TGX-Android/Telegram-X: The main repository of Telegram X — official alternative Telegram client for Android.
- theel0ja/foss-android: List of free and open-source alternatives to proprietary Android apps.
- theothernt/AerialViews: A screensaver for Android TV devices including Nvidia Shield, Fire TV, and Chromecast with Google TV. Inspired by Apple TV’s video screensaver.
- ThePBone/RootlessJamesDSP: An implementation of the system-wide JamesDSP audio processing engine for non-rooted Android devices
- thunderbird/thunderbird-android: K-9 Mail – Open Source Email App for Android
- thyrlian/AndroidSDK: 🐳 Full-fledged Android SDK Docker Image
- tiann/KernelSU: A Kernel based root solution for Android
- TomBursch/kitchenowl: KitchenOwl is a self-hosted grocery list and recipe manager. The backend is made with Flask and the frontend with Flutter. Easily add items to your shopping list before you go shopping. You can also create recipes and add items based on what you want to cook.
- tommyxchow/frosty: A mobile Twitch client for iOS and Android with 7TV, BetterTTV (BTTV), and FrankerFaceZ (FFZ) support.
- Torrent: Bittorrent and browsing in I2P on Android Tv Box with Termux App - Guide + Video
- tytydraco/LADB: A local ADB shell for Android!
- UnevenSoftware/LeafPic: LeafPic is a fluid, material-designed alternative gallery, it also is ad-free and open source under GPLv3 license. It doesn’t miss any of the main features of a stock gallery, and we also have plans to add more useful features.
- UweTrottmann/SeriesGuide: Track your favorite TV shows and movies on Android devices.
- vmiklos/plees-tracker: Plees Tracker is a simple sleep tracker for your Android phone.
- Waydroid
- whs/K2AUSBKeyboard: Keepass2Android USB Keyboard plugin
- wikimedia/apps-android-wikipedia: 📱The official Wikipedia app for Android!
- woheller69/browser: A privacy oriented web browser with Greasemonkey style script support
- wordpress-mobile/WordPress-Android: WordPress for Android
- x13a/Wasted: Lock and wipe on emergency.
- xpavle00/Habo: Habo is an open-source habit tracker. Created in a flutter.
- Xynngh / YetAnotherCallBlocker: Block unwanted calls effortlessly · GitLab
- yogeshpaliyal/KeyPass: KeyPass: Open-source & offline password manager. Store, manage, take control securely.
- you-apps/ClockYou: Privacy focused clock app built with MD3
- yume-chan/ya-webadb: ADB in your browser
- YumNumm/EQMonitor: An earthquake monitoring Application
- YurinDoctrine/adbloat: Android debloating via debugging
- ZeusLN/zeus: A mobile Bitcoin wallet fit for the gods. ⚡️ Est. 563345
- zoff99/ToxAndroidRefImpl: Tox Reference implementation for Android
- Zverik/every_door: A dedicated app for collecting hundreds of POI for OpenStreetMap
- Мониторинг сетей сотовой связи в России - 4PDA
adb help // List all comands
== Adb Server adb kill-server adb start-server
== Adb Reboot adb reboot adb reboot recovery adb reboot-bootloader adb root //restarts adb with root permissions
== Shell adb shell // Open or run commands in a terminal on the host Android device.
== Devices adb usb adb devices //show devices attached adb devices -l //devices (product/model) adb connect ip_address_of_device
== Get device android version adb shell getprop ro.build.version.release
== LogCat adb logcat adb logcat -c // clear // The parameter -c will clear the current logs on the device. adb logcat -d > [path_to_file] // Save the logcat output to a file on the local system. adb bugreport > [path_to_file] // Will dump the whole device information like dumpstate, dumpsys and logcat output.
== Files adb push [source] [destination] // Copy files from your computer to your phone. adb pull [device file location] [local file location] // Copy files from your phone to your computer.
== App install adb -e install path/to/app.apk
-d - directs command to the only connected USB device… -e - directs command to the only running emulator… -s <serial number> … -p <product name or path> … The flag you decide to use has to come before the actual adb command:
adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X install -r com.myAppPackage // Install the given app on all connected devices.
== Uninstalling app from device adb uninstall com.myAppPackage adb uninstall <app .apk name> adb uninstall -k <app .apk name> -> “Uninstall .apk withour deleting data”
adb shell pm uninstall com.example.MyApp adb shell pm clear [package] // Deletes all data associated with a package.
adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X uninstall com.myAppPackage //Uninstall the given app from all connected devices
== Update app adb install -r yourApp.apk // -r means re-install the app and keep its data on the device. adb install –k <.apk file path on computer>
== Home button adb shell am start -W -c android.intent.category.HOME -a android.intent.action.MAIN
== Activity Manager adb shell am start -a android.intent.action.VIEW adb shell am broadcast -a ‘my_action’
adb shell am start -a android.intent.action.CALL -d tel:+972527300294 // Make a call
// Open send sms screen with phone number and the message: adb shell am start -a android.intent.action.SENDTO -d sms:+972527300294 –es sms_body “Test –ez exit_on_sent false
// Reset permissions adb shell pm reset-permissions -p your.app.package adb shell pm grant [packageName] [ Permission] // Grant a permission to an app. adb shell pm revoke [packageName] [ Permission] // Revoke a permission from an app.
// Emulate device adb shell wm size 2048x1536 adb shell wm density 288 // And reset to default adb shell wm size reset adb shell wm density reset
== Print text adb shell input text ‘Wow, it so cool feature’
== Screenshot adb shell screencap -p /sdcard/screenshot.png
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
— adb shell screenrecord /sdcard/NotAbleToLogin.mp4
$ adb shell shell@ $ screenrecord –verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
== Key event adb shell input keyevent 3 // Home btn adb shell input keyevent 4 // Back btn adb shell input keyevent 5 // Call adb shell input keyevent 6 // End call adb shell input keyevent 26 // Turn Android device ON and OFF. It will toggle device to on/off status. adb shell input keyevent 27 // Camera adb shell input keyevent 64 // Open browser adb shell input keyevent 66 // Enter adb shell input keyevent 67 // Delete (backspace) adb shell input keyevent 207 // Contacts adb shell input keyevent 220 / 221 // Brightness down/up adb shell input keyevent 277 / 278 279 / Cut/Copy/Paste
0 –> “KEYCODE_0” 1 –> “KEYCODE_SOFT_LEFT” 2 –> “KEYCODE_SOFT_RIGHT” 3 –> “KEYCODE_HOME” 4 –> “KEYCODE_BACK” 5 –> “KEYCODE_CALL” 6 –> “KEYCODE_ENDCALL” 7 –> “KEYCODE_0” 8 –> “KEYCODE_1” 9 –> “KEYCODE_2” 10 –> “KEYCODE_3” 11 –> “KEYCODE_4” 12 –> “KEYCODE_5” 13 –> “KEYCODE_6” 14 –> “KEYCODE_7” 15 –> “KEYCODE_8” 16 –> “KEYCODE_9” 17 –> “KEYCODE_STAR” 18 –> “KEYCODE_POUND” 19 –> “KEYCODE_DPAD_UP” 20 –> “KEYCODE_DPAD_DOWN” 21 –> “KEYCODE_DPAD_LEFT” 22 –> “KEYCODE_DPAD_RIGHT” 23 –> “KEYCODE_DPAD_CENTER” 24 –> “KEYCODE_VOLUME_UP” 25 –> “KEYCODE_VOLUME_DOWN” 26 –> “KEYCODE_POWER” 27 –> “KEYCODE_CAMERA” 28 –> “KEYCODE_CLEAR” 29 –> “KEYCODE_A” 30 –> “KEYCODE_B” 31 –> “KEYCODE_C” 32 –> “KEYCODE_D” 33 –> “KEYCODE_E” 34 –> “KEYCODE_F” 35 –> “KEYCODE_G” 36 –> “KEYCODE_H” 37 –> “KEYCODE_I” 38 –> “KEYCODE_J” 39 –> “KEYCODE_K” 40 –> “KEYCODE_L” 41 –> “KEYCODE_M” 42 –> “KEYCODE_N” 43 –> “KEYCODE_O” 44 –> “KEYCODE_P” 45 –> “KEYCODE_Q” 46 –> “KEYCODE_R” 47 –> “KEYCODE_S” 48 –> “KEYCODE_T” 49 –> “KEYCODE_U” 50 –> “KEYCODE_V” 51 –> “KEYCODE_W” 52 –> “KEYCODE_X” 53 –> “KEYCODE_Y” 54 –> “KEYCODE_Z” 55 –> “KEYCODE_COMMA” 56 –> “KEYCODE_PERIOD” 57 –> “KEYCODE_ALT_LEFT” 58 –> “KEYCODE_ALT_RIGHT” 59 –> “KEYCODE_SHIFT_LEFT” 60 –> “KEYCODE_SHIFT_RIGHT” 61 –> “KEYCODE_TAB” 62 –> “KEYCODE_SPACE” 63 –> “KEYCODE_SYM” 64 –> “KEYCODE_EXPLORER” 65 –> “KEYCODE_ENVELOPE” 66 –> “KEYCODE_ENTER” 67 –> “KEYCODE_DEL” 68 –> “KEYCODE_GRAVE” 69 –> “KEYCODE_MINUS” 70 –> “KEYCODE_EQUALS” 71 –> “KEYCODE_LEFT_BRACKET” 72 –> “KEYCODE_RIGHT_BRACKET” 73 –> “KEYCODE_BACKSLASH” 74 –> “KEYCODE_SEMICOLON” 75 –> “KEYCODE_APOSTROPHE” 76 –> “KEYCODE_SLASH” 77 –> “KEYCODE_AT” 78 –> “KEYCODE_NUM” 79 –> “KEYCODE_HEADSETHOOK” 80 –> “KEYCODE_FOCUS” 81 –> “KEYCODE_PLUS” 82 –> “KEYCODE_MENU” 83 –> “KEYCODE_NOTIFICATION” 84 –> “KEYCODE_SEARCH” 85 –> “KEYCODE_MEDIA_PLAY_PAUSE” 86 –> “KEYCODE_MEDIA_STOP” 87 –> “KEYCODE_MEDIA_NEXT” 88 –> “KEYCODE_MEDIA_PREVIOUS” 89 –> “KEYCODE_MEDIA_REWIND” 90 –> “KEYCODE_MEDIA_FAST_FORWARD” 91 –> “KEYCODE_MUTE” 92 –> “KEYCODE_PAGE_UP” 93 –> “KEYCODE_PAGE_DOWN” 94 –> “KEYCODE_PICTSYMBOLS” … 122 –> “KEYCODE_MOVE_HOME” 123 –> “KEYCODE_MOVE_END” // https://developer.android.com/reference/android/view/KeyEvent.html
== ShPref
adb shell ‘am broadcast -a org.example.app.sp.PUT –es key key_name –es value “hello world!”’
adb shell ‘am broadcast -a org.example.app.sp.REMOVE –es key key_name’
adb shell ‘am broadcast -a org.example.app.sp.CLEAR –es key key_name’
adb shell ‘am broadcast -a org.example.app.sp.PUT –es name Game –es key level –ei value 10’
adb shell ‘am broadcast -a org.example.app.sp.PUT –es key string –es value “hello world!”’ adb shell ‘am broadcast -a org.example.app.sp.PUT –es key boolean –ez value true’ adb shell ‘am broadcast -a org.example.app.sp.PUT –es key float –ef value 3.14159’ adb shell ‘am broadcast -a org.example.app.sp.PUT –es key int –ei value 2015’ adb shell ‘am broadcast -a org.example.app.sp.PUT –es key long –el value 9223372036854775807’
adb shell ‘am broadcast -a org.example.app.sp.CLEAR –ez restart true’
== Monkey adb shell monkey -p com.myAppPackage -v 10000 -s 100 // monkey tool is generating 10.000 random events on the real device
== Paths data/data/<package>/databases (app databases) /data/data/<package>/shared_prefs (shared preferences) /data/app (apk installed by user) /system/app (pre-installed APK files) /mmt/asec (encrypted apps) (App2SD) /mmt/emmc (internal SD Card) /mmt/adcard (external/Internal SD Card) /mmt/adcard/external_sd (external SD Card)
adb shell ls (list directory contents) adb shell ls -s (print size of each file) adb shell ls -R (list subdirectories recursively)
== Device onformation adb get-statе (print device state) adb get-serialno (get the serial number) adb shell dumpsys iphonesybinfo (get the IMEI) adb shell netstat (list TCP connectivity) adb shell pwd (print current working directory) adb shell dumpsys battery (battery status) adb shell pm list features (list phone features) adb shell service list (list all services) adb shell dumpsys activity <package>/<activity> (activity info) adb shell ps (print process status) adb shell wm size (displays the current screen resolution) dumpsys window windows | grep -E ‘mCurrentFocus|mFocusedApp’ (print current app’s opened activity)
== Package info adb shell list packages (list package names) adb shell list packages -r (list package name + path to apks) adb shell list packages -3 (list third party package names) adb shell list packages -s (list only system packages) adb shell list packages -u (list package names + uninstalled) adb shell dumpsys package packages (list info on all apps) adb shell dump <name> (list info on one package) adb shell path <package> (path to the apk file)
==Configure Settings Commands adb shell dumpsys battery set level <n> (change the level from 0 to 100) adb shell dumpsys battery set status<n> (change the level to unknown, charging, discharging, not charging or full) adb shell dumpsys battery reset (reset the battery) adb shell dumpsys battery set usb <n> (change the status of USB connection. ON or OFF) adb shell wm size WxH (sets the resolution to WxH)
== Device Related Commands adb reboot-recovery (reboot device into recovery mode) adb reboot fastboot (reboot device into recovery mode) adb shell screencap -p “/path/to/screenshot.png” (capture screenshot) adb shell screenrecord “/path/to/record.mp4” (record device screen) adb backup -apk -all -f backup.ab (backup settings and apps) adb backup -apk -shared -all -f backup.ab (backup settings, apps and shared storage) adb backup -apk -nosystem -all -f backup.ab (backup only non-system apps) adb restore backup.ab (restore a previous backup) adb shell am start|startservice|broadcast <INTENT>[<COMPONENT>] -a <ACTION> e.g. android.intent.action.VIEW -c <CATEGORY> e.g. android.intent.category.LAUNCHER (start activity intent)
adb shell am start -a android.intent.action.VIEW -d URL (open URL) adb shell am start -t image/* -a android.intent.action.VIEW (opens gallery)
== Logs adb logcat [options] [filter] [filter] (view device log) adb bugreport (print bug reports)
== Other adb backup // Create a full backup of your phone and save to the computer. adb restore // Restore a backup to your phone. adb sideload // Push and flash custom ROMs and zips from your computer.
fastboot devices // Check connection and get basic information about devices connected to the computer. // This is essentially the same command as adb devices from earlier. //However, it works in the bootloader, which ADB does not. Handy for ensuring that you have properly established a connection.
Shared Preferences
adb shell ‘am broadcast -a org.example.app.sp.PUT –es key key_name –es value “hello world!”’
adb shell ‘am broadcast -a org.example.app.sp.REMOVE –es key key_name’
adb shell ‘am broadcast -a org.example.app.sp.CLEAR –es key key_name’
adb shell ‘am broadcast -a org.example.app.sp.PUT –es name Game –es key level –ei value 10’
adb shell ‘am broadcast -a org.example.app.sp.PUT –es key string –es value “hello world!”’ adb shell ‘am broadcast -a org.example.app.sp.PUT –es key boolean –ez value true’ adb shell ‘am broadcast -a org.example.app.sp.PUT –es key float –ef value 3.14159’ adb shell ‘am broadcast -a org.example.app.sp.PUT –es key int –ei value 2015’ adb shell ‘am broadcast -a org.example.app.sp.PUT –es key long –el value 9223372036854775807’
adb shell ‘am broadcast -a org.example.app.sp.CLEAR –ez restart true’
=== Few bash snippets === @Source (https://jonfhancock.com/bash-your-way-to-better-android-development-1169bc3e0424)
=== Using tail -n //Use tail to remove the first line. Actually two lines. The first one is just a newline. The second is “List of devices attached.” $ adb devices | tail -n +2
=== Using cut -sf // Cut the last word and any white space off the end of each line. $ adb devices | tail -n +2 | cut -sf -1
=== Using xargs -I // Given the -I option, xargs will perform an action for each line of text that we feed into it. // We can give the line a variable name to use in commands that xargs can execute. $ adb devices | tail -n +2 | cut -sf -1 | xargs -I X echo X aw yiss
=== Three options below together // Will print android version of all connected devices adb devices | tail -n +2 | cut -sf -1 | xargs -I X adb -s X shell getprop ro.build.version.release
=== Using alias – Example 1 alias tellMeMore=echo tellMeMore “hi there” Output => hi there – Example 2 // Define alias alias apkinstall=”adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X install -r $1” // And you can use it later apkinstall ~/Downloads/MyAppRelease.apk // Install an apk on all devices – Example 3 alias rmapp=”adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X uninstall $1” rmapp com.example.myapp // Uninstall a package from all devices – Example 4 alias clearapp=”adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell pm clear $1” clearapp com.example.myapp // Clear data on all devices (leave installed) – Example 5 alias startintent=”adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell am start $1” startintent https://twitter.com/JonFHancock // Launch a deep link on all devices
Setting up your .bash_profile Finally, to make this all reusable even after rebooting your computer (aliases only last through the current session), we have to add these to your .bash_profile. You might or might not already have a .bash_profile, so let’s make sure we append to it rather than overwriting it. Just open a terminal, and run the following command
touch .bash_profile && open .bash_profile
This will create it if it doesn’t already exist, and open it in a text editor either way. Now just copy and paste all of the aliases into it, save, and close.
alias startintent=”adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell am start $1” alias apkinstall=”adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X install -r $1” alias rmapp=”adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X uninstall $1” alias clearapp=”adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell pm clear $1”
=============================================================== Sources:
- afollestad/drag-select-recyclerview: 👇 Easy Google Photos style multi-selection for RecyclerViews, powered by Kotlin and AndroidX.
- VKCOM/vk-android-sdk: Android library for working with VK API, authorization through VK app, using VK functions.
#!/bin/bash
# https://github.com/dwisiswant0/xiaomi-backup/blob/master/backup.sh
PACKAGES=`adb shell pm list packages -f | cut -d ":" -f2`
for package in ${PACKAGES}; do
apk=`echo ${package} | grep -Eo ".*\.apk"`
pkg=`echo ${package} | rev | cut -d "=" -f1 | rev`
[[ ${apk} =~ "/data"* ]] && adb pull "${apk}" "${PWD}/${pkg}.apk"
done
- skydoves/MovieCompose: 🎞 A demo movie app using Jetpack Compose and Hilt based on modern Android tech stacks.
- ProtsenkoAI/shaboom-app: Android app of ShaBoom project
- mrsegev/MovieNight: MovieNight is a sample Android application that uses the clean architecture approach and is written in Kotlin.
- NoMore201/playmaker: Fdroid repository manager fetching apps from Play Store
- mvdan/fdroidcl: F-Droid desktop client
- Iamlooker/Droid-ify: F-Droid client with Material UI.
- compizomania: Подключаем любое Android-устройство (планшет/телефон), как съёмный носитель с помощью ADB в Ubuntu/Linux Mint
- Decrypting Android App SSL Traffic
- Push уведомления в Android с помощью Firebase Cloud Messaging для начинающих / Хабр
- Как отключить предупреждение о вреде долгого прослушивания аудио (Android) / Хабр
- Публикуем Android приложения автоматически с помощью Gitlab CI / Хабр
Ваш телефон – секретное оружие: Как превратить его в веб-камеру и оживить ваши онлайн-встречи! (Если у вас Linux)
Что объединяет удаленного сотрудника, на долю которого выпало много видеозвонков, зарождающуюся звезду YouTube и начинающего стримера? Все они, рано или поздно, осознают неотъемлемую важность повышения качества изображения, которое предоставляется их зрителям. А еще у них наверняка есть какой-нибудь Xiaomi Nano Porridge 10 Pro с довольно неплохой матрицей. И я не исключение, бросив вызов этой проблеме по-программистски и постаравшись обойтись без больших финансовых затрат, решением которой и хочу поделиться с вами. Добро пожаловать под кат!
Гифка из интернета
- Рабочая машина на Linux
- Телефон с камерой
- USB кабель
Идея проста, мы собираемся пробросить поток с камеры телефона на нашу рабочую лошадку и привязать его к виртуальному девайсу, который мы потом сможем выбирать как камеру в приложениях. Для подключения к телефону я буду использовать *adb*, для получения потока видео *scrcpy*, для создания виртуальной камеры в системе *v4l2loopback*
sudo apt update sudo apt -y install android-tools-adb
pacman -S android-udev
sudo apt install ffmpeg libsdl2-2.0-0 adb wget \\ gcc git pkg-config meson
ninja-build libsdl2-dev \\ libavcodec-dev libavdevice-dev
libavformat-dev libavutil-dev \\ libswresample-dev
libusb-1.0-0 libusb-1.0-0-dev sudo apt install scrcpy
pacman -S scrcpy
Возможно, вам понадобится установить/обновить какие-то зависимости. Полную инструкцию можно найти здесь
В том случае, если вы хотите последнюю версию или собранный бинарник оказался с проблемой, которую решили в одном из новых релизов
git clone <https://github.com/Genymobile/scrcpy> cd scrcpy
./install_release.sh
sudo apt install v4l2loopback-dkms sudo apt install v4l2loopback-utils
pacman -S v4l2loopback-dkms pacman -S v4l2loopback-utils
- Включаем на телефоне USB debugging
- Подключаем телефон к компьютеру по USB и вводим следующую команду и убеждаемся, что он в нашем поле зрения
adb devices
Если вывод из консоли содержит no permissions
adb devices List of devices attached 4df15d6e02a55f15 device ???????????? no
permissions
То идем сюда
- Подключаем телефон к той же сети, в которой находится компьютер
- Подключаем телефон к компьютеру по USB и вводим
adb tcpip 5555
- Отключаем телефон от USB
- Узнаем IP адрес нашего телефона. Например, так Settings > About tablet (or About phone ) > Status > IP address
- Подключаемся к телефону по его IP адресу
adb connect device_ip_address:5555
- Убеждаемся, что телефон подключен
adb devices List of devices attached device_ip_address:5555 device
Для большей информации можно сюда
sudo modprobe v4l2loopback devices=1 video_nr=22 exclusive_caps=1
card_label="Virtual Webcam"
Это создаст новый видео девайс /dev/video22
. Вы можете определить номер
девайса на ваше усмотрение и вкус.
Смотрим, что наш девайс создался:
v4l2-ctl --list-devices
Стартуем scrcpy
. Он подключается к единственному подключенному устройству
по умолчанию:
scrcpy -m1920 --v4l2-sink=/dev/video22 --video-source=camera --no-audio
Заходим в любое приложение, позволяющее протестировать камеру, и сидим довольные!
Если выдается следующая ошибка:
[server] ERROR: Encoding error: android.media.MediaCodec$CodecException: start
failed WARN: Device disconnected [server] ERROR: Exception on thread
Thread[video,5,main]
Это значит, что вам надо поставить меньшее разрешение. Сделать это можно
напрямую через параметр --camera-size=1920x1080
или используя -m
/
--max-size
, например -m1920
, -m1080
- Подключиться к телефону по его серийному номеру
--serial=device_serial
- Убрать открывающееся окно с видео
--no-video-playback
- Посмотреть доступные камеры:
scrcpy --list-cameras scrcpy --list-camera-sizes
- Указать, с какой камеры будет браться поток:
--camera-id=0
- Указать размер выходного потока:
--camera-size=1840x444
-m1920 m1920 m1080
- Повернуть камеру на определенный угол:
--orientation=90
- FPS
--camera-fps=60
- ADB⚡OTG (Run ADB commands without a computer (no ROOT needed)) - https://f-droid.org/packages/com.htetznaing.adbotg
- alextran1502/immich: Self-hosted photo and video backup solution directly from your mobile phone.
- android/nowinandroid: A fully functional Android app built entirely with Kotlin and Jetpack Compose
- android-password-store/Android-Password-Store: Android application compatible with ZX2C4’s Pass command line application
- AndroTainer (Manage your docker containers via your smartphone) - https://f-droid.org/packages/com.dokeraj.androtainer
- anthonycr/Lightning-Browser: A lightweight Android browser with modern navigation
- appium/appium: Cross-platform automation framework for all kinds of your apps built on top of W3C WebDriver protocol
- AVNC (Fast & Secure VNC client for Android) - https://f-droid.org/packages/com.gaurav.avnc
- barry-ran/QtScrcpy: Android real-time display control software
- blokadaorg/blokada: Free ad blocker for Android with the best open source community.
- BootBoi (Turn on/off your remote machine without leaving your couch!) - https://f-droid.org/packages/com.elektropepi.bootboi
- chenxiaolong/BCR: A Basic Call Recorder for rooted Android devices
- chrisbanes/tivi: Tivi is a work-in-progress TV show tracking Android app, which connects to Trakt.tv. It is still in its early stages of development and currently only contains two pieces of UI. It is under heavy development.
- ChuckerTeam/chucker: 🔎 An HTTP inspector for Android & OkHTTP (like Charles but on device) - More Chucker than Chuck
- davidtakac/prognoza: Libre weather app with widgets and offline support
- dessalines/thumb-key: A privacy-conscious Android keyboard made for your thumbs
- dittos/animeta: Manage your anime watch history.
- DroidNinja/Android-FilePicker: Photopicker and document picker for android
- DroidPHP/DroidPHP: DroidPHP is a small, fast and lightweight open source Web Server for Android
- droidVNC-NG (VNC server app that does not require root privileges.) - https://f-droid.org/packages/net.christianbeier.droidvnc_ng
- duckduckgo/Android: DuckDuckGo Android App
- Dystopia Project Free Software, minimalistic and privacy friendly email app for Android. / Simple Email · GitLab
- EtchDroid/EtchDroid: NO LONGER MAINTAINED - An application to write OS images to USB drives, on Android, no root required.
- euphony-io/waple: Waple helps you share your Wi-Fi password quickly.
- Feeel - home workouts | F-Droid - Free and Open Source Android App Repository
- florisboard/florisboard: An open-source keyboard for Android which respects your privacy. Currently in early-beta.
- FredJul/Flym: Flym News Reader is a light Android feed reader (RSS/Atom)
- google/addlicense: A program which ensures source code files have copyright license headers by scanning directory patterns recursively
- google/evergreen-checker
- gotev/android-upload-service: Easily upload files (Multipart/Binary/FTP out of the box) in the background with progress indication notification
- Greentooth (Automatic Bluetooth disabler) - https://f-droid.org/packages/com.smilla.greentooth
- grote/Transportr: Free Public Transport Assistant without Ads or Tracking
- gsantner/markor: Text editor - Notes & ToDo (for Android) - Markdown, todo.txt, plaintext, math, ..
- gsantner/memetastic: Meme Creator for Android - Simple & Ad-Free
- Hash-Studios/Prism: Prism is a beautiful open-source wallpapers app for Android. It is built with Dart on top of Google’s Flutter Framework.
- HTTP Request Shortcuts (Create home screen shortcuts that trigger arbitrary HTTP requests) - HTTP Request Shortcuts
- iielse/imageviewer: A simple and customizable Android full-screen image viewer 一个简单且可自定义的Android全屏图像浏览器
- ingbyr/VDM: GUI for command-line video downloader (youtube-dl annie)
- inorichi/tachiyomi: Free and open source manga reader for Android
- iTXTech/Daedalus: No root required Android DNS modifier and Hosts/DNSMasq resolver.
- kevinhinterlong/archwiki-viewer: A simple Android specific viewer for the Arch Linux Wiki.
- Kunzisoft/KeePassDX: KeePass implementation for android with material design and deluxe features
- KyleKun/one_second_diary: Minimalist video diary app.
- LibreShift/red-moon: Android screen filter app for night time phone use.
- [[https://github.com/libre-tube/LibreTube][libre-tube/LibreTube: An alternative frontend for YouTube, for Android. [WIP]]]
- ligi/PassAndroid: Android App to view passes
- lopspower/CircularImageView: Create circular ImageView in Android in the simplest way possible
- Martin-Nyaga/termplot: A simple terminal plotting tool for visualising streaming data.
- moezbhatti/qksms: The most beautiful SMS messenger for Android
- moVirt (mobile client for oVirt monitoring) - https://f-droid.org/packages/org.ovirt.mobile.movirt
- mozilla-mobile/fenix: Firefox for Android
- mpv remote (Android application to control mpv running on another computer.) - https://f-droid.org/packages/miccah.mpvremote
- mukul500/AnimeXStream: An Android app to watch anime on your phone without ads.
- neffex97/Tiwee: IPTV player
- NeoApplications/Neo-Backup: backup manager for android
- NeoApplications/Neo-Store: F-Droid client with Material UI.
- ntfy.sh | simple HTTP-based pub-sub
- openhab/openhab-android: openHAB client for Android
- OpenLauncherTeam/openlauncher: Customizable and Open Source Launcher for Android
- organicmaps/organicmaps: 🍃 Organic Maps is a free Android & iOS offline maps app for travelers, tourists, hikers, and cyclists. It uses crowd-sourced OpenStreetMap data and is developed with love by MapsWithMe (MapsMe) founders and our community. No ads, no tracking, no data collection, no crapware. Your donations and positive reviews motivate and inspire our small team!
- PaulWoitaschek/Voice: Minimalistic audiobook player
- phikal/ReGeX: A Regular Expression game for Android
- Presence Publisher (Regularly publish to an MQTT topic) - https://f-droid.org/packages/org.ostrya.presencepublisher
- Public IP (App and Widget allowing user to find its current public IP address) - https://f-droid.org/packages/net.guildem.publicip
- qBController (handling qBittorrent servers) - https://f-droid.org/packages/com.lgallardo.qbittorrentclient
- RestSMS (REST service to send SMS via your Android device) - https://f-droid.org/packages/net.xcreen.restsms
- RetroMusicPlayer/RetroMusicPlayer: Best Material You Design music player for Android
- rkkr/simple-keyboard
- rom1v/sndcpy: Android audio forwarding (scrcpy, but for audio)
- saket/press: A cross-platform markdown editor written in Kotlin Multiplatform (work in progress)
- ServeIt (A simple http-server on android using flutter.) - https://f-droid.org/packages/com.example.flutter_http_server
- shadowsocks/shadowsocks-android: A shadowsocks client for Android
- SimpleMobileTools/Simple-Calendar: A simple calendar with events, customizable widgets and no ads.
- sourcerer-io/sourcerer-app: 🦄 Sourcerer app makes a visual profile from your GitHub and git repositories.
- Spider (This application enables you to connect to your SFTP server using a password or) - https://f-droid.org/packages/org.kknickkk.spider
- stfalcon-studio/StfalconImageViewer: A simple and customizable Android full-screen image viewer with shared image transition support, “pinch to zoom” and “swipe to dismiss” gestures
- theAkito/webmon: Android app for monitoring web services. Notifies you of any HTTP or Onion destination not being available.
- Thomas A small application that allows to handle Twitter and Youtube to redirect them to their Nitter or Invidious URLs and open them with the appropriate app. / UntrackMe · GitLab
- TSVNC (Small and simple VNC client.) - https://f-droid.org/packages/de.toshsoft.tsvnc
- ukanth/afwall: AFWall+ (Android Firewall +) - iptables based firewall for Android
- Vernet (Host and Port scanner. Ping IP or domain.) - https://f-droid.org/packages/org.fsociety.vernet
- Webmon (Monitor web services and get notified, if a service becomes unavailable.) - https://f-droid.org/packages/ooo.akito.webmon
- westnordost/StreetComplete: Easy to use OpenStreetMap editor for Android
- Wi-Fi Reminders (Unknown application) - https://f-droid.org/packages/ru.glesik.wifireminders
- wlanjie/trinity: android video record editor muxer sdk
- yuriykulikov/AlarmClock: Most popular open source Android Alarm Clock App
- zagum/Android-SwitchIcon: Google launcher-style implementation of switch (enable/disable) icon
- Zfinix/worddle: 😘 A wordle game clone built in flutter.
- zt64/Hyperion: An alternative YouTube front-end
- Stream your PC audio to your phone - AudioRelay
- NokoPrint — Печать по Wi-Fi, Bluetooth и USB - 4PDA
- Упакуй паллет, братуха, упакуй… | Пикабу
- Журнал счётчиков v.2.0 | Пикабу- Калькулятор для подгузников | Пикабу
Open Settings
and configure SSH Path
to /storage/emulated/0/.ssh
.
Make sure /storage/emulated/0/.ssh/authorized_keys
file exists and has
public keys.
- 0x192/universal-android-debloater: Cross-platform GUI written in Rust using ADB to debloat non-rooted android devices. Improve your privacy, the security and battery life of your device.
- alibaba/p3c: Alibaba Java Coding Guidelines pmd implements and IDE plugin
- bytedance/CodeLocator
- corbindavenport/nexus-tools: Installer for ADB, Fastboot, and other Android tools on Linux, macOS, Chrome OS, and Windows
- darkhz/adbtuifm: A TUI File Manager for ADB
- DeviceFarmer/stf: Control and manage Android devices from your browser.
- GoogleChromeLabs/bubblewrap: Bubblewrap is a Command Line Interface (CLI) that helps developers to create a Project for an Android application that launches an existing Progressive Web App (PWAs) using a Trusted Web Activity.
- iBotPeaches/Apktool: A tool for reverse engineering Android apk files
- JakeWharton/SdkSearch: An Android app and Chrome extension for searching the Android SDK documentation.
- michaelbel/android-app-template: A simple GitHub template that lets you create a modern Android app
- mobile-dev-inc/maestro: Painless Mobile UI Automation
- mrrfv/linux-android-backup: Back up your device without vendor lock-ins, using insecure software or root. Supports encryption and compression out of the box. Works cross-platform.
- nikp123/scrcpy-desktop: Run an Android desktop environment off of a device using ONLY scrcpy
- pbreault/adb-idea: A plugin for Android Studio and Intellij IDEA that speeds up your day to day android development.
- react-native-community/docker-android: Android Docker Image for React Native and common android development.
- rom1v/autoadb: Execute a command whenever a device is adb-connected
- secure-software-engineering/FlowDroid: FlowDroid Static Data Flow Tracker
- sickcodes/adb-download-all: ADB Download All Files - A dirty shell script to adb pull all readable files using adb pull & base64
- sickcodes/dock-droid: Docker Android - Run QEMU Android in a Docker! X11 Forwarding! CI/CD for Android!
- spotify/ruler: Gradle plugin which helps you analyze the size of your Android apps.
- tanprathan/MobileApp-Pentest-Cheatsheet: The Mobile App Pentest cheat sheet was created to provide concise collection of high value information on specific mobile application penetration testing topics.
- tiann/eadb: eBPF Android Debug Bridge
- Tomotoes/scrcpy-gui: A simple & beautiful GUI application for scrcpy. QQ群:734330215
- vfsfitvnm/ViMusic: A Jetpack Compose Android application for streaming music from YouTube Music.
- Как получать уведомления с Android на Linux Android2Linux
- [[https://xdaforums.com/t/app-android-tv-projectivy-launcher.4436549/][[APP][ANDROID TV] Projectivy Launcher | XDA Forums]]
- Szaki/XiaomiADBFastbootTools: A simple tool for managing Xiaomi devices on desktop using ADB and Fastboota
Firstly you need to enable wireless ADB on your Android device.
https://github.com/Genymobile/scrcpy/blob/87da1372380ebddb60e4d89cff9a251c866e21c5/README.md
Alternatively, it is possible to enable the TCP/IP connection manually using adb:
Plug the device into a USB port on your computer.
Connect the device to the same Wi-Fi network as your computer.
Get your device IP address, in Settings → About phone → Status, or by executing this command:
adb shell ip route | awk '{print $9}'
Enable adb over TCP/IP on your device: adb tcpip 5555.
Unplug your device.
Connect to your device: adb connect DEVICE_IP:5555 (replace DEVICE_IP with the device IP address you found).
Run scrcpy as usual.
- Shell-скриптинг в среде Android — Хакер
- connect adb over wifi
adb connect 192.168.0.177:5555
- call
adb shell am start -a android.intent.action.CALL tel:xxxxxxxxxxx
Shell-скриптинг в среде Android
Евгений Зобнин
24.10.2014
8 комментариев
393099
Содержание статьи
Особенности Android-окружения
Первый пример
Автозапуск
Запуск скриптов до и после установки прошивки
INFO
Что еще?
Вместо выводов
Android основан на ядре Linux, включает в себя набор стандартных UNIX-команд и простой шелл sh. Все это значит, что мы можем не только использовать командную строку для выполнения низкоуровневых операций, но и писать шелл-скрипты, которые будут выполнять функции, недоступные из графического интерфейса. В этой статье мы поговорим о том, что с их помощью можно сделать и зачем все это нужно.
Для прошлого номера журнала я написал статью о Tasker — системе, которая позволяет автоматизировать работу Android и заменить сотни сторонних приложений. К сожалению, Tasker ограничен высокоуровневыми функциями Android и не позволяет выполнять такие низкоуровневые операции, как монтирование файловых систем, изменение параметров ядра, системных переменных или запуск демонов. Зато все это можно сделать с помощью скриптов.
Сразу оговорюсь, что в этой статье речь пойдет о шелл-скриптах в традиционном для Linux понимании, без использования инструментов вроде SL4A, QPython или Roboto. Главное назначение таких скриптов — изменение поведения системы, параметров ядра, работа с демонами (ADB, например) и тому подобное. Скрипты могут стартовать на этапе загрузки ОС, установки новой прошивки, после тапа по кнопке или же по традиции — из терминала.
В статье я расскажу, как писать такие скрипты, как заставить их стартовать автоматически, привязывать к определенному системному событию. В качестве бонуса также объясню, как заставить консоль восстановления (recovery) выполнить необходимые тебе действия перед установкой или сразу после установки новой прошивки. Начинаем.
Особенности Android-окружения
В самой своей основе, там, где нет Java и Dalvik, Android представляет собой минималистичный Linux-дистрибутив со всеми свойственными ему атрибутами: ядром, системой инициализации, набором библиотек, демонов, консольных команд и, конечно же, шеллом. Последний — это не что иное, как mksh из MirBSD, переименованный в sh; простой командный интерпретатор с поддержкой языковых конструкций классического Bourne shell из UNIX и автодополнением по нажатию Tab.
В качестве комплекта базовых UNIX-команд здесь используется toolbox, своего рода урезанная альтернатива BusyBox, которая позволяет вызывать несколько разных команд из одного бинарника (с помощью симлинков). Toolbox включает в себя очень ограниченный набор команд, в котором нет не только grep или sort, но даже cp. Поэтому для полноценной работы со скриптами настоятельно рекомендуется установка BusyBox, благо в маркете полно бесплатных инсталляторов.
Сам шелл располагается не совсем по адресу, поэтому «шибанг» в скриптах будет выглядеть несколько по-иному, а именно #!/system/bin/sh. Зато о расположении бинарников можно не думать вообще, так как в переменной $PATH всегда прописаны правильные значения. Каталогов для поиска команд тут всегда три: /system/bin/, /system/sbin/ и /system/xbin/ для внешних бинарников. Туда обычно устанавливается BusyBox.
Основное назначение скриптинга в Android — работа с ядром и системными утилитами. Ядро тут стандартное и экспортирует все те же интерфейсы /proc и /sys, через которые можно рулить железом и состоянием системы. Плюс есть набор специфичных для Android утилит, которые будут очень полезны при разработке скриптов:
pm — менеджер пакетов, позволяет устанавливать, удалять и перемещать софт;
am — менеджер активностей (Activity), может быть использован для запуска приложений;
dumpsys — дамп в консоль массы различной информации о состоянии системы;
screencap — утилита для снятия скриншота;
screenrecord — утилита для записи скринкастов;
getprop/setprop — команды для чтения и изменения системных переменных;
start/stop — запуск и остановка системных служб;
input — позволяет отправлять в текущее окно кей-коды (эмуляция клавиатуры);
service — утилита для управления Java-сервисами, имеет очень много возможностей;
svc — позволяет управлять Wi-Fi, USB-подключением и питанием.
Часть вывода команды dumpsys
Часть вывода команды dumpsys
Другие статьи в выпуске:
Хакер #185. Докажи баг!
Содержание выпуска
Подписка на «Хакер»-60%
Первый пример
Теперь давайте попробуем написать первый скрипт. Делать это лучше на компе, а еще лучше в Linux или редакторе, который умеет создавать текстовые файлы без символа возврата каретки (который при открытии в Android будет выглядеть как ^M в конце каждой строки). Наш первый скрипт будет состоять всего из двух строк, которые делают бэкап всех установленных приложений на карту памяти. Его код (требует BusyBox):
#!/system/bin/sh
mkdir /sdcard/backup
cp /data/app/*.apk /sdcard/backup
Сохраняем (пусть он называется apk_backup.sh) и перекидываем на смартфон с помощью ADB:
$ adb push apk_backup.sh /sdcard/
Теперь его нужно запустить. Проще всего сделать это с помощью все того же ADB:
$ adb shell sh /sdcard/apk_backup.sh
Примерно таким же образом скрипт можно запустить из консоли на самом смартфоне/планшете:
$ sh /sdcard/apk_backup.sh
Само собой, такой способ не очень удобен. Поэтому нам нужен какой-то быстрый способ запуска скрипта. Наиболее удобное из найденных мной решений — это приложение QuickTerminal. Устанавливаем, запускаем, переходим на вкладку Quick Command, нажимаем кнопку «+», вбиваем имя (произвольное) и команду (sh /sdcard/apk_backup.sh), в поле Output Type выбираем либо Dialog Output, либо Nothing. В первом случае во время выполнения скрипта на экране появится окно с результатом, во втором все пройдет в фоне. Кому что удобнее. Далее сохраняем и получаем кнопку, с помощью которой скрипт можно будет запустить быстро и легко.
Теперь напишем скрипт, который восстановит наш бэкап:
#!/system/bin/sh
for i in /sdcard/backup/*; do
pm install -t -r $i
done
В нем мы задействовали команду pm с опцией install и флагами -t и -r, которые заставляют систему устанавливать приложения, даже если они подписаны тестовым ключом или уже установлены. Также можно использовать флаг -s, который принуждает приложения к установке на карту памяти (если такая возможность есть), или -f — установка во внутреннюю память устройства.
Почти все команды Android имеют подробную справку
Почти все команды Android имеют подробную справку
Имея рут, можно даже сделать бэкап настроек всех приложений с помощью копирования и архивации каталога /data/data/, однако восстановить его будет очень проблематично, так как в Android каждое приложение исполняется от имени созданного специально для него Linux-юзера и хранит настройки внутри каталога, принадлежащего этому пользователю. Проблема здесь в том, что идентификатор Linux-юзера для каждого приложения генерируется динамически, поэтому после восстановления бэкапа в заново установленной системе идентификаторы не будут совпадать и приложения не смогут прочитать свои настройки. Придется вручную выяснять ID юзера для каждого приложения и менять права доступа на каталоги с данными.
С другой стороны, мы можем использовать встроенный в Android Backup Manager, позволяющий сторонним приложениям использовать возможности системы для бэкапа и восстановления приложений и их данных. Управлять им можно из консоли (а значит, и с помощью скриптов), но сам по себе он никакого бэкапа не производит, а возлагает эту работу на сторонние приложения. Helium — одно из таких приложений. Если установить и настроить его, операцию бэкапа и восстановления можно будет заскриптовать. Например, следующий простой скрипт сделает резервную копию всех сторонних приложений:
#!/system/bin/sh
# Получаем список всех сторонних приложений
for i in `pm list packages -e`; do
# Добавляем каждое из них в очередь
bmgr backup ${i:8}
done
# Запускаем операцию бэкапа
bmgr run
Конструкция ${i:8} здесь нужна, чтобы обрезать слово «packages:», которое pm добавляет в начало имени каждого пакета. Чтобы восстановить бэкап, можно использовать либо тот же Helium, либо команду bmgr:
$ bmgr list sets # Получаем список бэкапов
$ bmgr restore <тег> # Восстанавливаем нужный бэкап
Автозапуск
«Это все круто, но скрипты должны запускаться сами», — скажешь ты и будешь абсолютно прав. Без автозапуска от скриптов толку мало, но это легко исправить, если воспользоваться все тем же Tasker. Он умеет запускать любые шелл-команды в ответ на любое событие. Чтобы воспользоваться этой функциональностью, достаточно создать новый профиль, выбрать событие (для бэкапа лучшим событием будет время), затем добавляем действие, выбираем Script -> Run Shell, вбиваем команду (sh /sdcard/script.sh), выбираем, если необходимо, файл для записи результата и включаем профиль.
Другой популярный способ автозапуска — это использование средств автоматического исполнения скриптов при загрузке в сторонних прошивках. Сегодня почти все сколько-нибудь известные кастомные прошивки умеют стартовать скрипты из каталога /system/etc/init.d/, а в стоке такую функциональность можно получить с помощью приложения Universal init.d из маркета. С последним, однако, надо быть осторожным, так как оно запускает скрипты не на раннем этапе загрузки, как это происходит в том же CyanogenMod, а уже после полной загрузки системы.
Итак, что мы можем поместить в автозагрузку? Например, скрипт запуска демона ADB в сетевом режиме:
#!/system/bin/sh
setprop service.adb.tcp.port 5555
stop adbd
start adbd
Для подключения к нему с ПК набираем такую команду:
$ adb connect IP-смартфона
Также мы можем применить некоторые оптимизации подсистемы виртуальной памяти:
#!/system/bin/sh
echo "4096" > /proc/sys/vm/min_free_kbytes
echo "0" > /proc/sys/vm/oom_kill_allocating_task;
echo "0" > /proc/sys/vm/panic_on_oom;
echo "0" > /proc/sys/vm/laptop_mode;
echo "0" > /proc/sys/vm/swappiness
echo "50" > /proc/sys/vm/vfs_cache_pressure
echo "90" > /proc/sys/vm/dirty_ratio
echo "70" > /proc/sys/vm/dirty_background_ratio
Ну или подогнать механизм lowmemorykiller (автоматическое убийство фоновых приложений при нехватке памяти) под наши нужды:
#!/system/bin/sh
echo "2048,3072,6144,15360,17920,20480" > /sys/module/lowmemorykiller/parameters/minfree
Ну и конечно же, автоматический выбор планировщика процессов:
#!/system/bin/sh
echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Все это можно сделать с помощью специализированного софта, но зачем загружать систему дополнительным ПО, которое еще и будет висеть в фоне, когда можно обойтись несколькими простыми скриптами?
Как запустить скрипт с помощью Tasker
Как запустить скрипт с помощью Tasker
Запуск скриптов до и после установки прошивки
Почти каждый, кто устанавливает на свой гаджет стороннюю прошивку, также ставит поверх нее пакет с фирменными приложениями Google (gapps), который включает в себя маркет, YouTube, Gmail и другой софт. Каждый раз, когда происходит обновление прошивки, раздел /system, содержащий ее и gapps, полностью стирается, но приложения Google всегда остаются на месте. Это происходит потому, что, кроме всего прочего, gapps содержит в своем составе специальный скрипт, который размещается в каталоге /system/addon.d/ и запускается консолью восстановления до и после установки прошивки. Этот скрипт делает бэкап и восстановление приложений Google.
Мы можем использовать эту возможность для выполнения наших собственных действий до и после установки прошивки. Вот так, например, выглядит мой скрипт восстановления, который ничего не бэкапит, но подчищает прошивку от мусора сразу после ее установки:
#!/sbin/sh
# Загружаем подсобные функции
. /tmp/backuptool.functions
# Рингтон и звук уведомления, которые должны остаться в системе
RINGTONE=Machina
NOTIFICATION=Argon
case "$1" in
backup)
# Пусто :)
;;
restore)
# Рингтоны, уведомления и звук будильника
cd /system/media/audio/ringtones/
rm [!${RINGTONE}]*.ogg
cd /system/media/audio/notifications/
rm [!${NOTIFICATION}]*.ogg
rm /system/media/audio/alarms/*
# Языки синтеза и офлайн-распознавания речи
rm /system/tts/lang_pico/*
rm -rf /system/usr/srec/config/*
# Приложения
A=/system/app/
rm $A/Email.apk
rm $A/Exchange2.apk
rm $A/LockClock.apk
rm $A/PicoTts.apk
rm $A/Term.apk
rm $A/ThemeChooser.apk
rm $APPS/WAPPushManager.apk
rm $A/LiveWallpapers.apk
rm $A/LiveWallpapersPicker.apk
rm $A/VisualizationWallpapers.apk
A=/system/priv-app/
rm $A/CMUpdater.apk
rm $A/ThemeManager.apk
;;
pre-backup)
# ...
;;
post-backup)
# ...
;;
pre-restore)
# ...
;;
post-restore)
# ...
;;
esac
Скрипт удаляет рингтоны, уведомления, движок синтеза речи и несколько приложений. Все эти действия запускаются в ответ на передачу скрипту опции командной строки restore (это делает консоль восстановления после установки прошивки), однако также предусмотрены и варианты обработки таких опций, как backup, pre-backup, post-backup, pre-restore и post-restore. Здесь это просто заглушки, но если бы мы захотели сделать бэкап некоторых файлов и приложений перед установкой прошивки, мы могли бы добавить их в блок backup, как это сделано в скрипте /system/addon.d/70-gapps.sh:
. /tmp/backuptool.functions
list_files() {
cat <<EOF
app/GoogleContactsSyncAdapter.apk
etc/permissions/com.google.android.maps.xml
etc/permissions/com.google.android.media.effects.xml
...
EOF
}
case "$1" in
backup)
list_files | while read FILE DUMMY; do
backup_file $S/$FILE
done
;;
...
Этот кусок скрипта прекрасно иллюстрирует, как сделать бэкап файлов. Ключевые элементы здесь: функция listfiles, которая при запуске выводит листинг файлов, и функция backupfile, которая является частью консоли восстановления (определена в файле /tmp/backuptool.functions). Она делает бэкап файлов в цикле.
Содержимое /system/addon.d/ в CyanogenMod 11 на Motorola Defy
Содержимое /system/addon.d/ в CyanogenMod 11 на Motorola Defy
Скрипт бэкапа приложений Google
Скрипт бэкапа приложений Google
INFO
По словам разработчика mksh, изначально пользовательские версии Android-смартфонов вообще не должны были иметь в своем составе шелл, но после выпуска смартфона для разработчиков HTC (T-Mobile) G1 он фактически стал стандартной частью системы.
Версии Android 2.3 и ниже вместо mksh использовали минималистичный шелл ash, который входит в базовый комплект всех BSD-систем.
Чтобы получить одни и те же скрипты на всех устройствах, можно использовать приложение DropSync или FolderSync (автоматическая синхронизация через Dropbox).
Что еще?
С помощью скриптов в Android можно сделать намного больше, чем бэкапы и настройка параметров системы. Вот, например, скрипт, который просыпается каждые десять минут и, если уровень заряда батареи стал меньше 30%, отключает Wi-Fi и Bluetooth:
#!/system/bin/sh
while true; do
if [ `cat /sys/class/power_supply/battery/capacity` -lt 30 ]; then
svc wifi disable
service call bluetooth_manager 8
fi
sleep 600
done
Чтобы скрипт работал в фоне, достаточно вызвать его следующим образом:
$ script.sh &
А это скрипт, который позволяет быстро заполнять формы, требующие ввода имэйла и пароля (в приложениях и на веб-сайтах):
#!/system/bin/sh
adb shell input text "user@gmail.com"
adb shell input keyevent 23
adb shell input keyevent 20
adb shell input text "ПАРОЛЬ"
adb shell input keyevent 23
adb shell input keyevent 20
Запускать его можно разными способами. Либо перед запуском приложения, установив задержку:
$ sleep 15; sh /sdcard/script.sh
Либо повесить на какое-то событие Tasker, например на взмах смартфоном. Другой вариант — использовать буфер обмена. В Android, чтобы вставить нужный текст в буфер обмена, достаточно выполнить такую команду:
$ service call clipboard 2 i32 1 i32 1 s16 "Этот текст появится в буфере обмена"
Не ахти как удобно, зато работает. Как мы можем использовать такую функциональность? Например, сделать простенький скрипт clip.sh:
#!/system/bin/sh
service call clipboard 2 i32 1 i32 1 s16 "$1"
Соль в том, что скрипт можно вызывать через удаленный ADB либо вообще поместить в /system/etc/init.d/, заменив $1 на нужный текст. Так нужные нам данные всегда будут под рукой, а бесполезный на смартфоне механизм копирования/вставки получит хоть какое-то назначение. Консольные команды можно использовать и для более высокоуровневых операций, например позвонить по указанному номеру:
$ am start -a android.intent.action.CALL tel:123
Или просто открыть окно номеронабирателя с нужным номером:
$ am start -a android.intent.action.DIAL tel:123
Примерно таким же образом можно отправить SMS:
#!/system/bin/sh
am start -a android.intent.action.SENDTO -d sms:$1 --es sms_body "$2" --ez exit_on_sent true
sleep 1
input keyevent 22
sleep 1
input keyevent 66
Скрипт принимает два аргумента: номер телефона и содержимое SMS. После запуска он откроет окно SMS-приложения, вставит в него нужный текст, а затем нажмет кнопку Enter для отправки, после чего окно закроется.
Другие полезные при скриптинге команды:
Перезагрузка в режим recovery:
$ su -c reboot recovery
Мягкая перезагрузка (без перезапуска ядра):
$ setprop ctl.stop zygote
Открыть нужное приложение (в данном примере — «Настройки»):
$ am start -n com.android.settings/com.android.settings.Settings
Открыть веб-страницу:
$ am start -a android.intent.action.VIEW http://www.google.com
Сообщить приложениям о низком уровне заряда батареи (есть софт, который при этом снижает свою активность):
$ am broadcast -a android.intent.action.BATTERY_LOW
Изменить MAC-адрес:
$ ip link set eth0 address 00:11:22:33:44:55
Активировать вибратор:
$ echo 100 > /sys/devices/virtual/timed_output/vibrator/enable
Включить фонарик:
$ echo 1 > /sys/devices/platform/flashlight/leds/flashlight/brightness
Проиграть файл (может не сработать):
$ stagefright -a -o file.mp3
Отключить указанное приложение (можно организовать цикл для отключения bloatware по списку):
$ pm disable com.google.android.calendar
Получить список приложений, которые имеют уведомления в строке состояния:
$ dumpsys statusbar | grep StatusBarNotification | awk '{ print $2 }' | cut -d '=' -f2
Оптимизировать внутренние базы данных с настройками (можно добавить скрипт в автозагрузку, требуется BusyBox):
#!/system/bin/sh
for i in `find /data -iname "*.db"`; do
sqlite3 $i 'VACUUM;'
done
Переключить Wi-Fi-тизеринг на основной интерфейс (нужно для обмана операторов, которые ограничивают скорость соединения при раздаче интернета по Wi-Fi):
$ settings put global tether_dun_required 0
- enter
adb shell input keyevent 66
- down
adb shell input keyevent 20
cypherstack/stack_wallet: Stack Wallet, a multicoin, cryptocurrency wallet
Android Studio is the recommended IDE for development, not just for launching on Android devices and emulators but also for Linux desktop development. Install it and configure it as follows:
sudo apt install -y openjdk-11-jdk sudo snap install android-studio –classic
Use Tools > SDK Manager to install the SDK Tools > Android SDK (API 30), SDK Tools > NDK, SDK Tools > Android SDK command line tools, and SDK Tools > CMake
Then install the Flutter plugin and restart the IDE. In Android Studio’s options for the Flutter language, enable auto format on save to match the project’s code style. If you have problems with the Dart SDK, make sure to run `flutter` in a terminal to download it (use `source ~/.bashrc` to update your environment variables if you’re still using the same terminal from which you ran `setup.sh`)
Make a Pixel 4 (API 30) x86\_64 emulator with 2GB of storage space for emulation
To automate proprietary apps on an Android device, you can use a mobile automation testing tool that supports Android operating systems. Here are a few options:
Appium: Appium is an open-source mobile automation testing tool that supports both Android and iOS platforms. It uses the WebDriver protocol to automate mobile apps and provides a wide range of automation capabilities such as gesture support, element locating strategies, and multi-platform testing.
UI Automator: UI Automator is an Android testing framework that allows you to perform automated functional testing of user interfaces. It can be used to test the interaction between multiple apps on the device and supports running tests on multiple devices in parallel.
Espresso: Espresso is a testing framework for Android that allows you to write automated UI tests for your app. It is designed to be lightweight, fast, and reliable, and it provides a simple and intuitive API for creating tests.
Robotium: Robotium is an Android testing framework that allows you to write automated UI tests for your app. It provides a simple and intuitive API for creating tests, and it supports a wide range of Android versions and devices.
Selendroid: Selendroid is a testing framework that allows you to automate native and hybrid Android apps. It supports multiple Android versions and devices and provides a wide range of automation capabilities such as element locating strategies, gesture support, and multi-platform testing.
To see what activities are launched when an application is running on an Android device, you can use the Android Debug Bridge (ADB) tool that comes with the Android SDK. Here are the steps:
Connect your Android device to your computer using a USB cable and make sure USB debugging is enabled on the device. You can enable USB debugging by going to the Developer options in the device’s Settings app and toggling the “USB debugging” switch.
Open a terminal or command prompt on your computer and navigate to the directory where the ADB tool is located.
Type the following command to start ADB and connect to your device:
adb devices
This will list all the connected Android devices. Make sure your device is listed.
Type the following command to start monitoring the device’s activity:
adb shell “logcat ActivityManager:I *:S”
This will show all the activity manager logs with a priority level of “Info” and suppress all logs with other priority levels.
Launch the application you want to debug on your device.
Check the activity manager logs in the terminal or command prompt window. You should see the activities launched by the application listed in the logs.
Note: The logs may contain a lot of information, so it may be helpful to filter the logs by the application’s package name. You can do this by adding the package name as a filter to the logcat command. For example:
adb shell “logcat ActivityManager:I *:S | grep com.example.app”
This will only show the logs related to the application with the package name “com.example.app”. Replace “com.example.app” with the actual package name of the application you want to debug.
Yes, you can capture network traffic from an Android device to reverse engineer the APIs used by an application. One way to do this is to use a network traffic analysis tool, such as Wireshark or Fiddler, and set up a proxy server on your computer to capture the traffic between the device and the application’s server.
Here are the steps to capture network traffic from an Android device using Wireshark:
Connect your Android device to your computer using a USB cable and make sure USB debugging is enabled on the device.
Install and run Wireshark on your computer.
Set up a proxy server on your computer by going to the Wireshark menu, selecting “Edit” -> “Preferences”, and then selecting the “Proxies” tab. Under “HTTP Proxy”, check the “Enabled” box and set the “Proxy server” to “127.0.0.1” and the “Proxy port” to “8888”.
Set up the Android device to use the proxy server by going to the device’s Wi-Fi settings, long-pressing the network you’re connected to, selecting “Modify network”, and then selecting “Advanced options”. Under “Proxy”, select “Manual”, and set the “Proxy hostname” to “127.0.0.1” and the “Proxy port” to “8888”.
Launch the application you want to reverse engineer on your Android device.
In Wireshark, select the network interface that corresponds to the Wi-Fi network you’re connected to and start capturing packets.
Use the application on your device and perform the actions that you want to capture the network traffic for.
Stop the packet capture in Wireshark and filter the captured packets by the IP address of the application’s server. This will show you the network traffic between the application and its server.
Analyze the captured packets to reverse engineer the APIs used by the application.
Note: Some applications may use encrypted traffic, such as HTTPS, which can make it more difficult to analyze the network traffic. In this case, you may need to use additional tools or techniques to decrypt the traffic.