当前位置:   article > 正文

adb无法连接夜神模拟器处理以及文件传输_adb文件传输 传不进去

adb文件传输 传不进去

环境说明:win7系统

前言

平常通过电脑连接真机设备,可以正常连接,没有问题,一直没有连接过模拟器,今天因为需要用到root权限,而模拟器默认开启root 权限的,所以尝试连接模拟器,但是出现了问题,如下:

提示:显示adb server的版本号和当前的客户端不匹配,且查看设备时是没有设备号的,那么下一步操作也就无法进行

一、adb无法连接夜神模拟器处理过程

1.adb无法连接夜神模拟器,基础配置

百度找到解决办法:即夜神模拟器也要配置环境变量 ,具体过程如下:

(1)关闭所有的adb进程(如何通过命令行关闭进程见1.2节)

(2)找到sdk的adb.exe文件并复制

  1. $where adb
  2. E:\SDK\platform-tools\adb.exe

(3)进入到夜神模拟器的bin目录,粘贴复制的adb.exe

提示:夜神模拟器bin目录下有两个adb文件:adb.exe和nox_adb.exe,复制过去的sdk\adb.exe是去替换nox_adb.exe的,所以当出现粘贴的adb.exe与原有的adb.exe产生冲突时,那么需要保留两个adb.exe,然后将复制过来的adb.exe更名为:nox_adb.exe,删除掉之前的nox_adb.exe,完成替换

(4)配置完成,重启模拟器

(5)再次adb devices连接,验证是否成功,我的成功了,就显示如下:

配置过程参考地址:https://blog.csdn.net/cz9025/article/details/78665223

2.关闭进程,重启服务

来说说如何关闭进程,首先需要知道:adb服务默认的占用端口是5037

1.2.1根据端口号查看当前的进程号

  1. $netstat -ano|grep '5037'
  2. TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       13232

#LISTENING:表示在监听

#13232:这是进程号

1.2.2查看进程对应的是不是adb程序

  1. $ tasklist |findstr "13232"
  2. adb.exe                      13232 Console                    1     17,932 K

#第一列显示为:adb.exe,即就是adb的进程

#tip1:windows 下查看进程的命令:tasklist;Linux下查看进程命令是ps

#tip2:tasklist查看所有进程,tasklist|findstr "pid_number"查找对应进程的信息

1.2.3杀掉进程

杀掉进程可以选择两种方式:

方式1:打开任务管理器(Ctr+Alt+Delete),找到进程号:13232,点击该进程,结束进程

方式2:通过命令行的方式:taskkill

taskkill的具体用法详见:taskkill /?

  1. $taskkill /
  2. TASKKILL [/S system [/U username [/P [password]]]]
  3. { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]
  4. 描述:
  5. 使用该工具按照进程 ID (PID) 或映像名称终止任务。
  6. 参数列表:
  7. /S system 指定要连接的远程系统。
  8. /U [domain\]user 指定应该在哪个用户上下文执行这个命令。
  9. /P [password] 为提供的用户上下文指定密码。如果忽略,提示
  10. 输入。
  11. /FI filter 应用筛选器以选择一组任务。
  12. 允许使用 "*"。例如,映像名称 eq acme*
  13. /PID processid 指定要终止的进程的 PID。
  14. 使用 TaskList 取得 PID。
  15. /IM imagename 指定要终止的进程的映像名称。通配符 '*'可用来
  16. 指定所有任务或映像名称。
  17. /T 终止指定的进程和由它启用的子进程。
  18. /F 指定强制终止进程。
  19. /? 显示帮助消息。
  20. 筛选器:
  21. 筛选器名 有效运算符 有效值
  22. ----------- --------------- -------------------------
  23. STATUS eq, ne RUNNING |
  24. NOT RESPONDING | UNKNOWN
  25. IMAGENAME eq, ne 映像名称
  26. PID eq, ne, gt, lt, ge, le PID 值
  27. SESSION eq, ne, gt, lt, ge, le 会话编号。
  28. CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为
  29. hh:mm:ss。
  30. hh - 时,
  31. mm - 分,ss -
  32. MEMUSAGE eq, ne, gt, lt, ge, le 内存使用量,单位为 KB
  33. USERNAME eq, ne 用户名,格式为 [domain\]user
  34. MODULES eq, ne DLL 名称
  35. SERVICES eq, ne 服务名称
  36. WINDOWTITLE eq, ne 窗口标题
  37. 说明
  38. ----
  39. 1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'
  40. 2) 远程进程总是要强行 (/F) 终止。
  41. 3) 当指定远程机器时,不支持 "WINDOWTITLE""STATUS" 筛选器。
  42. 例如:
  43. TASKKILL /IM notepad.exe
  44. TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
  45. TASKKILL /F /IM cmd.exe /T
  46. TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
  47. TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
  48. TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
  49. TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"

taskkill也可以通过两种种方法杀掉指定进程:

(1)通过映像名称杀掉进程

$taskkill /im im_name -f

#im_name(映像名称)就是通过tasklist命令返回数据的第一列:adb.exe,详细可看下图

(2)通过进程号杀掉进程

$taskkill /pid pid_number -f

#pid_number就是通过netstat查看5037端口对应的进程号,可以通过tasklist再确认一下是不是adb的进程,再决定是否执行taskkill

温馨提示:

通过实践发现,如果不加强制终止:-f的参数,进程可能杀不死:

A:未加-f参数

B:加了-f参数

二、传输文件

需求是需要从手机中和电脑之间传输文件,adb提供了两个方法:adb pull 和push

(1)adb pull :从手机复制文件至电脑

  1. #格式为:
  2. $adb pull 手机存储路径   电脑存储路径

那么在执行此命令之前,首先需要连接上手机,知道要复制的文件存储路径是什么,所以完整步骤可参考以下:

  • $adb shell:进入到手机系统

  • $cdls:等来切换目录,找到你需要传输文件的地址

  • $pwd:通过pwd查看当前所在目录的地址,复制下来

  • $exit:然后退出,执行adb pull

执行成功如下:

(2)adb push :从电脑复制至手机

  1. #格式为:
  2. $adb push 电脑存储路径 手机存储路径   

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/56327?site
推荐阅读
相关标签
  

闽ICP备14008679号