All Projects → Malinskiy → Adam

Malinskiy / Adam

Licence: apache-2.0
Coroutine-friendly Android Debug Bridge client written in Kotlin

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Adam

extensiveautomation-server
Extensive Automation server
Stars: ✭ 19 (-85.27%)
Mutual labels:  adb, testing-tools
toster
DSL framework for testing Android apps
Stars: ✭ 31 (-75.97%)
Mutual labels:  adb, testing-tools
Stryker4s
Mutation testing for Scala. Work in progress...
Stars: ✭ 118 (-8.53%)
Mutual labels:  testing-tools
Phonesploit
A tool for remote ADB exploitation in Python3 for all Machines.
Stars: ✭ 122 (-5.43%)
Mutual labels:  adb
Smproxy
Swoole MySQL Proxy 一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。 A MySQL database connection pool based on MySQL protocol and Swoole.
Stars: ✭ 1,665 (+1190.7%)
Mutual labels:  coroutines
Aflplusplus
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
Stars: ✭ 2,319 (+1697.67%)
Mutual labels:  instrumentation
Searchrestaurant
Apps are built using Google Maps SDK, Geocoding and Foursquare APIs
Stars: ✭ 124 (-3.88%)
Mutual labels:  coroutines
Synca
Synchronous asynchrony using coroutines
Stars: ✭ 118 (-8.53%)
Mutual labels:  coroutines
Go Http Metrics
Go modular http middleware to measure HTTP requests independent of metrics backend (with Prometheus and OpenCensus as backend implementations) and http framework/library
Stars: ✭ 128 (-0.78%)
Mutual labels:  instrumentation
Movieapp Clean Architecture
Learning Project (Movie App) For Applying Android Architecture Components And Clean Architecture Using MVVM With Kotlin
Stars: ✭ 123 (-4.65%)
Mutual labels:  coroutines
Scott
Never debug a test again: Detailed failure reports and hassle free assertions for Java tests - Power Asserts for Java
Stars: ✭ 125 (-3.1%)
Mutual labels:  testing-tools
Dynamometer
A tool for scale and performance testing of HDFS with a specific focus on the NameNode.
Stars: ✭ 122 (-5.43%)
Mutual labels:  testing-tools
Ts Mocha
Mocha thin wrapper that allows running TypeScript tests with TypeScript runtime (ts-node) to get rid of compilation complexity
Stars: ✭ 119 (-7.75%)
Mutual labels:  testing-tools
Tina
Tina is a teeny tiny, header only, coroutine and job library.
Stars: ✭ 125 (-3.1%)
Mutual labels:  coroutines
Nsubstitute
A friendly substitute for .NET mocking libraries.
Stars: ✭ 1,646 (+1175.97%)
Mutual labels:  testing-tools
Modular App Core
Core implementations for a modular Android App
Stars: ✭ 127 (-1.55%)
Mutual labels:  coroutines
Androidcoroutinesplayground
Android Coroutines Playground
Stars: ✭ 119 (-7.75%)
Mutual labels:  coroutines
Paleontologas
Source code of the most popular Paleontological mobile app in the world! Programming sandbox.
Stars: ✭ 122 (-5.43%)
Mutual labels:  coroutines
Ava Playback
📼 🚀 Record and playback http requests from your ava tests
Stars: ✭ 124 (-3.88%)
Mutual labels:  testing-tools
Orbit
C/C++ Performance Profiler
Stars: ✭ 2,291 (+1675.97%)
Mutual labels:  instrumentation

Maven Central Codecov Documentation

adam

Android Debug Bridge helper written in Kotlin

Motivation

The only way to get access to the adb programmatically from java world currently is to use the ddmlib java project. Unfortunately it has several limitations, namely:

  1. Sub-optimal resources usage
  2. Code is not tested properly
  3. Limitations of adb server are propagated to the user of ddmlib

To optimize the resources usage adam uses coroutines instead of blocking threads. This reduced the load dramatically for scenarios where dozens of devices are connected and are communicated with. Full E2E testing with at least Android emulator is also used to guarantee stability.

Supported functionality

  • Shell
    • Basic shell: support (with stdout and patched exit code)
    • shell_v2 support (with separated stdout, stderr and exit code as well as stdin)
    • Exec shell with stdin on legacy devices without shell_v2 support
  • Package install, uninstall, list
    • Streaming installation
    • Atomic multi-package installation
    • Apk split installation
    • Supports APEX
    • Sideload (with pre-KitKat support)
    • Install sessions support
  • Device management
    • List connected devices
    • Monitor connected devices continuously
    • Fetch device features
    • Connect/disconnect/reconnect device
    • adb over WiFi pairing setup
    • Reboot device
  • Files
    • List file using ls
    • Push/pull files and folders(recursive)
    • Stat, list, pull and push using sync:
    • Support for stat_v2, sendrecv_v2, ls_v2
  • Emulator commands (gsm call, rotate, etc)
  • Props
    • Get single prop
    • Get all props
  • Instrumented tests
    • Raw output parsing
    • Proto output parsing
  • Screen capture
    • Dynamic adapters with raw buffer and fast BufferedImage conversion
    • Supports legacy devices as well as new sRGB and DCI-P3 ones
  • Logcat
    • Fetch logcat log
    • Monitor logcat continuously
  • Port-forwarding (including reverse port-forwarding)
    • List ports
    • Add rule
    • Remove rule
    • Remove all rules
  • Android Binder Bridge: "abb" and "abb_exec"
  • Restart adbd on device: "root:", "unroot:", as well as switching transport "usb:", "tcpip:"
  • Miscellaneous
    • Fetch adb server version
    • Kill adb server
    • Remount partition
    • Enable/disable dm-verity checking on userdebug builds
    • Fetch host features
    • Check if mDNS discovery is available
    • List all mDNS discovered services

Not to mention any device shell commands.

API compatibility

Until v1.0.0 release, there is no guarantee that the interfaces and requests will not change.

License

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].