HierarchyViewer不能连接真机的问题
检查一台android手机是否已经打开了View Server的命令:
adb shell service call window 3
如果返回的是
表示View Server 处于关闭状态;
如果返回的是
Result: Parcel(00000000 00000001 '........')
说明View Server处于打开状态;
打开View Server命令:
adb shell service call window 1 i32 4939
但是前提是,该设备可以打开View Server
反之,如果关闭View Server:
adb shell service call window 2 i32 4939
adb offline问题
在cmd执行命令:
adb devices
出现如下图所示的结果:
然后执行启动服务操作:
adb kill-server
adb start-server
结果还是出现上图结果;
查看当前adb的版本信息:
adb version
看到当前的版本是1.0.26,在网上查找资料说是,版本太低导致的问题;
然后升级当前adb的版本:
android update adb
此时查看adb版本,实际结果还是1.0.26,这一块很是费解,但是在网上找资料说是可以在adb.exe所在目录下执行操作,然后抱着试试的态度试一下:
adb version
结果:
可以看到当前版本已经是1.0.39了,又尝试了查看当前设备的命令结果:
由上面的命令我们可以看到,server version(26) 不匹配client(39),所以我们找到了offline的原因了,就是因为adb服务版本太低导致;但是我尝试了删除环境变量的配置在非adb.exe目录下始终查出来adb的版本是1.0.26,至于这个问题暂时不清楚(后面再查资料);
ADB的命令列表
ADB命令 | 命令描述 | 参数含义 | 备注 |
---|---|---|---|
adb kill-server | 杀死当前的服务 | 无 | 无 |
adb start-server | 开始adb服务 | 无 | 无 |
adb shell dumpsys activity l (findstr/grep) "a" | 查询当前设备堆栈中的Activity | a表示Activity的名称 | 无 |
adb install [-s/-r] <apkfile> | 安装apk文件 | apkfile表示apk的本地路径,如果不在当前目录,就是用绝对路径;-s表示重新安装,保留数据和缓存文件;-s表示安装到sd卡 | findstr在win系统;grep在linux系统 |
adb uninstall [-k] <package> | 卸载app | package表示要卸载的app的包名;-k表示保留数据和缓存文件 | 无 |
adb shell pm list packages [[-s/-3] l (findstr/grep pkgname)] | 查询所有安装的app包名 | -s表示系统应用;-3表示第三方应用;(findstr/grep)表示查询;pkgname表示包名的模糊关键字 | findstr在win系统;grep在linux系统 |
adb shell pm clear <packagename> | 清除应用的数据和缓存 | packagename表示包名 | 无 |
adb shell am start -n <pkgname>/<activitypath> | 启动应用 | pkgname表示包名;activitypath表示带.的路径,如果是全路径不需要. | 无 |
adb shell am force-stop <pkgname> | 强制停止应用 | pkgname表示包名 | 无 |
adb logcat | 查看日志 | 无 | ctrl+c结束 |
adb reboot | 重启 | 无 | 无 |
adb get-serialno | 获取序列号 | 无 | 无 |
adb shell cat /sys/class/net/wlan0/address | 获取mac地址 | 无 | 无 |
adb shell getprop ro.product.model | 查看设备型号 | 无 | 无 |
adb shell getprop ro.build.version.release | 查看Android系统版本 | 无 | 无 |
adb shell wm size | 查看屏幕分辨率 | 无 | 无 |
adb shell wm density | 查看屏幕密度 | 无 | 无 |
adb nodaemon server | 查看adb绑定的端口 | 无 | netstat -ano l findstr “5037” |
注:命令中的 l 实际上表示的是字符 |
以上列出了adb比较常用的命令,还有很多的命令,我们可以参考awesome-adb,命令很齐全。
Genymotion操作
夜神模拟器
解决夜神模拟器连接adb失败的原因:
将android的sdk目录下的adb.exe复制带夜神安装目录下替换掉nox_adb.exe