文章目录
  1. 1. adb 命令
  2. 2. 目录概览
  3. 3. 常见错误
  4. 4. 挂载目录为可读写、只读命令:
  5. 5. USB方式及网络方式。
    1. 5.1. adb client
    2. 5.2. adb daemon(adbd) 管理大家在电脑端的adb命令连接,

adb 命令

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
-d: 让唯一连接到该PC端的真实安卓设备执行命令,如果发现USB中连接有多部设备,将会报错
-e: 让唯一连接到该PC端的模拟器执行命令,如果发现开启了多个模拟器,将会报错
-s:通过设备的序列号进行指定设备执行命令
adb devices
adb get-serialno 获取连接到的手机的序列号
adb -s <serialNumber> get-state 获取设备的连接状态
adb wait-for-device 该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。
adb kill-server
adb start-server
adb install (apk在PC上的路径/)*.apk (将apk文件上传到了模拟器自带操作系统的data/app目录下了)
adb uninstall apk的包名(用EC切换到DDMS的File Explorer中查看,data/data下) 命令行用uninstall
adb shell (进入模拟器自带的操作系统)
adb remount 可能会挂载失败,提示remount failed: Operation not permitted, 用rm方法删除
cd data/app (切换到apk的安装目录)
rm ***.apk (用EC切换到DDMS的File Explorer中查看,data/app下)
adb shell
mount 1、系统分区
其挂载方式和 Linux 非常类似。其中需要说明一下的可能是 /dev/block/mtdblock* 这几个核心分区(写入 ROM 的),他们都是使用 yaffs2 文件系统(基于 FLASH 存储),其中是 /system 这个分区只有特殊的 readonly 只读权限,由此可见 Android 在安全性设计方面所下的一些功夫。另外 /dev/block/vold 据说是设计来替代 udev 的功能,主要用于支持一些热插拔设备。

adb pull 手机文件地址 本地目录 就是从真机上拷贝文件到您的PC上。
adb push 本地apk路径 /system/priv-app #安装系统app,直接将apk文件push到/system/priv-app目录下,重启手机即可
删除:
adb shell
cd /system/priv-app
rm apk包名.apk
cd /data/data
rm -rf 应用包名

