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通信协议分析以及实现(一):
adb通信协议分析以及实现(二):
adb通信协议分析以及实现(三):
adb通信协议分析以及实现(四):