adb 通信协议分析以及实现 (四) ADB shell 命令分析

来源:互联网 发布:一采通采购软件 编辑:程序博客网 时间:2024/06/06 12:58

adb 的shell 命令和普通的命令发送格式有点不一样,需要重新组织一些命令的格式

比如下列命令 -s "abcdefg" shell dumpsys package com.a.b, 需要组织成 shell:dumpsys package com.a.b。 发送给adb 服务进程。

       shell 命令在发送给服务进程之前,需要转换一下端口。

int switch_socket_transport(CSyncSocket& socket,const char* pszSerial)
{
char service[512] = {0};
sprintf(service, "host:transport:%s", pszSerial);
int iLen = strlen(service);
char tmp[5];
sprintf(tmp, "%04x", iLen);
if (socket.SendData((const byte*)tmp,4) != 4)
{
return -1;
}
if (socket.SendData((const byte*)service,iLen) != iLen)
{
return -1;
}
std::string result;
if (RecvMessage(socket,result) != 0)
{
return -1;
}
return 0;
}

上面代码是参照adb 源码自己实现的。



如果实现有问题,可以QQ联系: 2506314894


0 0
原创粉丝点击