admin管理员组文章数量:1516870
问题
如果有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的冲突就没有了。
版权声明:本文标题:从新手到高手的进阶之路:解决ADB在CMD与AS之间的混乱问题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1771420514a3265331.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论