㈠ connect+reset解决办法
咨询记录 · 回答于2021-12-29
㈡ 运行adb shell出现error错误怎么办
1、adb kill-server来杀死adb进程,然后再使用adb start-server命令来开启;
2、检测5037端口(adb.exe默认端口)是否被占用,关闭除adb.exe以外占用了5037端口的进程,重新开启adb服务:
2.1、adb nodaemon server:检测5037端口是否被占用;
2.2、netstat -ano | findstr “5037”:查看是什么进程占用了5037端口;
2.3、tasklist | findstr “21152”:查看这个进程是由哪个程序创建的(21152就是占用5037端口的一个进程的PID);
2.4、taskkill /f /pid 21152:将进程关掉;
2.5、adb devices:显示当前连接设备。
在此提供另外一种解决方案,通过手动查看硬件ID,并安装google原生android debug驱动;
1、右键我的电脑->管理->设备管理->Android Phone.在这里我们可以看到对应android设备的驱动。
2、选中该驱动右键属性,在详细信息选项下,在属性(p)选项中选择硬件Id,记录下面的值(v)中的信息,例如某设备的这一值为:
USBVID_2A45&PID_0C02&REV_????&MI_01
USBVID_2A45&PID_0C02&MI_01
主要关注2A45和0C02这两个值。
3、在电脑中找到android开发下载的sdk目录(假设你已经通过sdk manager下载了),进入extrasgoogleusb_driver文件夹下,找到android_winusb.inf并打开,这就是google针对android的一个配置文件。在文件中找到[Google.NTx86](针对32位平台,64位同理添加)这一行,在下面可以看到很多android设备的驱动信息,例如:
;Google Nexus One%SingleAdbInterface% = USB_Install, USBVID_18D1&PID_0D02%CompositeAdbInterface% = USB_Install, USBVID_18D1&PID_0D02&MI_01123
这里我们只需要仿照这种文件的格式,复制这些驱动信息,并用2中获取的2A45和0C02来修改,如下:
;MEIZU metal%SingleAdbInterface% = USB_Install, USBVID_2A45&PID_0C02%CompositeAdbInterface% = USB_Install, USBVID_2A45&PID_0C02&MI_01123
保存并关闭。
4、卸载掉原来驱动程序,重启电脑。确保手机已经进入开发者模式并允许USB调试,连接方式选择传输文件。然后再次右键电脑->管理->设备管理->其他设备。可以看到ADB Interface选项上有一个问号,表示该驱动没有正确安装。选中ADB Interface并右键选择更新驱动程序软件->浏览计算机以查找驱动程序软件,在浏览中选进我们之前添加了硬件设备驱动信息文件android_winusb.inf的文件夹(D:android-sdksextrasgoogleusb_driver,这里只需要选择文件夹,不需要选择文件),下一步后选择始终安装。
5、安装成功后,在设备管理中会出现一个Android Phone的选项。
㈢ 怎么关掉android adb
手工关闭adb服务,主要有两种方式:
1.第一种是通过linux命令行窗口的形式:
㈣ android 基本文件操作命令
ADB (Android Debug Bridge)
说明:下面一些命令需要有root权限才能执行成功
快速启动dos窗口执行adb:
1. adb.exe所在路径添加到系统环境变量中
2. 配置快捷键启动dos
进入C:\WINDOWS\system32目录下,找到cmd.exe.
右击菜单 "发送到" -> 桌面快捷方式。
在桌面上右击"快捷方式 到 cmd.exe" -> "属性" -> "快捷方式"页
-> 光标高亮"快捷键" -> 按下自定义快捷键 (如:Ctrl + Alt + Z)
任何情况下,按下Ctrl + Alt + Z启动dos窗口就可以执行adb命令了
-----------查看设备连接状态 系列-----------
adb get-serialno 获取设备的ID和序列号serialNumber
adb devices 查询当前计算机上连接那些设备(包括模拟器和手机),输出格式: [serialNumber] [state]
adb get-state 查看模拟器/设施的当前状态.
说明:
序列号[serialNumber]——由adb创建的一个字符串,这个字符串通过自己的控制端口<type>-<consolePort>
唯一地识别一个模拟器/设备实例。一个序列号的例子: emulator-5554
-----------发送命令到设备 系列-----------
adb [-d|-e|-s <serialNumber>] <command>
-d 发送命令给usb连接的设备
-e 发送命令到模拟器设备
-s <serialNumber> 发送命令到指定设备
如启动手机设备shell: adb -d shell
adb forward <local> <remote>发布端口,可以设置任意的端口号,
做为主机向模拟器或设备的请求端口。如:adb forward tcp:5555 tcp:8000
adb reboot 重启手机
adb remount 将system分区重新挂载为可读写分区
adb kill-server 终止adb服务进程
adb start-server 重启adb服务进程
adb root 已root权限重启adb服务
adb wait-for-device 在模拟器/设备连接之前把命令转载在adb的命令器中
adb jdwp 查看指定的设施的可用的JDWP信息.
可以用 forward jdwp:<pid> 端口映射信息来连接指定的JDWP进程.例如:
adb forward tcp:8000 jdwp:472
jdb -attach localhost:8000
adb shell am 命令可以启动应用程序
adb shell input text <string> 向设备输入文本(光标所在的文本框)
adb shell input keyevent <event_code> 向设备发送按键事件
如:
在编辑短信时,往文本框输入文本:adb shell input text "hello"
向手机发送键值回Home:adb shell input keyevent 3
event_code 参考view/KeyEvent.java中的 KEYCODE_*
public static final int KEYCODE_SOFT_LEFT = 1;
public static final int KEYCODE_SOFT_RIGHT = 2;
public static final int KEYCODE_HOME = 3;
public static final int KEYCODE_BACK = 4;
public static final int KEYCODE_CALL = 5;
public static final int KEYCODE_ENDCALL = 6;
-----------安装卸载 系列-----------
adb install [-l] [-r] <file> - push this package file to the device and install it
('-l' means forward-lock the app)
('-r' means reinstall the app, keeping its data)
adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories)
如:
adb install d:\hello.apk
adb unstall com.huawei.hello
说明:如果带-r选项重新安装apk时,安装在 /data/local/tmp/目录下,手机重启后还是使用原来的apk.
-----------文件操作 系列-----------
adb push <local> <remote> - file/dir to device
adb pull <remote> <local> - file/dir from device
-----------基本linux shell命令 系列-----------
adb shell [command]
ls 列出目录下的文件和文件夹
cd 切换目录
rm 删除目录和文件
cat 查看文件内容
ps 可以看那个进程再跑
ps -x [PID] 查看单个进程的状态
top 可以看那个进程的占用率最高
su 切换到root用户
kill [pid] 杀死一个进程
chmod 777 <file> 修改该文件为可执行权限
详细使用情况可以登录一台Linux服务器在shell下查看帮助手册, man <command>
-----------查看系统状态和信息 系列-----------
adb shell procrank 查询各进程内存使用情况
adb shell service list 查看services信息
adb shell cat /proc/meminfo 查看当前的内存情况
adb shell cat /proc/cpuinfo 查看CPU信息(硬件)
adb shell cat /proc/iomem 查看IO内存分区
adb shell getprop 列出系统所有属性
adb shell getprop | findstr "gsm" 列出包含gsm的属性
adb shell setprop <key> <value> 修改系统属性
adb shell sqlite3 可以执行sql语句查看数据库信息, 具体使用情况待调查
-----------Log 系列-----------
adb logcat [ <filter-spec> ] - View device log
1~~~~~~~~~~~查看可用日志缓冲区:
adb logcat -b radio — 查看缓冲区的相关的信息.
adb logcat -b events — 查看和事件相关的的缓冲区.
adb logcat -b main — 查看主要的日志缓冲区
2~~~~~~~~~~~过滤日志输出:
过滤器语句按照下面的格式描tag:priority ... , tag 表示是标签, priority 是表示标签的报告的最低等级
adb logcat *:W 显示优先级为warning或更高的日志信息
adb logcat ActivityManager:I MyApp:D *:S
日志的标签是系统部件原始信息的一个简要的标志。(比如:“View”就是查看系统的标签).
优先级有下列集中,是按照从低到高顺利排列的:
V — Verbose (lowest priority)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (highest priority, on which nothing is ever printed)
如果你电脑上运行logcat ,相比在远程adbshell端,你还可以为环境变量ANDROID_LOG_TAGS :输入一个参数来设置默认的过滤
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
需要注意的是ANDROID_LOG_TAGS 过滤器如果通过远程shell运行logcat 或用adb shell logcat 来运行模拟器/设备不能输出日志.
3~~~~~~~~~~~控制日志输出格式:
日志信息包括了许多元数据域包括标签和优先级。可以修改日志的输出格式,所以可以显示出特定的元数据域。可以通过 -v 选项得到格式化输出日志的相关信息.
brief — Display priority/tag and PID of originating process (the default format).
process — Display PID only.
tag — Display the priority/tag only.
thread — Display process:thread and priority/tag only.
raw — Display the raw log message, with no other metadata fields.
time — Display the date, invocation time, priority/tag, and PID of the originating process.
long — Display all metadata fields and separate messages with a blank lines.
当启动了logcat ,你可以通过-v 选项来指定输出格式:
[adb] logcat [-v <format>]
下面是用 thread 来产生的日志格式:
adb logcat -v thread
需要注意的是你只能-v 选项来规定输出格式 option.
4~~~~~~~~~~~Logcat命令列表
-b <buffer> 加载一个可使用的日志缓冲区供查看,比如event 和radio . 默认值是main 。具体查看Viewing Alternative Log Buffers.
-c 清楚屏幕上的日志.
-d 输出日志到屏幕上.
-f <filename> 指定输出日志信息的<filename> ,默认是stdout .
-g 输出指定的日志缓冲区,输出后退出.
-n <count> 设置日志的最大数目<count> .,默认值是4,需要和 -r 选项一起使用。
-r <kbytes> 每<kbytes> 时输出日志,默认值为16,需要和-f 选项一起使用.
-s 设置默认的过滤级别为silent.
-v <format> 设置日志输入格式,默认的是brief 格式,要知道更多的支持的格式,参看Controlling Log Output Format
adb bugreport - return all information from the device
that should be included in a bug report.
adb shell dmesg 查询内核缓冲区信息
adb shell mpstate 各类信息,比如进程信息,内存信息,进程是否异常,kernnel的log等
adb shell mpcrash
adb shell mpsys 查询所有service的状态
-----------其他 -----------
模拟器使用镜像sdcard
用SDK里的mksdcard工具来创建FAT32磁盘镜像并在模拟器启动时加载它。这样创建镜像:? mksdcard <size> <file>,
比如我要创建一个64M的SD卡模拟文件,文件路径是在D:\workspace\sdcard.img
mksdcard 64000000 D:\workspace\sdcard.img
Emulator –sdcard D:\workspace\sdcard.img
或者在eclipse的run菜单的open run dialog对话框中配置启动参数。
#top
Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
-m num Maximum number of processes to display.
-n num Updates to show before exiting.
-d num Seconds to wait between updates.
-s col Column to sort by (cpu,vss,rss,thr).
-t Show threads instead of processes.
-h Display this help screen.
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy
netstat -ano 查看网络连状态
显示协议统计信息和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-a 显示所有连接和监听端口。
-b 显示包含于创建每个连接或监听端口的
可执行组件。在某些情况下已知可执行组件
拥有多个独立组件,并且在这些情况下
包含于创建连接或监听端口的组件序列
被显示。这种情况下,可执行组件名
在底部的 [] 中,顶部是其调用的组件,
等等,直到 TCP/IP 部分。注意此选项
可能需要很长时间,如果没有足够权限
可能失败。
-e 显示以太网统计信息。此选项可以与 -s
选项组合使用。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接相关的所属进程 ID。
-p proto 显示 proto 指定的协议的连接;proto 可以是
下列协议之一: TCP、UDP、TCPv6 或 UDPv6。
如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 显示路由表。
-s 显示按协议统计信息。默认地,显示 IP、
IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
-p 选项用于指定默认情况的子集。
-v 与 -b 选项一起使用时将显示包含于
为所有可执行组件创建连接或监听端口的
组件。
interval 重新显示选定统计信息,每次显示之间
暂停时间间隔(以秒计)。按 CTRL+C 停止重新
显示统计信息。如果省略,netstat 显示当前
配置信息(只显示一次)
pm
usage: pm [list|path|install|uninstall]
pm list packages [-f]
pm list permission-groups
pm list permissions [-g] [-f] [-d] [-u] [GROUP]
pm list instrumentation [-f] [TARGET-PACKAGE]
pm list features
pm path PACKAGE
pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] PATH
pm uninstall [-k] PACKAGE
pm enable PACKAGE_OR_COMPONENT
pm disable PACKAGE_OR_COMPONENT
The list packages command prints all packages. Options:
-f: see their associated file.
The list permission-groups command prints all known
permission groups.
The list permissions command prints all known
permissions, optionally only those in GROUP. Options:
-g: organize by group.
-f: print all information.
-s: short summary.
-d: only list dangerous permissions.
-u: list only the permissions users will see.
The list instrumentation command prints all instrumentations,
or only those that target a specified package. Options:
-f: see their associated file.
The list features command prints all features of the system.
The path command prints the path to the .apk of a package.
The install command installs a package to the system. Options:
-l: install the package with FORWARD_LOCK.
-r: reinstall an exisiting app, keeping its data.
-t: allow test .apks to be installed.
-i: specify the installer package name.
The uninstall command removes a package from the system. Options:
-k: keep the data and cache directories around.
after the package removal.
The enable and disable commands change the enabled state of
a given package or component (written as "package/class").
查看stdout 和stderr
在默认状态下,Android系统有stdout 和 stderr (System.out和System.err )输出到/dev/null ,
在运行Dalvik VM的进程中,有一个系统可以备份日志文件。在这种情况下,系统会用stdout 和stderr 和优先级 I.来记录日志信息
通过这种方法指定输出的路径,停止运行的模拟器/设备,然后通过用setprop 命令远程输入日志
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start系统直到你关闭模拟器/设备前设置会一直保留,可以通过添加/data/local.prop 可以使用模拟器/设备上的默认设置
UI/软件 试验程序 Monkey
当Monkey程序在模拟器或设备运行的时候,如果用户出发了比如点击,触摸,手势或一些系统级别的事件的时候,
它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试你开发的软件.
最简单的方法就是用用下面的命令来使用Monkey,这个命令将会启动你的软件并且触发500个事件.
$ adb shell monkey -v -p your.package.name 500
更多的关于命令Monkey的命令的信息,可以查看UI/Application Exerciser Monkey documentation page.
㈤ 如何杀死一个知道pid的进程
这个是通过包名,杀死进程,没有包名的就没办法了ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);manager.killBackgroundProcesses(packageName);
㈥ android过程中,adb和avd的关系是什么当杀死adb进程时,avd是否还可以工作
adb是安卓设备连接电脑的 驱动程序 而 avd是 安卓虚拟机的意思 杀死 adb进程 avd依然可以工作 不过此时 你的电脑无法与avd交互信息 而已
㈦ android怎么杀死进程adb.exe
ADB的全称为Android Debug Bridge,就是起到调试桥的作用。
用于连接到模拟器或者android手机的
有点类似windows的远程
通过资源管理器,找到进程kill掉就可以
㈧ 跪求,如何杀ADB
I,WIPE data内存里的东西是会全部清空的……
II,本次OTA似乎并不是所有人都能保留ROOT的,至少我试了之后没有保留下来
III,本论坛沙漏的一键ROOT和一键刷机都是可以用的。还有Nexus 4 ToolKit1.30(http://forum.xda-developers.com/showthread.php?t=1995688 )也是可以用的,前提是都要更新下ADB文件,并改成相应的文件名。最新测试Nexus Root toolkit http://www.wugfresh.com/nrt/ 也是可以用的(只需要更新DATA文件夹里的四个ADB相关文件即可)。
IV,占用ADB的不光是豌豆夹,91之类的东西,杀毒软件检测手机也有可能会占用ADB。如果遇到我下面那种提示的,接上手机后到任务管理器里面把所有包含ADB的进程找出来,看都是什么,只要不是当前你要运行的,都干掉……
1。昨天上午收到了OTA,先是用VOODOO备份了ROOT,结果顺利升级完成,升级过程中提示107个更新。看似一切正常,也恢复了全屏。突然在论坛看到有人说安全进不去,我点击设置→安全,顿时感觉不妙,我也进不去了。折腾了半天也没解决,最后被卡在X那了,只好WIPE了一下,结果进了系统,但是悲剧了啊,我手机里所有的东西全部没有了,安全依旧进不去……
2。想着反正东西都没有了,那也就不在乎了,那就彻底折腾下吧。于是先把OTA的升级包下载下来,用ADB命令再次平刷一次,结果进系统后,安全能进了,似乎一切都正常了。试了试,还成。不过既然都这样了,那就再折腾一下,于是下了4.2.1的工厂镜像,一键刷机 。再ROOT。一切正常,刷回了4.2.1。然后再次清空google服务框架和合作信息,再停用位置服务,再次收到4.2.2的OTA。升级顺利。不过升级的时候提示只有48个更新,看来官方4。2.1的镜像比我OTA升级到4.2.1的内容有了更新。升级完发现ROOT没有了,于是想用以前的工具再ROOT下,这时候问题来了,ADB出问题了,查了一下,原来是root工具里面的ADB需要更新。更新完ADB后,我这电脑上连接有问题经常是显示:
adb server is out of date. killing...
ADB server didn't ACK
* failed to start daemon *
就这个问题把人快弄崩溃了,反反复复装驱动,折腾了N久,还是不行,换了N个版本也不行,查了很多类似的例子,都是说因为装了豌豆夹,91之类的造成ADB冲突,但是我根本就没有装过这些东西,因此根本就没往这上面想。于是就在ROOT过程中采用手动重启,用一键ROOT,还有Nexus 4 ToolKit1.30(http://forum.xda-developers.com/showthread.php?t=1995688 )都倒也勉强ROOT成功了……可是还是不爽。想着反正4.2.2能ROOT,那我再刷官方4.2.2得了,反正也是折腾。
3。刷机过程很顺利,也没什么错误。刷完了也就是要再ROOT。问题依旧还是上面那样的显示。这下子实在不行啊。难道是我驱动装的不对?继续折腾驱动。两个toolkit都拿出来试。Nexus Root Toolkit1.6.1和1.6.2彻底没戏。一键ROOT,还有Nexus 4 ToolKit1.30(http://forum.xda-developers.com/showthread.php?t=1995688 )全都是上面那样的提示。一晚上也没睡好,白天起来继续折腾。还是手动重启手机算是ROOT成功了。可是这算哪门子事啊。到底问题出在哪了呢……继续折腾,上网搜索。再看看我的电脑任务管理器,没接上手机的时候,里面也没有和ABD有关的东西,除非我运行哪个工具了。接上手机之后出来了一个db_adb.exe,我试图结束它,可是不让结束,那就不结束,继续折腾,不行……也不知道突然什么时候脑子里反应过来,我得查查这个db_adb.exe是什么东西,结果一查竟然是金山毒霸……我靠,疯了,直接把毒霸停用,驱动问题好了,一键ROOT,还有Nexus 4 ToolKit1.30一点问题都没有了,均可以顺利完成ROOT……
总结,因为从来不用豌豆夹之类的东西,因此一开始根本就没往这方面想,而网上全是说这方面的问题,以及驱动不匹配,或者安装错误的问题,所以我只是冲着驱动错误和不匹配这方面想,可以说经验主义害死人。此外,通过这次刷机,手机上东西全丢了,只有以前电脑上备份过,手机上同步过的那些东西,以及从市场下载的软件 还在,再次激起了我要把内存卡分区的念头,象电脑装LINUX那样,分开挂载,建一个分区专门挂\home这样重装LINUX,只用再把这个分区挂到相应的挂载点上就可以了。可是现实再一次是这么的让人不爽……没有大容量存储模式,电脑上根本无法进行相应的分区操作,分区根本无从谈起。不知道以后会不会有办法进行分区。不能分区,也就是说内存卡上的东西每一次升级的时候都有可能面临危险,怎么办?只能云端了,每次往电脑上倒也烦得不行,东西多了速度太慢,受不了,于是软件能从市场下的就从市场去下载。再装上云端硬盘什么的,以后有重要的东西就扔云端去,省得麻烦……
云是趋势,这真是不假,云的黏着度也够高了,用国行从来不用google服务的人可能体会不到这点,可是真用上google服务之后就会发现,很多东西你扔给他,他就给你处理好了,确实方便,这一下子就让人产生了依赖……这才是google最厉害的地方。你用他的时候也没觉得多特别,可是一旦你没得用了,你就会觉得浑身不自在……
乱七八糟,胡乱记下点个人体会,见笑,见笑……
㈨ Windows socket error: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次.(10048)
Windows socket error: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次.(10048)是设置错误造成的,解决方法为:
1、在写代码的时候会遇到如图所示的错误提示:cannot bind to 127.0.0.1:5037: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048),通常是adb端口被占用。