adb常用命令笔记。

一、adb简介

adb(Android debug bridge),意为调试Android设备的桥梁。主要存放在sdk安装目录下的platform-tools文件夹中。可以管理、调试Emulator(模拟机)或Device(安卓真机)。adb是一个C/S架构的应用程序,由三部分组成:

  • adb client:adb 客户端,在PC上运行。
  • adb server:adb 服务端,在PC上运行。
  • adb daemon:adbd 守护进程,在Emulator或Device上运行。

1、adb server与adb client的连接
当adb server启动时,会绑定到本地的5037(tcp)端口,通过此端口监听从adb client发来的信息。

2、adb server与adb daemon的连接
adb server与Emulator(或Device)连接时使用两个(一组)端口进行:

  • 一个奇数的5555,先建立adb server与adbd的连接通信。
  • 一个为偶数的5554,再建立与Emulator(或Device)的交互连接。

ps:adb server通过扫描5555—5585之间的奇数端口搜索adb daemon,进行adb连接;而用相应的偶数端口(奇数端口号-1,如5555对应5554)进行Emulator或Device实例的连接。也正因为每个设备都分一组两个端口,所以adb连接手机的最大数量为16。

3、adb连接逻辑图

adb连接逻辑图

4、adb架构图

adb架构图

二、adb安装

(1)下载adb安装包:http://adbshell.com/downloads
(2)将安装包解压到电脑自定义路径下。
(3)配置系统环境变量,例如:D:\Program Files\adb
(4)测试是否安装成功,cmd输入命令adb查看adb版本。

三、adb基本用法

1、adb命令的基本语法
adb [-d|-e|-s <serialNumber>] <command>

  • -d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
  • -e 指定当前唯一运行的模拟器为命令目标
  • -s <serialNumber> 指定相应serialNumber号的设备/模拟器为命令目标
1
2
3
4
5
6
7
# 查看serialNumber
$ adb devices

List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device

2、启动/停止adb server
adb start-server:启动 adb server
adb kill-server:停止 adb server

3、指定adb server网络端口
adb -P <port> start-server # 默认端口为5037

4、查看 adb 版本
adb version

5、root权限
adb root :获取root权限
adb unroot : 解除root权限

四、设备连接管理

1、查询已连接设备/模拟器
adb devices
输出格式为 [serialNumber] [state]。serialNumber即常说的SN,state 有如下几种:

  • offline:表示设备未连接成功或无响应。
  • device:设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。
  • no device:没有设备/模拟器连接。

2、连接设备的几种方式
(1)USB连接

1)硬件状态正常:包括Android设备处于正常开机状态,USB连接线和各种接口完好。
2)设备的开发者选项和USB调试模式已开启:「设置」-「开发者选项」-「Android 调试」。
3)设备驱动状态正常:在Linux和Mac OS X下没问题,在Windows下可能需要安装驱动。
4)通过USB线连接好电脑和设备后检查状态:adb devices。

(2)无线连接(需要借助USB线)

1)将Android设备与电脑连接到同一个局域网:比如连到同一个 WiFi。
2)将设备与电脑通过USB线连接:确保连接成功,可运行adb devices查看。
3)让设备在5555端口监听TCP/IP连接:adb tcpip 5555
4)断开USB连接。
5)查看设备的IP地址:「设置」-「关于手机」-「状态信息」-「IP地址」;也可以在第4)步前使用命令adb shell ifconfig | grep Mask查看。
6)通过IP地址连接设备:adb connect <device-ip-address>
7)查看连接状态:adb devices。

(3)无线连接(无需借助USB线)

1)开启root权限:可以借助root应用。
2)在Android设备上安装一个终端模拟器:提供一个终端模拟器下载地址https://jackpal.github.io/Android-Terminal-Emulator/
3)将Android设备与电脑连接到同一个局域网:比如连到同一个WiFi。
4)打开Android设备上的终端模拟器,在里面依次运行命令:su setprop service.adb.tcp.port 5555
5)查看设备的IP地址:「设置」-「关于手机」-「状态信息」-「IP地址」;也可以使用命令adb shell ifconfig | grep Mask查看。
6)通过IP地址连接设备:adb connect <device-ip-address>
ps:有的设备,比如小米 5S + MIUI 8.0 + Android 6.0.1 MXB48T,可能在第6)步之前需要重启adbd服务,在设备的终端模拟器上运行:restart adbd,如果restart无效,可以尝试以下命令:stop adbd start adbd

