admin 管理员组

文章数量: 1184232

问题

如果有android sdk 和android模拟器,就有可能出现adb.exe冲突,各个应用都想启动他自己的adb.exe,引发一些奇怪的问题。

解决

1.

原理就是让所有的应用都使用同一个adb.exe。
(提取码1111)或自行编译

#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<io.h>voidmain(int argc,char* argv[]){char cmd[128*1024];//"D:\\android\\sdk\\platform-tools\\adb.exe";
	cmd[0]=0;char* sdkPath =getenv("ANDROID_SDK_ROOT");if(sdkPath ==NULL){
		sdkPath =getenv("ANDROID_HOME");if(sdkPath ==NULL){fprintf(stderr,"找不到Android sdk 目录,请设置环境变量 ANDROID_SDK_ROOT或ANDROID_HOME\n");return;}}strcpy(cmd, sdkPath);strcat_s(cmd,"\\platform-tools\\adb.exe");for(int i =1; i < argc; i++){if(argv[i]==NULL)continue;strcat_s(cmd," ");strcat_s(cmd, argv[i]);}
	STARTUPINFO si ={0};
	si.cb =sizeof(si);
	PROCESS_INFORMATION piProcessB;if(CreateProcess(NULL, cmd,NULL,NULL, TRUE,0,NULL,NULL,&si,&piProcessB)){WaitForSingleObject(piProcessB.hProcess,INFINITE);//printf("\n");}}
2.

得到假的adb.exe,然后把所有非android sdk目录下的adb.exe(通过搜索可以找到所有adb.exe)都备份并替换成假的adb.exe,在环境变量中增加ANDROID_SDK_ROOT或ANDROID_HOME。

完成

假的adb.exe会把所有参数转给真实的adb执行。adb的冲突就没有了。

本文标签: 不再困惑 一文教您 编程