ubuntu上使用adb
adb介绍
全称 Android Debug Bridge
电脑是客户端,服务器是手机
adb包的安装
1 | sudo apt-get install Android-tools-adb android-tools-fastboot |
不知道软件源是哪里,但是从版本来看,默认的软件源提供的更新比较慢
电脑驱动文件的配置
查询厂商代码
要知道自己手机的厂商并配置一份文件放在系统设备文件夹下
1 | lsusb #查看设备信息 |
插上手机,再来一次多出来的那个,比如
1 | Bus 001 Device 005: ID 0b05:5601 ASUSTek Computer, Inc. |
- 0b05 厂商代码,这个代表华硕,这个数据也最重要
- 5601 产品的编号
- 上面两个数字都是16进制数,所以设备编号最大有65535个,不知道是否有这个数字一样的USB设备,被同样的人买到,插在同一个电脑上会发生什么
其他厂商代码还有
厂商 | 代码 |
---|---|
Acer | 0502 |
Dell | 413c |
Foxconn | 0489 |
Garmin-Asus | 091E |
HTC (Older Phones) | 0bb4 |
HTC (Newer phones) | 18d1 |
Huawei | 12d1 |
Kyocera | 0482 |
LG | 1004 |
Motorola | 22b8 |
Nexus One/S | 18d1 |
Nvidia | 0955 |
Pantech | 10A9 |
Samsung | 04e8 |
Sharp | 04dd |
Sony Ericsson | 0fce |
ZTE | 19D2 |
编辑规则文件
编辑文件 /dev/udev/rules.d/my-android.rules
- 文件名任意
- 一个文件可以存储多个手机
1 | # adb and fastboot protocol |
- 设备类型:usb
- 厂商编号:0b05
- 权限: 666
- 组:即插即用
- 不写没关系
- 拥有者:chougoussui
- 不写就是root
使规则文件生效
调整文件权限
1 | sudo chmod a+x /etc/udev/rules.d/my-android.rules |
读取规则
1 | sudo chmod a+x /etc/udev/rules.d/my-android.rules |
参考网页:=http://www.linuxdiyf.com/linux/13422.html=
常用adb命令
基础
- adb version 查看版本,通常也用于检查对否安装,
- adb devices 查看现在连接的设备
- 如果错误,在手机上重新打开一次USB调试
- adb shell 打开shell登录服务器(手机)
权限相关
- adb root 提示adb将以root权限运行
- 提示错误是由于厂商默认限制adb查看手机的权限,表现为登录shell后身份是shell
- 不以root身份运行adb导致
adb pull/push
不能对系统应用数据区/data/data/
操作 - 解决方法:
- 要么在shell中以root身份更改应用区文件权限
- 要么安装
adbd Insecure.apk
,并设置同意手机直接使用root权限版的adbd
- 然后使用
adb shell
时将直接使用root身份- adb remount 重新挂载系统区文件
- 一般在使用
adb root
之后重新挂载以拥有对/system
区域的权限
- su
- 在shell模式下切换到root身份
- 这个需要手机已经root
- mount -o remount -o rw /system
- 在shell模式下重新挂载/system?
文件相关
- adb pull <remote> <local> 获取文件
- 远端的文件夹下没有文件将不会传输文件夹到本地
- 注意没有权限会提示失败,参见上面=adb root=
- adb push <local> <remote>推送文件到远端
- 远端没有的文件夹会创建
应用相关
- adb shell pm llist packages 查看安装的软件列表
-s
参数表示只看系统软件-3
参数表示只看第三方软件- 但是数量和文件管理器给出的不同
- adb install <xxx.apk> 安装本地的一个apk文件
- adb uninstall <package>卸载应用
- =-k=参数会保留数据
- 或许系统应用的删除方法有更多要求,比如删除以下路径中的apk文件?更多情况下只需要使用这一条
- 系统应用放在
\system\app
- 第三方应用放在
\data\app
- 一说卸载应用要4步
http://blog.csdn.net/he315889714/article/details/38519101
- 重新挂载
mount -o remount,rw rootfs /system/
- 到
/system/app
删除apk文件 - 到
/data/data
删除应用的数据 - 删除
/data/system/packages.xml
文件中<package>
到</package>
的一段数据
- 重新挂载
刷机相关
- adb reboot bootloader 重启进入bootloader界面
- 一般手机按键完好也可以使用手机的电源键+音量键(增或减看厂商)进入
- 越来越多的厂家开始锁bootloader,也越来越多的厂家设定不能从按键直接进入recovery
- fastboot devices 查看fastboot设备
- 或许还和adbshebei不同
- fastboot flash recovery your~recoveryimage~.img 刷入recovery
- 还有临时使用recovery
- 刷入boot分区等等,待补全
以无线连接设备
先用usb连接上, adb devices
确认连接上了,
然后使用
1 | Adb tcpip 5555 |
告知设备要在5555端口监听adb的命令
然后手动弹出设备
使用
1 | adb connnect <ip> |
连接设备
然后使用 adb devices
查看连接到的设备,有无线的显示就说明成功了
记得要
1 | adb disconnect <ip> |
其他
有不少中文版放在 https://github.com/mzlogin/awesome-adb
官方翻译版暂时没有找到
还有众多如启动应用,模拟操作等非常有用的方法
应用
备份应用数据
-
有说使用`adb backup -f <local~path~/filename.ab> <package>
- 但是一来要在手机上同意,屏幕碎了的话不能操作
- 二来备份文件很小.表明失败了
-
于是参照es文件浏览器做法,直接备份
/data/data
区下文件夹中的数据1
adb pull /data/data/org.dayup.gnotes ./gnotes
- 正好
adb pull
时不会将空文件夹复制下来 - 也不会将有软链接的文件复制过来
- 比如lib文件或文件夹,通常安装引用就会有,与数据无关,
链接到的位置也一般在/data/app/lib
或者/data/applib
文件夹下
- 比如lib文件或文件夹,通常安装引用就会有,与数据无关,
- 缓存文件夹
cache
也不会被复制下来- 除非软件厂商觉得缓存有用,那么他们会改动缓存所在的文件夹名吧
- 正好
-
鉴于厂商限制直接运行root版本shell,
-
能后备份手机应用数据的情况仅限于手机已经root并且打开了usb调试,
最好还是能安装个应用并进行操作,否则真要先加读权限再抓数据了
恢复应用数据
1 | adb push ./gnotes /data/data/org.dayup.gnotes |
实测成功
安装其他linux命令
- 系统自带的命令文件安装在/system/bin
- 甚至系统使用的shell–sh都在bin中
- busybox安装的命令则放在了/system/xbin中,系统正好能找到
- 很多经典的命令比如wc都是由busybox导入的
- 单独安装的话把命令文件放在
/system/xbin
下就好