五、应用管理

1、查看应用列表
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]

  • :所有应用
  • -f:显示应用关联的 apk 文件
  • -d:只显示 disabled 的应用
  • -e:只显示 enabled 的应用
  • -s:只显示系统应用
  • -3:只显示第三方应用
  • -i:显示应用的 installer
  • -u:包含已卸载应用
  • FILTER:包名包含 FILTER字符串
1
2
3
4
5
adb shell pm list packages #全部应用
adb shell pm list packages -s #系统应用
adb shell pm list packages -3 #第三方应用
adb shell pm list packages test #包含字符串的应用
adb shell pm list packages | grep test #grep过滤包含字符串的应用

2、安装APK
adb install [-lrtsdg] <path_to_apk>

  • -l:将应用安装到保护目录 /mnt/asec
  • -r:允许覆盖安装
  • -t:允许安装AndroidManifest.xml里application指定android:testOnly=”true”的应用
  • -s:将应用安装到 sdcard
  • -d:允许降级覆盖安装
  • -g:授予所有运行时权限

ps:adb install实际上分三步完成(必要时可以手动分步执行安装过程):

  • push apk 文件到 /data/local/tmp。
  • 调用 pm install 安装。
  • 删除 /data/local/tmp 下的对应 apk 文件。

3、卸载APK
adb uninstall [-k] <packagename>

  • -k:卸载应用但保留数据和缓存目录。

也可以直接删除:

1
2
3
adb shell
cd data/app
rm <packagename>

4、清除应用数据与缓存
adb shell pm clear <packagename>

1
adb shell pm clear com.test.mobile

5、查看前台Activity
adb shell dumpsys activity activities | grep mFocusedActivity

6、查看正在运行的Services
adb shell dumpsys activity services [<packagename>]
输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。

7、查看应用安装路径
adb shell pm path <PACKAGE>

六、应用交互

应用交互主要是使用 am <command>:

  • start [options] <INTENT>:启动 指定的 Activity
  • startservice [options] <INTENT>:启动 指定的 Service
  • broadcast [options] <INTENT>:发送 指定的广播
  • force-stop <packagename>:停止 相关的进程
  • stopservice <INTENT>:停止Service
  • kill <PACKAGE>:杀指定后台进程
  • kill-all:杀所有后台进程
  • hang:系统卡住
  • restart:重启
  • bug-report:创建bugreport
  • dumpheap <pid> <file>:进程pid的堆信息输出到file
  • send-trim-memory <pid><level>:收紧进程的内存
  • monitor:监控

参数很灵活,和写Android程序时代码里的Intent相对应:

  • -a <ACTION>:指定Intent action, 比如 android.intent.action.VIEW
  • -n <COMPONENT>:指定完整组件名,用于明确指定启动哪个Activity,如 com.example.app/.ExampleActivity
  • -d <DATA_URI>:指定Intent data URI
  • -t <MIME_TYPE>:指定Intent MIME Type
  • -c <CATEGORY>:指定Intent category,比如 android.intent.category.APP_CONTACTS
  • -p <PACKAGE>:指定包名,实现原理Intent.setPackage()
  • -f <FLAGS>:添加flags,实现原理Intent.setFlags(int ),紧接着的参数必须是int型

里还能带数据,就像写代码时的 Bundle 一样:

  • --esn <EXTRA_KEY>:null 值(只有 key 名)
  • -e | --es <EXTRA_KEY> <EXTRA_STRING_VALUE>
  • --ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>:boolean 值
  • --ei <EXTRA_KEY> <EXTRA_INT_VALUE>:integer 值
  • --el <EXTRA_KEY> <EXTRA_LONG_VALUE>:long 值
  • --ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>:float 值
  • --eu <EXTRA_KEY> <EXTRA_URI_VALUE>:URI
  • --ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>:component name
  • --eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]:integer 数组
  • --ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]:long 数组

