Skip to content
Shunhong Zhang edited this page Apr 25, 2018 · 3 revisions

1.1 DeviceSerialNumber
1.2 DeviceState
1.3 DeviceBasicInfo
1.4 一切都需要指定设备
1.5 命令对象
1.6 调用静态方法
1.7 调用封装类,执行ADB命令
1.8 获取设备信息
1.9 更多的探索


  • 此文档根据SDKV7编写
  • 此文仅仅只是引导

Let us go!

1、使用AutumnBox.Basic

AutumnBox.Basic是对ADB工具箱进行的C#封装,实现方法请自行阅读源代码
想要进行基于ADB的高端操作,你需要使用AutumnBox.Baic中的封装类与函数 让我们开始学习使用AutumnBox.Basic吧

1.1 DeviceSerialNumber

AutumnBox.Basic.Device.DeviceSerialNumber是对设备序列号的面向对象封装 在ADB调试时,任何设备都有SerialNumber(SN),这个SN可以用来在执行ADB命令时指定具体设备
在AutumnBox.Basic中的用途也是这个

1.2 DeviceState

AutumnBox.Basic.Device.DeviceState是一个描述设备状态的枚举

  • DeviceState.Poweron代表设备开机状态
  • DeviceState.Recovery代表设备处于恢复模式
  • 更多枚举请自行在VS内按F12跳转到定义

1.3 DeviceBasicInfo

众所周知,adb devices命令将会输出已连接的设备

输出示例:

List of devices attached
0xfeaac recovery
192.168.0.5:5555 device

而AutumnBox.Basic中,会将每条已连接设备的信息解析为DeviceBasicInfo对象

属性 类型 用途
Serial DeviceSerialNumber 设备序列号(也可能是IP之类的)
State DeviceState 设备当前状态
  • 你无需关心如何获取DeviceBasicInfo结构体对象
public override void OnStartCommand(StartArgs args)
{
    //你可以在args对象中获取目标设备的信息
    DeviceBasicInfo deviceInfo = args.Device;
}

1.4 一切都要指定设备

须知: adb中文说明书-为adb命令指定目标设备
在AutumnBox.Basic设计之初就考虑到了多设备连接的需求,因此在做大部分操作时都需要指定具体的设备

//将指定设备重启到fastboot模式
Rebooter.Reboot(deviceSN,RebootOptions.Fastbot);
   
//获取设备Product信息
var buildGetter = new DeviceBuildPropGetter(deviceSN);
string product = buildGetter.GetProduct();
Console.WriteLine(product);//MI 6

1.5 命令对象

AutumnBox.Basic.Executer.Command是对命令的封装

用法示例:
adb -s 0fx0fecc reboot命令转化为Command对象

var cmd = Command.MakeForAdb(deviceSerialNumber,"reboot");

更多用法,请自行在VS内按F12前往代码定义查看注释

1.6 调用静态方法

//检测包名为com.miui.fm的应用是否已安装
//一切都要指定设备
PackageManager.IsInstall(deviceSN,"com.miui.fm");

1.7 调用封装类,执行ADB命令

现在,我们要执行一条命令:adb -s 某个设备的SN install xxx.apk

  1. 构建一个Command对象
var command = Command.MakeForAdb(deviceSN,"install xxx.apk");
  1. 构建一个命令执行器对象
var executer = new CommandExecuter();
  1. 执行命令并获取完整输出以及返回值
var output = executer.Execute(command);
  1. 打印返回值
Console.WriteLine(output.ToString());
/*
Install successful!
*/

1.8 获取设备信息

我封装了一些对象用于获取设备信息,但是可能不够,到时就看你自己实现了

示例: 获取安卓版本

/*在安卓中,安卓版本等信息存储在/system/build.prop中   
  而你可以使用DeviceBuildPropGetter对象来进行获取*/
var getter = new BuildPropGetter(deviceSN);
Version version = getter.GetAndroidVersion();
Log(version.ToString());//8.0.0

1.9 更多的探索

读到这里,你是否已经了解了AutumnBox.Basic的使用门道了呢?
记住:

  • 任何于设备相关的操作都需要指定设备
  • AutumnBox.Basic中有大量基于ADB实现的类和方法可供调用
  • 想要玩的更好,一定要去阅读AutumnBox.Basic的注释或源代码,相信我,不难!
Clone this wiki locally