为了账号安全,请及时绑定邮箱和手机立即绑定

你不知道的Android命令: ADB 在命令行下的使用技巧.

标签:
Android
概念 和 使用前的准备

ADB : Android Debug Bridge. 用来调试mobile phone的工具。

最常见的功能,是查看日志。 ^_^

使用之前,务必确保 android 启动了开发者模式

1.adb push/pull (对于 huawei mate: $ adb push xx.apk /storage/sdcard0 ,然后就可以手动打开手机的文件夹,根目录下就会发现apk文件了)

2.adb shell

shell 的主要命令: logcat
  1. logcat, 可以看到android中的输出。 这个非常重要,我们单独说:
  2. dumpsys: 保存系统的数据.
  3. dumpstate: 保存系统的状态
  4. dmsg (debug kernel message)
  5. start/stop
如何看日志

只要是在Android 的java代码中,使用了 Log.d() 的语句,就会保存LOG信息, 就可以通过 adb shell logcat 来读取。

verbose/debug/information/warning/error 总共有5种形式。


$ adb shell   (进来后,你会发现, Android下支持 df, ls, ll , top, ps, cat ,echo, touch 等 大部分Linux命令。) 

/> logcat 

然后就会发现,打印出来的都是实时的log. (都是 /dev/log下 )


shell@android:/ $ logcat
--------- beginning of /dev/log/main
D/wpa_supplicant(  444): wpa_s 0x40f4d7a8 cmd SIGNAL_POLL
D/wpa_supplicant(  444): RX ctrl_iface - hexdump(len=11): 53 49 47 4e 41 4c 5f 50 4f 4c 4c
D/wpa_supplicant(  444): nl80211: survey data missing!
D/wpa_supplicant(  444): ctrl_iface: SIGNAL_POLL
D/wpa_supplicant(  444): wpa_s 0x40f4d7a8 cmd SIGNAL_POLL
D/wpa_supplicant(  444): RX ctrl_iface - hexdump(len=11): 53 49 47 4e 41 4c 5f 50 4f 4c 4c
D/wpa_supplicant(  444): ctrl_iface: SIGNAL_POLL
D/wpa_supplicant(  444): nl80211: survey data missing!
E/BatteryService(  348): set value: false
E/BatteryService(  348): set value: true
E/BatteryService(  348): set value: true
--------- beginning of /dev/log/system
I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}

日志在刷刷刷的滚动啊~!

上面打印的都是 /dev/log 下的文件, 现在看来,有这么几个文件:


shell@android:/dev/log $ ls -al
crw-rw-rw- root     log       10,  47 2015-04-11 14:08 events
crw-rw--w- root     log       10,  44 2015-04-11 14:08 exception
crw-rw--w- root     log       10,  48 2015-04-11 14:08 main
crw-rw--w- root     log       10,  46 2015-04-11 14:08 radio
crw-rw--w- root     log       10,  45 2015-04-11 14:08 system

比较奇怪的是, 10, 47, 10, 44 并不是文件的大小, 我们使用 cat 命令可以查看,但是看到的却是部分乱码. 应该是android 直接把日志给压缩了? 不清楚。 所以还是建议用 logcat grep 来查看。


PushLogAC2317[ReceiverDispatcher-45]PushState get action :com.huawei.intent.action.PUSH(pushagent/null:PushLogAC2317[ReceiverDispatcher-45]enter ConnectMgrProcessor:onReceive(intent:Intent { act=com.huawei.android.push.intent.MSG_SENT (has extras) } context:com.huawei.android.pushagent.PushService@41e84328(puPushLogAC2317[ReceiverDispatcher-45]enter AlarmTools:setDelayAlarm(intent:Intent { act=com.huawei.android.push.intent.HEARTBEAT_RSP_TIMEOUT (has extras) } interval:10000ms, context:com.huawei.android.pushageAlarmManagerWakeup alarm[0] {2015 4 月 11 14:50:10 +0800} (com.huawei.android.pushagent) repeatInterval: 0w(�PB�(U��PushLogAC2317[ReceiverDispatcher-45]PushState get action :com.huawei.android.push.intent.MSG_SENT(pushagent/null:-1)J�xx�(UBFdalvikvmRefusing to reopen boot DEX '/system/framework/hwframework.jar'��xx�(U���

对日志的一点儿解释:


I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}

I 表示是information 级别, ActiviryManger 就是在log时设置好的。可以认为是类名。

  • logcat *:E : 只显示 error 和以上级别的log
  • logcat MyClass:I : 只显示跟MyClass 相关的内容, 最低级别是I

注意: logcat Class:I 在我的机器上(4.1 华为mate1 ) 不起作用。

解决办法1 : (在 adb shell 中操作)


$ adb shell
/>logcat -s "browser","webkit"

解决办法2: ( 这里是在linux console 中操作)


$ adb shell logcat  grep xxoo  
active manager

/> am start -a android.intent.action.VIEW

package manager

/> pm install/uninstall com.example.MyApp

/> pm list packages com.happysoft # => 列出所有包含 com.happysoft的package

录像

/> screenrecord /sdcard/demo.mp4


# 先进入  adb shell
$ adb shell  

# 下面的内容相当于直接运行在手机中: 
shell@ $ screenrecord --verbose /sdcard/demo.mp4  
(press Ctrl-C to stop)
shell@ $ exit

# 把刚才录制的视频, 从手机拉出来.
$ adb pull /sdcard/demo.mp4

ADB 也可以通过无线来连接。 具体略。

点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消