1、启动Activity
adb shell am start [options] <INTENT>

  • -D: 允许调试功能
  • -W: 等待app启动完成,获得启动时间
  • -R <COUNT>: 重复启动Activity COUNT次
  • -S: 启动activity之前,先调用forceStopPackage()方法强制停止app
  • –opengl-trace: 运行获取OpenGL函数的trace
  • –user <USER_ID> | current: 指定用户来运行App,默认为当前用户
  • –start-profiler <FILE>: 启动profiler,并将结果发送到
  • -P <FILE>: 类似 –start-profiler,不同的是当app进入idle状态,则停止profiling
  • –sampling INTERVAL: 设置profiler 取样时间间隔,单位ms
1
2
adb shell am start -n com.tencent.mm/.ui.LauncherUI
adb shell am start -n -W com.tencent.mm/.ui.LauncherUI

2、启动Service
adb shell am startservice [options] <INTENT>

1
adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService

3、停止Service
adb shell am stopservice [options] <INTENT>

4、发送广播
adb shell am broadcast [options] <INTENT>

1
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

既能发送系统预定义的广播,也能发送自定义广播。如下是部分系统预定义广播及正常触发时机:

  • android.net.conn.CONNECTIVITY_CHANGE:网络连接发生变化
  • android.intent.action.SCREEN_ON:屏幕点亮
  • android.intent.action.SCREEN_OFF:屏幕熄灭
  • android.intent.action.BATTERY_LOW:电量低,会弹出电量低提示框
  • android.intent.action.BATTERY_OKAY:电量恢复了
  • android.intent.action.BOOT_COMPLETED:设备启动完毕
  • android.intent.action.DEVICE_STORAGE_LOW:存储空间过低
  • android.intent.action.DEVICE_STORAGE_OK:存储空间恢复
  • android.intent.action.PACKAGE_ADDED:安装了新的应用
  • android.net.wifi.STATE_CHANGE:WiFi连接状态发生变化
  • android.net.wifi.WIFI_STATE_CHANGED:WiFi 状态变为启用/关闭/正在启动/正在关闭/未知
  • android.intent.action.BATTERY_CHANGED:电池电量发生变化
  • android.intent.action.INPUT_METHOD_CHANGED:系统输入法发生变化
  • android.intent.action.ACTION_POWER_CONNECTED:外部电源连接
  • android.intent.action.ACTION_POWER_DISCONNECTED:外部电源断开连接
  • android.intent.action.DREAMING_STARTED:系统开始休眠
  • android.intent.action.DREAMING_STOPPED:系统停止休眠
  • android.intent.action.WALLPAPER_CHANGED:壁纸发生变化
  • android.intent.action.HEADSET_PLUG:插入耳机
  • android.intent.action.MEDIA_UNMOUNTED:卸载外部介质
  • android.intent.action.MEDIA_MOUNTED:挂载外部介质
  • android.os.action.POWER_SAVE_MODE_CHANGED:省电模式开启

5、强制停止应用
adb shell am force-stop <packagename>

1
adb shell am force-stop com.test.mobile

6、收紧内存
adb shell am send-trim-memory <pid> <level>

  • pid: 进程 ID
  • level: HIDDEN、RUNNING_MODERATE、BACKGROUND、 RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE
1
adb shell am send-trim-memory 12345 RUNNING_LOW

七、文件管理

1、复制设备里的文件到电脑
adb pull <设备里的文件路径> [电脑上的目录]

1
2
adb pull /sdcard/sr.mp4 ~/tmp/
#ps:设备上的文件路径可能需要root权限才能访问,如果你的设备已经root过,可以先使用 adb shell 和 su 命令在 adb shell 里获取 root 权限后,先 cp /path/on/device /sdcard/filename 将文件复制到 sdcard,然后 adb pull /sdcard/filename /path/on/pc

