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

1,138 阅读1分钟

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通信协议分析以及实现(一):www.jianshu.com/p/713c7823d…

adb通信协议分析以及实现(二):www.jianshu.com/p/4bdd315a9…

adb通信协议分析以及实现(三):www.jianshu.com/p/23581d48f…

adb通信协议分析以及实现(四):www.jianshu.com/p/639fd2155…