11 个版本

0.2.4 2024 年 4 月 17 日
0.2.3 2024 年 4 月 15 日
0.1.6 2024 年 4 月 11 日

1000命令行工具 中排名

Download history 12/week @ 2024-04-23 1/week @ 2024-05-14 7/week @ 2024-05-21 1/week @ 2024-06-04 2/week @ 2024-06-11 82/week @ 2024-07-02 75/week @ 2024-07-23 45/week @ 2024-07-30

每月下载量 120

MIT 许可证

13KB
210

使用 Rust 编写的简单 ADB 客户端

===========================

ADBCmd 可以使用回调函数闭包同步或异步地执行命令。

目前,该库主要用于在 Rust 中调用 "cmd" 命令,提供各种实用 API。

  • new:创建一个 ADBCmd 实例,返回一个 ADBCmd 实例。
  • create_adb_cmd:根据 tokio::process::Command 创建一个异步 Command 实例,返回 Command 的实例。
  • run_async:通过传递回调参数执行异步命令,以实时获取 Command 的输出。
  • run:执行同步命令(基于 std::process::Command),以获取当前同步命令的输出,返回一个 Result<String, String>
  • get_file_path:获取给定路径的文件路径;如果不存在,则返回错误消息,返回一个 Result<String, String>

使用方法

[dependencies]
tokio = { version = "1.0", features = ["full"] }
adb-rust="0.2.1"
  • 调用
use adb_rust::cmd::{ADBCmd, ADBCmdResult};

pub fn push_xml_file() {
    let file: &str = "./resources/file.xml";
    let paths: String = ADBCmd::get_file_path(file).unwrap();
    let args: Vec<String> = vec!["push".to_string(), paths, "/sdcard/".to_string()];
    let res: Result<String, String> = ADBCmd::new("adb", true).run(&args);
    ...
    ...        
}

API

pub mod tests {
    use crate::cmd::{ADBCmd, ADBCmdTrait};
    use super::*;
    use tokio;

    #[test]
    fn test_adb_cmd() {
        let path = ADBCmd::get_file_path("./resources/file.xml").unwrap();
        let cleaned_path = path.replace("\\\\?\\", "");
        let args = vec!["push".to_string(), cleaned_path, "/data/local/tmp/".to_string()];
        let binding = ADBCmd::new("adb", false);
        let result = binding.run(&args);
        match result {
            Ok(stdout) => println!("{}", stdout),
            Err(stderr) => println!("{}", stderr),
        }
    }

    #[tokio::test]
    async fn test_run_async() {
        let adb_cmd = ADBCmd::new("adb", false);
        let args = vec!["devices".to_string()];
        adb_cmd.run_async(args, |line| {
            println!("{}", line);
            line
        }).await;
    }
}

依赖关系

~2.4–8.5MB
~57K SLoC