2、复制电脑里的文件到设备
adb push <电脑上的文件路径> <设备里的目录>

1
2
adb push ~/sr.mp4 /sdcard/
#ps:设备上的文件路径普通权限可能无法直接写入,如果你的设备已经 root 过,可以先 adb push /path/on/pc /sdcard/filename,然后 adb shell 和 su 在 adb shell 里获取 root 权限后,cp /sdcard/filename /path/on/device

八、查看日志

1、查看日志
[adb] logcat [<option>] ... [<filter-spec>] ...
(1)选项解析:

  • -s: 设置输出日志的标签, 只显示该标签的日志;
  • -f: 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;
  • -r: 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;
  • -n: 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;
  • -v: 设置日志的输出格式, 注意只能设置一项;
  • -c: 清空所有的日志缓存信息;
  • -d: 将缓存的日志输出到屏幕上, 并且不会阻塞;
  • -t: 输出最近的几行日志, 输出完退出, 不阻塞;
  • -g: 查看日志缓冲区信息;
  • -b: 加载一个日志缓冲区, 默认是 main, 下面详解;
  • -B: 以二进制形式输出日志;

(2)过滤项解析,格式 : [:priority] , 标签:日志等级, 默认的日志过滤项是 ” *:I ” 。

  • V: Verbose (明细);
  • D: Debug (调试);
  • I: Info (信息);
  • W: Warn (警告);
  • E: Error (错误);
  • F: Fatal (严重错误);
  • S: Silent(Super all output) (最高的优先级, 可能不会记载东西);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
adb logcat -d -f /sdcard/log.txt  #日志写入sdcard
adb logcat ActivityManager:I MyApp:D *:S # 按tag和级别过滤日志
adb logcat -c #清空日志
adb logcat -v time > C:\Users\test\Desktop\log.txt #日志写入电脑

# 设置日志的输出格式:
#brief格式(是默认的日志格式): 【优先级 / 标签 (进程ID) : 日志信息】
adb logcat -v brief

#process格式 : 【优先级 (进程ID) : 日志信息】
adb logcat -v process

#tag格式 : 【优先级 / 标签 : 日志信息】
adb logcat -v tag

#thread格式 : 【优先级 ( 进程ID : 线程ID) 标签 : 日志内容】
adb logcat -v thread

# raw格式 : 只输出日志信息, 不附加任何其他信息
adb logcat -v raw

#time格式 : 【日期 时间 优先级 / 标签 (进程ID) : 进程名称 : 日志信息】
adb logcat -v time

#long格式: 【[日期 时间 进程ID : 线程ID 优先级 / 标签] 日志信息】
adb logcat -v long

2、内核日志
adb shell dmesg

九、查看设备信息

1、查看屏幕分辨率
adb shell wm size

1
2
3
4
5
adb shell wm size

#输出信息
Physical size: 1080x1920 #屏幕分辨率原本是 1080px * 1920px
Override size: 480x1024 #当前被修改为 480px * 1024px,如果未修改过则不显示

2、查看屏幕密度
adb shell wm density

1
2
3
4
5
adb shell wm density

#输出信息
Physical density: 480 #屏幕密度原来是 480dpi
Override density: 160 #当前被修改为 160dpi,如果未修改过则不显示

3、查看显示屏参数
adb shell dumpsys window displays

1
2
3
4
5
6
7
8
adb shell dumpsys window displays

#输出信息
WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
Display: mDisplayId=0
init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731
deferred=false layoutNeeded=false
#mDisplayId 为 显示屏编号,init 是初始分辨率和屏幕密度,app 的高度比 init 里的要小,表示屏幕底部有虚拟按键,高度为 1920 - 1794 = 126px 合 42dp

4、查看电池状况
adb shell dumpsys battery
adb shell dumpsys batterystats

5、查看CPU信息
adb shell cat /proc/cpuinfo
adb shell dumpsys cpuinfo | grep {PackageName}
adb shell top | grep {PackageName}

