玩转Android adb命令(adb降级) |
您所在的位置:网站首页 › 荣耀手机版本怎么降低版本 › 玩转Android adb命令(adb降级) |
原文链接 玩转Android adb命令(adb降级) 1.adb简介 adb具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能。 在Android SDK安装目录的platform-tools目录下找到adb工具。 adb在某种程度上有很大权限的,因为adb的设计初衷是为了方便开发人员调试,因此必然需要暴露一些权限以外的接口,利用这个特性可以绕开权限机制在非Root非定制机上做一些操作。 2.adb架构 adb是一个C/S架构的应用程序,由三部分组成 (1).运行在pc端的adb client 命令行程序”adb”用于从shell或脚本中运行adb命令。首先,“adb”程序尝试定位主机上的adb服务器,如果找不到adb服务器,“adb”程序自动启动一个adb服务器。接下来,当设备的adbd和pc端的adb server建立连接后,adb client就可以向adb servcer发送服务请求; (2).运行在pc端的adb server adb Server是运行在主机上的一个后台进程。它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,adb Server还需要将adb client的请求通过usb或者tcp的方式发送到对应的adbd上; (3)运行在设备端的常驻进程adb demon(adbd) 程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接adb服务器,并且为运行在主机上的客户端提供一些服务; 3.adb端口被占用 5037为adb默认端口,若5037端口被占用的解决方法 (1).找到使用该端口的进程pid netstat -aon|findstr 5037(2).通过pid找到对应的进程名(便于定位,可以跳过) tasklist /fi "pid eq 5162"(3).使用命令终止该命令的运行 taskkill /pid 5162 /f4.基本用法 为命令指定目标设备 如果有多个设备/模拟器连接,则需要为命令指定目标设备 启动adb server命令 adb start-server停止adb server命令 adb kill-server查看adb版本 adb version以root权限运行adbd adb的运行原理是PC端的adb server与手机端的守护进程adbd建立连接,然后PC端的adb client通过adb server转发命令,adbd接收命令后解析运行。 如果adbd以普通权限执行,有些需要root权限才能执行的命令无法直接用adb xxx执行。这时可以adb shell然后su后执行命令,也可以让adbd以root权限执行,就能随意执行高权限命令。 adb root有些手机root后也无法通过adb root命令让adbd以root权限执行 adbd cannot run as root in production builds先安装 adbd Insecure然后 adb root指定adb server的网络端口 adb -P start-server让设备在5555端口监听TCP/IP连接 adb tcpip 5555通过IP地址连接设备 adb connect断开无线连接 adb disconnect无线连接(无需借助USB线) 需要root权限 susetprop service.adb.tcp.port 5555找到Android设备的IP地址 restart adbdstop adbdstart adbd5.应用管理 查看应用列表 adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]在adb shell pm list packages的基础上可以加一些参数进行过滤查看不同的列表,支持的过滤参数,如下所示: 所有应用 adb shell pm list packages系统应用 adb shell pm list packages -s第三方应用 adb shell pm list packages -3安装apk adb install [-lrtsdg]adb install后面可以跟一些可选参数来控制安装apk的行为,可用参数及含义,如下所示: 常见安装失败输出代码、含义及可能的解决办法,如下所示: 卸载应用 adb uninstall [-k]清除应用数据与缓存 adb shell pm clear查看前台Activity adb shell dumpsys activity activities | grep mFocusedActivity查看正在运行的Services adb shell dumpsys activity services []查看应用详细信息 adb shell dumpsys package6.与应用交互 主要是使用am 命令,常用的 参数很灵活,和写Android程序时代码里的Intent相对应。 用于决定intent对象的选项如下: 里还能带数据,就像写代码时的Bundle一样 调起Activity adb shell am start [options] adb shell am start -n com.tx.mm/.ui.LauncherUIadb shell am start -n org.mazhuang.boottimemeasure/.MainActivity --es "toast" "hello, world"调起Service adb shell am startservice [options] adb shell am startservice -n com.tx.mm/.plugin.accountsync.model.AccountAuthenticatorService发送广播 adb shell am broadcast -a android.intent.action.BOOT_COMPLETEDadb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver强制停止应用 adb shell am force-stop adb shell am force-stop com.tx.mobilesafe禁用应用和启动 adb shell pm disable-user adb shell pm disable adb shell pm enable撤消应用程序的权限 (1).向应用授予权限。只能授予应用程序声明的可选权限 adb shell pm grant adb -d shell pm grant packageName android.permission.BATTERY_STATS(2).取消应用授权 adb shell pm revoke选项--user user_id要禁用的用户 滑动解锁 adb shell input swipe 300 1000 300 5007.查看日志 Android系统的日志分为两部分,底层的Linux内核日志输出到/proc/kmsg,Android的日志输出到/dev/log。 按tag和级别过滤日志 adb logcat ActivityManager:I MyApp:D *:Sadb logcat -v long ActivityManager:I *:S清空日志 adb logcat -c内核日志 adb shell dmesg8.查看设备信息 型号 adb shell getprop ro.product.model电池状况 adb shell dumpsys battery屏幕分辨率 adb shell wm size屏幕密度 adb shell wm density显示屏参数 adb shell dumpsys window displaysandroid_id adb shell settings get secure android_idIMEI adb shell dumpsys iphonesubinfoAndroid系统版本 adb shell getprop ro.build.version.releaseIP地址 adb shell ifconfig "| grep Mask"Mac地址 adb shell cat /sys/class/net/wlan0/addressCPU信息 adb shell cat /proc/cpuinfo内存信息 adb shell cat /proc/meminfo更多硬件与系统属性 adb shell cat /system/build.prop可通过adb shell getprop 命令单独查看 修改设置 修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行adb reboot重启设备,或手动重启。 修改设置的原理主要是通过settings命令修改如下路径里存放的设置值 /data/data/com.android.providers.settings/databases/settings.db关闭USB调试模式 adb shell settings put global adb_enabled 0状态栏和导航栏的显示隐藏 adb shell settings put global policy_control表示设置在所有界面下都同时隐藏状态栏和导航栏 adb shell settings put global policy_control immersive.full=*表示设置在包名为com.package1和com.package2的应用里隐藏状态栏,在除了包名为com.package3的所有应用里隐藏导航栏 adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3恢复正常模式 adb shell settings put global policy_control null屏幕截图 adb shell screencap -p /sdcard/sc.pngLinux和Windows adb shell screencap -p | sed "s/\r$//" > sc.pngMac OS X adb shell screencap -p | gsed "s/\r$//" > sc.png录制屏幕 adb shell screenrecord /sdcard/filename.mp4重新挂载system分区为可写 adb shellsumount重新挂载 mount -o remount,rw -t yaffs2 /dev/block/platform/msm_sdcc.1/by-name/system /system查看连接过的WiFi密码 adb shellsucat /data/misc/wifi/*.conf重启手机 adb reboot检测设备是否已root adb shellsu使用Monkey进行压力测试 adb shell monkey -p -v 500开启WiFi adb rootadb shell svc wifi enable关闭WiFi adb rootadb shell svc wifi disable设置wifi优先,有网络和wifi情况下优先使用wifi adb shell svc wifi prefer开启/关闭数据流量 svc data disableadb shell svc data enable adb shell svc data prefer9.刷机相关命令 重启到Recovery模式 adb reboot recovery从Recovery重启到Android adb reboot重启到Fastboot模式 adb reboot bootloader查看进程 adb shell ps查看实时资源占用情况 adb shell top查看进程UID adb shell dumpsys package | grep userId=10.安全相关 启用SELinux adb rootadb shell setenforce 1禁用SELinux adb rootadb shell setenforce 0启用dm_verity adb rootadb enable-verity禁用dm_verity adb rootadb disable-verity11.常见问题 启动adb server失败 adb server进程想使用的5037端口被占用 netstat -ano | findstr LISTENINGtaskkill /PID 12418重启adb 推荐文章 Android系统run-as命令原理(权限访问) Android系统中run-as和su命令的源码解析(升降权限) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |