adb command
adb 命令
1 | -d: 让唯一连接到该PC端的真实安卓设备执行命令,如果发现USB中连接有多部设备,将会报错 |
目录概览
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权限
remount failed: Permission denied
fix:1
2adb root
adb remounterror: device not found
尝试在任务管理器中关闭adb.exe进行,然后重试INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
安装包签名不一致,你需要卸载旧的安装包再重新安装。 对于普通app和系统app,分别按照上文方式进行卸载、安装即可。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
- 可先把文件PUSH到/DATA目录,然后到adb shell下面,使用su命令进行搬运到最终地址。
- 顺序执行:
- remount或者chmod 777修改目录的读写权限(如果你是root用户)。
7、INSTALL_FAILED_INVALID_URI
在安装apk过程中,遇到这个错误,貌似root过的手机比较常出现,可以尝将/data/local目录的权限
从 rwxrwxr– 修改为 rwxrwxrwx
挂载目录为可读写、只读命令:
1 | su |
超级终端命令备份 system、data、cache、boot、recodvery等分区为 .img文件:1
2
3
4cat /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