6、查看内存信息
adb shell cat /proc/meminfo
adb shell dumpsys meminfo {PackageName}
adb shell top -d 刷新时间| grep {PackageName}

7、查看流量信息
adb shell cat /proc/pid/net/dev

8、查看FPS
adb shell dumpsys gfxinfo

1
adb shell dumpsys gfxinfo com.peng.cloudp.tv > test.txt #抓取数据后用表格进行分析

9、查看型号
adb shell getprop ro.product.model

10、查看android_id
adb shell settings get secure android_id

11、查看IMEI
(1)Android 4.4及以下版本可通过如下命令获取IMEI:
adb shell dumpsys iphonesubinfo
(2)Android 5.0及以上版本通过其它方式获取了(需要 root 权限):

1
2
3
adb shell
su
service call iphonesubinfo 1

12、查看安卓系统版本
adb shell getprop ro.build.version.release

13、查看IP地址
adb shell ifconfig | grep Mask
有的设备上这个命令没有输出,如果设备连着 WiFi,可以使用如下命令来查看局域网 IP:
adb shell ifconfig wlan0
如果以上命令仍然不能得到期望的信息,可以试试以下命令:
adb shell netcfg

14、查看Mac地址
adb shell cat /sys/class/net/wlan0/address
这查看的是局域网 Mac 地址,移动网络或其它连接的信息可以通过
adb shell netcfg

15、更多硬件与系统属性
adb shell cat /system/build.prop

  • ro.build.version.sdk:SDK 版本
  • ro.build.version.release:Android 系统版本
  • ro.build.version.security_patch:Android 安全补丁程序级别
  • ro.product.model:型号
  • ro.product.brand:品牌
  • ro.product.name:设备名
  • ro.product.board:处理器型号
  • ro.product.cpu.abilist:CPU 支持的 abi 列表[节注一]
  • persist.sys.isUsbOtgEnabled:是否支持 OTG
  • dalvik.vm.heapsize:每个应用程序的内存上限
  • ro.sf.lcd_density:屏幕密度

输出里还包括一些其它有用的信息,它们也可通过 adb shell getprop <属性名> 命令单独查看。

