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

版权声明:大部分发布内容均为本人测试过程中保留笔记,如需转载请备注 https://blog.csdn.net/Jolting/article/details/86479301

环境说明:win7系统

前言

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

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

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

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

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

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

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

$where adb

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根据端口号查看当前的进程号

$netstat -ano|grep '5037'

TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       13232

#LISTENING:表示在监听

#13232:这是进程号

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

$ tasklist |findstr "13232"

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 /?

$taskkill /?  

TASKKILL [/S system [/U username [/P [password]]]]
         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

描述:
    使用该工具按照进程 ID (PID) 或映像名称终止任务。

参数列表:
    /S    system           指定要连接的远程系统。

    /U    [domain\]user    指定应该在哪个用户上下文执行这个命令。

    /P    [password]       为提供的用户上下文指定密码。如果忽略,提示
                           输入。

    /FI   filter           应用筛选器以选择一组任务。
                           允许使用 "*"。例如,映像名称 eq acme*

    /PID  processid        指定要终止的进程的 PID。
                           使用 TaskList 取得 PID。

    /IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来
                           指定所有任务或映像名称。

    /T                     终止指定的进程和由它启用的子进程。

    /F                     指定强制终止进程。

    /?                     显示帮助消息。

筛选器:
    筛选器名      有效运算符                有效值
    -----------   ---------------           -------------------------
    STATUS        eq, ne                    RUNNING |
                                            NOT RESPONDING | UNKNOWN
    IMAGENAME     eq, ne                    映像名称
    PID           eq, ne, gt, lt, ge, le    PID 值
    SESSION       eq, ne, gt, lt, ge, le    会话编号。
    CPUTIME       eq, ne, gt, lt, ge, le    CPU 时间,格式为
                                            hh:mm:ss。
                                            hh - 时,
                                            mm - 分,ss - 秒
    MEMUSAGE      eq, ne, gt, lt, ge, le    内存使用量,单位为 KB
    USERNAME      eq, ne                    用户名,格式为 [domain\]user
    MODULES       eq, ne                    DLL 名称
    SERVICES      eq, ne                    服务名称
    WINDOWTITLE   eq, ne                    窗口标题

    说明
    ----
    1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。
    2) 远程进程总是要强行 (/F) 终止。
    3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。

例如:
    TASKKILL /IM notepad.exe
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM cmd.exe /T
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
    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 :从手机复制文件至电脑

#格式为:

$adb pull 手机存储路径   电脑存储路径

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

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

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

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

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

执行成功如下:

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

#格式为:

$adb push 电脑存储路径 手机存储路径   

猜你喜欢

转载自blog.csdn.net/Jolting/article/details/86479301