adb shell screenrecord /sdcard/demo.mp4 屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4
adb shell stop 关闭设备请求,开启设备
adb shell start
adb reboot
adb shutdown
adb get-serialno 获取序列号
adb devices 查看连接计算机的设备:
adb reboot 重启机器:
adb reboot bootloader 重启到bootloader,即刷机模式:
adb reboot recovery 重启到recovery,即恢复模式:
adb kill-server 终止adb服务进程:
adb start-server 重启adb服务进程:
adb install -r <apkfile> //比如:adb install -r baidu.apk 保留数据和缓存文件,重新安装apk:
adb install -s <apkfile> // 比如:adb install -s baidu.apk 安装apk到sd卡:
adb uninstall -k <package> //比如:adb uninstall -k com.baidu.search 卸载app但保留数据和缓存文件:
adb shell top 查看设备cpu和内存占用情况:
adb shell top -m 6 查看占用内存前6的app:
adb shell top -n 1 刷新一次内存信息,然后返回:
adb shell procrank 查询各进程内存使用情况:
adb shell kill [pid] 杀死一个进程:
adb shell ps -x [PID] 查看指定进程状态:
adb shell service list 查看后台services信息:
adb shell cat /proc/meminfo 查看当前内存占用:
adb shell cat /proc/iomem 查看IO内存分区:
adb shell rename path/oldfilename path/newfilename 重命名文件:
adb shell cat /data/misc/wifi/*.conf 查看wifi密码:

adb logcat 查看log:
adb logcat -c 清除log缓存:
adb bugreport 查看bug报告:
adb shell cat /system/build.prop 获取设备名称:
adb shell cat /sys/class/net/wlan0/address 获取机器MAC地址:
adb shell cat /proc/cpuinfo 获取CPU序列号:
adb help
adb shell monkey -v -p your.package.name 500 跑monkey:
adb shell am start -n <package_name>/.<activity_class_name> 启动应用
adb shell am start -a android.intent.action.VIEW -n cn.uc.test/.MainActivity -d http://www.baidu.com ## 进行app的开启,并且传递一定的参数过去,比如:

## disable <PACKAGE_OR_COMPONENT> 其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
adb shell su disable com.UCMobile/.main.UCMobile
adb shell su enable com.UCMobile/.main.UCMobile 让一个apk从禁用状态恢复过来
adb shell pm path com.UCMobile 查看一个apk所在的路径
pm list packages 查看手机中装的所有的包

目录概览

1、mnt 挂载点目录
2、etc 系统主要配置文件
3、system Android 系统文件
1、usr 用户文件夹,包含共享、键盘布局、时间区域文件等
  2、app 常规下载的应用程序,这些 apk 包都是受保护的哦
  3、lib 系统底层库,如平台运行时库等
  4、etc 系统的配置文件,比如APN接入点设置等核心配置等
  5、framework Android 系统平台核心 framework 的文件
  6、build.prop Android 系统属性配置文件
  7、xbin 常用开发工具,比如 tcpdump/sqlite3 等
  8、bin 系统工具,比如 ps/cp/pm 等
  9、priv-app 系统应用程序
4、sys Linux 内核文件
5、proc 运行时文件
6、init.rc 启动脚本
7、default.prop 系统属性配置文件
8、data 用户程序目录
1、data 存放安装后的apk数据
  2、app 存放apk文件
9、dev 设备文件

常见错误

以下错误,部分是由于权限不足引起的,在调试错误前,请保证可以获得手机的root权限

  1. remount failed: Permission denied
    fix:

    1
    2
    adb root 
    adb remount
  2. error: device not found
    尝试在任务管理器中关闭adb.exe进行,然后重试

  3. INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
    安装包签名不一致,你需要卸载旧的安装包再重新安装。 对于普通app和系统app,分别按照上文方式进行卸载、安装即可。

  4. Read-only file system
    也就是文件只能读,fix:

    • remount或者chmod 777修改目录的读写权限(如果你是root用户)。
      • 顺序执行:
        1、adb shell
        2、mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
        或,
        adb shell mount -o remount rw /system
        此时,对大部分设备而言均可解决。
        
        • 可先把文件PUSH到/DATA目录,然后到adb shell下面,使用su命令进行搬运到最终地址。
          1、adb shell
          2、su
          3、cat /data/test.so > /system/lib/test.so

7、INSTALL_FAILED_INVALID_URI
在安装apk过程中,遇到这个错误,貌似root过的手机比较常出现,可以尝将/data/local目录的权限
从 rwxrwxr– 修改为 rwxrwxrwx

挂载目录为可读写、只读命令:

1
2
3
4
5
6
7
8
su
mount -o remount rw /system (挂载/system为可读写)
或 busybox mount -o remount,rw /system (挂载/system为可读写)
busybox mount -o remount,ro /system (挂载/system为只读)
busybox df -h
reboot 重启命令
reboot -p 关机命令
reboot recovery 重启至recovery模式

超级终端命令备份 system、data、cache、boot、recodvery等分区为 .img文件:

1
2
3
4
cat /proc/mtd
假设mtd1对应recovery分区,mtd2对应system分区,备份命令如下:
cat /dev/mtd/mtd1 > /sdcard/recovery.img
cat /dev/mtd/mtd2 > /sdcard/system.img

 
mmcblk 等具体对应哪些分区可参考:APP2SD+开启原理及用Re管理器开启app2sd+方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
挂载EXT分区命令 ,假设mmcblk0p2对应内存卡第二分区(ext格式)
mount -t ext2 /dev/block/mmcblk0p2 /system/sd-ext
重新挂载Fat32格式的内存卡到/system/sd-fat,假设mmcblk0p1对应内存卡第一分区(FAT32格式),在/system 下新建一个空目录 sd-fat 来挂载:
mount -o remount -t vfat /mmcblk0p1 /system/sd-fat
重新挂载回/sdcard:
mount -o remount -t vfat /mmcblk0p1 /sdcard
App2sd+完整开启命令,可参考:APP2SD+开启原理及用Re管理器开启app2sd+方法
su
busybox mount -o remount,rw /system (挂载/system为可读写)
mkdir /system/sd-ext (/system目录下新建目录 sd-ext)
mount -t ext2 /dev/block/mmcblk0p2 /system/sd-ext (将第二分区ext分区挂载到sd-ext)
cp -a /data/app /system/sd-ext/   (将/data/app目录复制到/system/sd/下)  
rm -r /data/app   (删除/data/app目录) 
ln -s /system/sd-ext/app /data/app  (建立软链接)  
reboot   (重启手机)

USB方式及网络方式。

一般手机及平板默认会设置为USB方式, 配置的属性为:
service.adb.tcp.port <- 监听的网络端口

> 以上属性的值 > 0    :    adbd将监听网络对应的端口(一般为5555)
    以上属性的值 <=-1:  adbd将监听USB  

enable adb over wifi:
adb tcpip 5555
setprop service.adb.tcp.port -1
stop adbd
start adbd
adb connect 192.168.1.5:5555 (:5555可省略) #如果连接成功会进行相关的提示,如果失败的话,可以先kill-server命令,然后重试连接。
adb kill-server
adb disconnect 192.168.1.5:5555

adb client

每当我们发起一个adb命令的时候,就会开启一个client程序。当然,当我们开启DDMS或者ADT的时候,也会自动创建client。当我们开启一个client的时候,它首先会去检测后台是否已经有一个server程序在运行着,否则会开启一个adb-server进程。所有的client都是通过5037端口与adb-server进行通信的。

adb daemon(adbd) 管理大家在电脑端的adb命令连接,

作为一个后台进程运行在模拟器/真实Android设备中的, 使用端口的范围是5554-5585,每个模拟器/设备连接到PC端时,总会开启这么一个后台进程,并且为其分配了两个连续的端口,比如:

    Emulator 1, console: 5554
    Emulator 1, adb: 5555
  也正因为每个设备都分一组两个端口, adb连接手机的最大数量为16。 其中偶数端口是用于server 与设备进行交互的,可以让server直接从设备中读取数据,而奇数端口是用来与设备的adbd进行连接通信的。
adb server
 当一个server开启的时候,他会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。

http://developer.android.com/tools/help/adb.html#IntentSpec
https://code.google.com/p/adb-fastboot-install/downloads/list
http://blog.csdn.net/ddna/article/details/6939608
http://wojiushiwolxw.spaces.eepw.com.cn/articles/article/item/97054
http://blog.csdn.net/crazy__chen/article/details/50221177
1
2
3

文章目录
  1. 1. adb 命令
  2. 2. 目录概览
  3. 3. 常见错误
  4. 4. 挂载目录为可读写、只读命令:
  5. 5. USB方式及网络方式。
    1. 5.1. adb client
    2. 5.2. adb daemon(adbd) 管理大家在电脑端的adb命令连接,