16、查看连接过的WiFi密码
adb shell
su
cat /data/misc/wifi/*.conf
ps:需要root权限

17、获取连接到的设备的序列号
adb get-serialno

18、获取设备的连接状态
adb -s {serialno} get-stat

19、等待设备连接成功
adb wait-for-device

十、修改设置

1、修改分辨率
adb shell wm size 480x1024
恢复原分辨率命令:
adb shell wm size reset

2、修改屏幕密度
adb shell wm density 160
恢复原屏幕密度命令:
adb shell wm density reset

3、修改显示区域
adb shell wm overscan 0,0,0,200
四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。
恢复原显示区域命令:
adb shell wm overscan reset

4、关闭USB调试模式
adb shell settings put global adb_enabled 0
ps:用命令恢复不了了,关闭了USB调试,adb就连接不 Android设备了。

5、状态栏和导航栏的显示隐藏
adb shell settings put global policy_control <key-values>
key:

  • immersive.full:同时隐藏
  • immersive.status:隐藏状态栏
  • immersive.navigation:隐藏导航栏
  • immersive.preconfirms:?

value:

  • apps:所有应用
  • *:所有界面
  • packagename:指定应用
  • -packagename:排除指定应用
1
2
adb shell settings put global policy_control immersive.full=*
adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3

6、设置系统日期和时间
ps:需要root权限
adb shell
su
(1)先设置系统的时区配置

  • cat /data/property/persist.sys.timezone:查看当前时区配置文件
  • setprop persist.sys.timezone GMT:修改属性

(2)设置修改当前系统时间

  • date -s "yyyymmdd.[[[hh]mm]ss]"
  • System/bin/date -s "yyyymmdd.[[[hh]mm]ss]"

(3)查看是否生效
date

1
2
3
4
date -s "20151116.120000"  
date

#输出:Mon Nov 16 12:00:02 CST 2015

十一、设备控制

1、屏幕截图
adb exec-out screencap -p > sc.png

  • -p:指定保存文件为 png 格式
  • -d display-id:指定截图的显示屏编号(有多显示屏的情况下)

以上命令需要新版本adb,老版本请使用下边命令:
adb shell screencap -p /sdcard/sc.png
adb pull /sdcard/sc.png

2、录制屏幕
adb shell screenrecord /sdcard/test.mp4

  • --size WIDTHxHEIGHT:视频的尺寸,比如 1280x720,默认是屏幕分辨率。
  • --bit-rate RATE:视频的比特率,默认是 4Mbps。
  • --time-limit TIME:录制时长,单位秒。
  • --verbose:输出更多信息

需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。如果需要导出到电脑:
adb pull /sdcard/test.mp4

3、重启设备
adb reboot

4、设备关机
adb shutdown

5、开启/关闭wifi

  • adb shell svc wifi enable:开启wifi
  • adb shell svc wifi disable:关闭wifi
    ps:需要root权限

6、模拟按键/输入
adb shell input [<source>] <command> [<arg>...]
The sources are:

  • mouse
  • keyboard
  • joystick
  • touchnavigation
  • touchpad
  • trackball
  • stylus
  • dpad
  • gesture
  • touchscreen
  • gamepad

The commands and default sources are:

  • text (Default: touchscreen)
  • keyevent [–longpress] … (Default: keyboard)
  • tap (Default: touchscreen)
  • swipe [duration(ms)] (Default: touchscreen)
  • press (Default: trackball)
  • roll (Default: trackball)

ps:常用keycode键值表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#输入文本
adb shell input text hello

#滑动屏幕
adb shell input swipe 300 1000 300 500

#点击屏幕
adb shell input touchscreen tap 300 1000

#熄灭屏幕
adb shell input keyevent 223

#点亮屏幕
adb shell input keyevent 224

#电源键
adb shell input keyevent 26

#菜单键
adb shell input keyevent 82

#HOME键
adb shell input keyevent 3

#返回键
adb shell input keyevent 4

#增加音量
adb shell input keyevent 24

#降低音量
adb shell input keyevent 25

#静音
adb shell input keyevent 164

十二、挂载分区

1、简写命令
adb remount
adb shell mount -o remount /system

2、mount命令详解
mount [-r] [-w] [-o options] [-t type] device directory

  • -t vfstype:指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:
    • 光盘或光盘镜像:iso9660
    • DOS fat16文件系统:msdos
    • Windows 9x fat32文件系统:vfat
    • Windows NT ntfs文件系统:ntfs
    • Mount Windows文件网络共享:smbfs
    • UNIX(LINUX) 文件网络共享:nfs
  • -o options:主要用来描述设备或档案的挂接方式。常用的参数有:
    • loop:用来把一个文件当成硬盘分区挂接上系统
    • ro:采用只读方式挂接设备
    • rw:采用读写方式挂接设备
    • iocharset:指定访问文件系统所用字符集
  • device:要挂接(mount)的设备。
  • dir:设备在系统上的挂接点(mount point)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 需要root权限
adb shell
su

# 查看当前分区挂载情况
mount

# 找到/system的那一行
#/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0

# 重新挂载
mount -o remount,rw /dev/block/mtdblock0 /system

#如果需要改回去ro
mount -o remount,ro /dev/block/mtdblock0 /system

十三、刷机相关

1、从Recovery重启到Android
adb reboot

2、重启到Recovery模式(卡刷)
adb recovery

3、重启到Fastboot模式(线刷)
adb reboot bootloader

4、通过sideload更新系统(属于卡刷)
(1)重启到 Recovery 模式。
adb reboot recovery
(2)在设备的Recovery界面上操作进入Apply update-Apply from ADB。
ps:不同的 Recovery 菜单可能与此有差异,有的是一级菜单就有 Apply update from ADB。
(3)通过 adb 上传和更新系统。
adb sideload <path-to-update.zip>

持续更新…

最后更新: 2018年05月11日 14:39

原始链接: http://pythonfood.github.io/2017/12/29/adb/

× 多少都行~
打赏二维码