Android - adb

嵌入式开发时,我们经常使用串口对嵌入式设备进行命令控制,当开发Android手机时,手机是没有串口的。adb就是通过USB线对手机进行命令控制的工具,有了adb,我们就可以像使用串口一样进入手机的嵌入式文件系统,输入相应的命令进行相关控制。


配置adb

1. 安装adb

sudo apt-get install android-tools-adb

2. 设置usb权限

2.1. 显示所有连接的usb设备

$ lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 413c:2106 Dell Computer Corp.
Bus 002 Device 002: ID 0461:4d81 Primax Electronics, Ltd
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 010: ID 0bb4:0c87 High Tech Computer Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

列表中,Bus 001 Device 010: ID 0bb4:0c87 High Tech Computer Corp. 这一行为htc手机的usb使用端口,记录一下,id为0bb4(基于上所有的htc都是这个ID)。

2.2. 加入权限

$sudo vim /etc/udev/rules.d/70-android.rules
加入以下内容:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c87",MODE="0666"


其中的idvendor idProduct指的是USB的ID可以使用lsusb查询得到。
比如我的是:
lsusb
Bus 001 Device 010: ID 0bb4:0c87 High Tech Computer Corp
ID 0bb4 就是idVendor ,0c87就是 idProduct

2.3 重启USB服务

$sudo chmod a+rx /etc/udev/rules.d/70-android.rules
$sudo service udev restart


3. 重启adb服务

$adb kill-server

$sudo adb start-server

$adb devices

List of devices attached 
Medfield612BBEDD device

其中第二个命令,使用sudo执行很重要,如果不使用sudo,很可能在执行adb devices的时候,显示的是

List of devices attached
???????????? no permissions 


4. 检验adb是否成功

$adb shell

如果显示“root@android:/ # ”,说明adb配置成功,root@android:/ # 说明已经通过adb进入了手机的文件系统,再输入类似ls等命令,操作的就是手机了。


adb常用命令

1、安装应用到模拟器: 
   adb install <path_to_apk></path_to_apk>   
    卸载命令
   adb uninstall com.***.***.****  卸载命令参数必须是总包名
2、进入设备或模拟器的shell: 
   adb shell 
    通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux的命令,另外如果只想执行一条      shell命令,可以采用以下的方式: 
   adb shell [command] 
   如:adb shell dmesg会打印出内核的调试信息。 
3、发布端口: 
    你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如: 
     adb forward tcp:5555 tcp:8000 
4、复制文件: 
    你可向一个设备或从一个设备中复制文件, 
     复制一个文件或目录到设备或模拟器上,设备上的路径必须是可写的,否则会失败: 
    adb push <source> <destination></destination></source> 
      如:adb push test.txt /tmp/test.txt 


     开发时替换设备的so文件

     首先使用adb remount,然后再执行abd push命令,adb remount的作用是“remounts the /system partition on the device read-write”,是设置/system分区以可读写的权限。


     从设备或模拟器上复制一个文件或目录: 
     adb pull <source> <destination></destination></source> 
     如:adb pull /addroid/lib/libwebcore.so . 
5、搜索模拟器/设备的实例: 
     取得当前运行的模拟器/设备的实例的列表及每个实例的状态: 
     adb devices 
6、查看bug报告: 
      adb bugreport 
7、记录无线通讯日志: 
    一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录: 
    adb shell 
    logcat -b radio 
8、获取设备的ID和序列号: 
     adb get-product 
     adb get-serialno 
9、访问数据库SQLite3 
     adb shell 
     sqlite3


logcat过滤

android log : I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}, 其中ActivityManager表示标签,I 表示优先级;

过滤命令:adb logcat tag1:priority1 tag2:priority2 ...

如 adb logcat RIL:I GSM:D *:S,表示输出标签是RIL并且优先级高于I和标签是GSM并且优先级高于D的信息,*:S表示其他标签都不显示;

优先级排序

V — 明细 (最低优先级)
D — 调试
I — 信息
W — 警告
E — 错误
F — 严重错误
S — 无记载 (最高优先级,没有什么会被记载)

其他设置

如果一直调试某个模块,标签和优先级不需要经常换,那么可以设置环境变量ANDROID_LOG_TAGS,如

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

之后,就可以直接使用adb shell logcat了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值