GithubHelp home page GithubHelp logo

inez / adam Goto Github PK

View Code? Open in Web Editor NEW

This project forked from malinskiy/adam

0.0 0.0 0.0 9.34 MB

Adam (or adm) is a coroutine-friendly Android Debug Bridge client written in Kotlin

Home Page: https://malinskiy.github.io/adam/

License: Apache License 2.0

Kotlin 99.60% Shell 0.21% Java 0.19%

adam's Introduction

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.

adam's People

Contributors

malinskiy avatar dependabot[bot] avatar tagantroy avatar vacxe avatar yschimke avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.