adb 命令

android的adb采用的是server+client的方式,所以adb是支持多个设备同时连接的。通过adb devices命令可以看到所有连接的android设备,而多个设备都连上adb server,如果你想针对某一个设备执行adb命令,可以在adb命令后面加上-s <serial number>,例如adb –s 12345678 push c:/a.txt /data/。adb的设计可以参考http://blog.csdn.net/wbw1985/archive/2010/04/02/5443910.aspx

对于adb shell,后面可以跟的命令主要来自android-1.5/system/core/toolbox里面,如下:

    ls  
    mount  
    cat  
    ps  
    kill  
    ln  
    insmod  
    rmmod  
    lsmod  
    ifconfig  
    setconsole  
    rm  
    mkdir  
    rmdir  
    reboot  
    getevent  
    sendevent  
    date  
    wipe  
    sync  
    umount  
    start  
    stop  
    notify  
    cmp  
    dmesg  
    route  
    hd  
    dd  
    df  
    getprop  
    setprop  
    watchprops  
    log  
    sleep  
    renice  
    printenv  
    smd  
    chmod  
    chown  
    mkdosfs  
    netstat  
    ioctl  
    mv  
    schedtop  
    top  
    iftop  
    id  
    vmstat

具体的意思就不解释了,大家可以去看linux手册或者看android的源码。需要说一下的是ps命令,很多时候我们想只列举出我们需要的进程列表,例如列举出所有运行的app。从ps的源码来看,它是支持filter的,ps app应该可以列举出所有以app开头的进程,但在某些手机里面运行时这个filter又是没用的,可能是这些手机修改了ps的代码。

还有两个比较好用的命令是adb shell am和adb shell pm,这两个命令在frameworks/base/cmds下面。am命令主要用于管理Activity,例如启动,停止Activity(eclipse在运行Activity就使用了这个命令),发送intent;pm命令则主要用于管理应用package的管理,有点像控制面板的添加和删除程序。

am命令的具体用法如下:

usage: am [start|broadcast|instrument|profile] 
am start -D INTENT 
am broadcast INTENT 
am instrument [-r] [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>] 
[-w] <COMPONENT> 
am profile <PROCESS> [start <PROF_FILE>|stop] 
INTENT is described with: 
[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] 
[-c <CATEGORY> [-c <CATEGORY>] ...] 
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] 
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] 
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] 
[-n <COMPONENT>] [-f <FLAGS>] [<URI>] 
The start command starts activity. Use -D option to make 'DebugOption' true. 
The broadcast command sends broadcast. 
The instrument command starts instrumentation. 
Use -r option to make 'rawMode' true. 
Use -e option to add the pair of ARG_NAME and ARG_VALUE into Bundle. 
Use -p option to specify profileFile. 
Use -w option to make 'wait' true in order to new an instance of InstrumentationWatcher. 
Use COMPONENT to specify the name of the instrumentation component. 
The profile command turn on/off profiling in a particular process specified by PROCESS. 
Use start option to turn on and stop to turn off.Use PROF_FILE to specify the file path of profile. 
Use -a to set action specified by ACTION to be performed. 
Use -d to create a Uri(data) which parses the given encoded URI string DATA_URI. 
Use -t to specify the type specified by MIME_TYPE. Use -c to add a new category specified by 
CATEGORY to the intent. 
Use -e or --es to add extended data to the intent.EXTRA_KEY specifies the name of the extra data and 
EXTRA_STRING_VALUE specifies the string data value. 
Use --ez to add extended data to the intent. EXTRA_KEY specifies the name of the extra data and 
EXTRA_BOOLEAN_VALUE specifies the serializable data value. 
Use -e or --ei to add extended data to the intent. EXTRA_KEY specifies the name of the extra data and 
EXTRA_INT_VALUE specifies the serializable data value. 
Use -n to explicitly set the component specified by COMPONENT to handle the intent. 
Use -f to set special flags controlling how this intent is handled.FLAGS specifies the desired flags. 
Use URI to create an intent from a URI.

pm命令的具体用法如下:

usage: pm [list|path|install|uninstall] 
       pm list packages [-f] 
       pm list permission-groups 
       pm list permissions [-g] [-f] [-d] [-u] [GROUP] 
       pm list instrumentation [-f] [TARGET-PACKAGE] 
       pm path PACKAGE 
       pm install [-l] [-r] PATH 
       pm uninstall [-k] PACKAGE 
       pm enable PACKAGE_OR_COMPONENT 
       pm disable PACKAGE_OR_COMPONENT

The list packages command prints all packages.  Use 
the -f option to see their associated file.

The list permission-groups command prints all known 
permission groups.

The list permissions command prints all known 
permissions, optionally only those in GROUP.  Use 
the -g option to organize by group.  Use 
the -f option to print all information.  Use 
the -s option for a short summary.  Use 
the -d option to only list dangerous permissions.  Use 
the -u option to list only the permissions users will see.

The list instrumentation command prints all instrumentations, 
or only those that target a specified package.  Use the -f option 
to see their associated file.

The path command prints the path to the .apk of a package.

The install command installs a package to the system.  Use 
the -l option to install the package with FORWARD_LOCK. Use 
the -r option to reinstall an exisiting app, keeping its data.

The uninstall command removes a package from the system. Use 
the -k option to keep the data and cache directories around 
after the package removal.

The enable and disable commands change the enabled state of 
a given package or component (written as "package/class").

frameworks/base/cmds下面还有一个别的命令,如下 

dumpstate 
dumpsys 
ime 
input 
installd 
runtime 
service 
servicemanager 
surfaceflinger 
svc 
system_server

下面是上述命令的一些输出:

C:/Users/xufan>adb shell dumpstate 
======================================================== 
== dumpstate 
======================================================== 
------ MEMORY INFO ------ 
MemTotal:        94348 kB 
MemFree:          9912 kB 
Buffers:             0 kB 
Cached:          47876 kB 
SwapCached:          0 kB 
Active:          47016 kB 
Inactive:        29980 kB 
SwapTotal:           0 kB 
SwapFree:            0 kB 
Dirty:               0 kB 
Writeback:           0 kB 
AnonPages:       29156 kB 
Mapped:          22948 kB 
Slab:             2992 kB 
SReclaimable:      796 kB 
SUnreclaim:       2196 kB 
PageTables:       2180 kB 
NFS_Unstable:        0 kB 
Bounce:              0 kB 
WritebackTmp:        0 kB 
CommitLimit:     47172 kB 
Committed_AS:   658548 kB 
VmallocTotal:   876544 kB 
VmallocUsed:      8380 kB 
VmallocChunk:   859132 kB

------ CPU INFO ------

User 7%, System 23%, IOW 0%, IRQ 0% 
User 11 + Nice 0 + Sys 33 + Idle 98 + IOW 0 + IRQ 0 + SIRQ 0 = 142

  PID   TID CPU% S     VSS     RSS UID      Thread          Proc 
  743   743  26% R    928K    384K shell    top             top 
  565   581   1% S 177876K  25384K system   er.ServerThread system_server 
  565   570   0% S 177876K  25384K system   Binder Thread # system_server 
  565   571   0% S 177876K  25384K system   Binder Thread # system_server 
  605   605   0% S 105820K  17540K radio    app_process     com.android.phone 
  565   619   0% S 177876K  25384K system   er$SensorThread system_server 
  565   585   0% S 177876K  25384K system   PackageManager  system_server 
  565   586   0% S 177876K  25384K system   FileObserver    system_server 
  565   589   0% S 177876K  25384K system   SyncHandlerThre system_server 
  565   590   0% S 177876K  25384K system   UEventObserver  system_server 
  565   591   0% S 177876K  25384K system   PowerManagerSer system_server 
  565   592   0% S 177876K  25384K system   AlarmManager    system_server 
  565   593   0% S 177876K  25384K system   WindowManager   system_server 
  565   594   0% S 177876K  25384K system   InputDeviceRead system_server 
  565   595   0% S 177876K  25384K system   WindowManagerPo system_server 
  565   596   0% S 177876K  25384K system   InputDispatcher system_server 
  565   597   0% S 177876K  25384K system   ConnectivityThr system_server 
  565   598   0% S 177876K  25384K system   WifiService     system_server 
  565   599   0% S 177876K  25384K system   WifiWatchdogThr system_server 
  565   600   0% S 177876K  25384K system   er.ServerThread system_server 
  565   601   0% S 177876K  25384K system   GpsEventThread  system_server 
  565   602   0% S 177876K  25384K system   AudioService    system_server 
  565   603   0% S 177876K  25384K system   android:unnamed system_server 
  565   604   0% S 177876K  25384K system   android:unnamed system_server 
  565   609   0% S 177876K  25384K system   watchdog        system_server 
  565   640   0% S 177876K  25384K system   r.MountListener system_server 
  565   651   0% S 177876K  25384K system   Binder Thread # system_server 
  565   678   0% S 177876K  25384K system   Binder Thread # system_server 
  605   606   0% S 105820K  17540K radio    HeapWorker      com.android.phone 
  605   607   0% S 105820K  17540K radio    Signal Catcher  com.android.phone 
------ PROCRANK ------



 

C:/Users/xufan>adb shell dumpsys

  Provider mms-sms 
    ContentProviderRecord{436a0040 com.android.providers.telephony.MmsSmsProvide 
r} 
    package=com.android.providers.telephony process=com.android.phone 
    app=ProcessRecord{43638990 605:com.android.phone/1001} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436c8c88 
    name=mms-sms 
    isSyncable=false 
    multiprocess=true initOrder=0 uid=1001 
    clients=[] 
    externals=0

  Published content providers (by class): 
  Provider android.content.SyncProvider 
    ContentProviderRecord{435bceb8 android.content.SyncProvider} 
    package=android process=system 
    app=ProcessRecord{436236b8 565:system/1000} 
    launchingApp=null 
    provider=android.content.ContentProvider$Transport@43634c48 
    name=sync 
    isSyncable=false 
    multiprocess=false initOrder=0 uid=1000 
    clients=[] 
    externals=0 
  Provider com.android.providers.telephony.MmsSmsProvider 
    ContentProviderRecord{436a0040 com.android.providers.telephony.MmsSmsProvide 
r} 
    package=com.android.providers.telephony process=com.android.phone 
    app=ProcessRecord{43638990 605:com.android.phone/1001} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436c8c88 
    name=mms-sms 
    isSyncable=false 
    multiprocess=true initOrder=0 uid=1001 
    clients=[] 
    externals=0 
  Provider com.android.providers.settings.SettingsProvider 
    ContentProviderRecord{435bda90 com.android.providers.settings.SettingsProvid 
er} 
    package=com.android.providers.settings process=system 
    app=ProcessRecord{436236b8 565:system/1000} 
    launchingApp=null 
    provider=android.content.ContentProvider$Transport@435a2b58 
    name=settings 
    isSyncable=false 
    multiprocess=false initOrder=100 uid=1000 
    clients=[ProcessRecord{4371bad0 655:com.android.alarmclock/10000}, ProcessRe 
cord{43638990 605:com.android.phone/1001}] 
    externals=0 
  Provider com.android.providers.userdictionary.UserDictionaryProvider 
    ContentProviderRecord{436a2398 com.android.providers.userdictionary.UserDict 
ionaryProvider} 
    package=com.android.providers.userdictionary process=android.process.acore 
    app=ProcessRecord{43645bc0 608:android.process.acore/10004} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436ccca0 
    name=user_dictionary 
    isSyncable=false 
    multiprocess=false initOrder=0 uid=10004 
    clients=[] 
    externals=0 
  Provider com.android.providers.contacts.ContactsProvider 
    ContentProviderRecord{436a25e8 com.android.providers.contacts.ContactsProvid 
er} 
    package=com.android.providers.contacts process=android.process.acore 
    app=ProcessRecord{43645bc0 608:android.process.acore/10004} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436cd910 
    name=contacts;call_log 
    isSyncable=false 
    multiprocess=false initOrder=0 uid=10004 
    clients=[] 
    externals=0 
  Provider com.android.providers.drm.DrmProvider 
    ContentProviderRecord{4361c528 com.android.providers.drm.DrmProvider} 
    package=com.android.providers.drm process=android.process.media 
    app=ProcessRecord{436e89e8 644:android.process.media/10003} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@435ffed0 
    name=drm 
    isSyncable=false 
    multiprocess=false initOrder=0 uid=10003 
    clients=[] 
    externals=0 
  Provider com.android.launcher.LauncherProvider 
    ContentProviderRecord{436a2710 com.android.launcher.LauncherProvider} 
    package=com.android.launcher process=android.process.acore 
    app=ProcessRecord{43645bc0 608:android.process.acore/10004} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436cdff0 
    name=com.android.launcher.settings 
    isSyncable=false 
    multiprocess=false initOrder=0 uid=10004 
    clients=[] 
    externals=0 
  Provider com.android.providers.media.MediaProvider 
    ContentProviderRecord{436e8728 com.android.providers.media.MediaProvider} 
    package=com.android.providers.media process=android.process.media 
    app=ProcessRecord{436e89e8 644:android.process.media/10003} 
    launchingApp=ProcessRecord{436e89e8 644:android.process.media/10003} 
    provider=android.content.ContentProviderProxy@435ff638 
    name=media 
    isSyncable=false 
    multiprocess=false initOrder=0 uid=10003 
    clients=[] 
    externals=0 
  Provider com.android.providers.downloads.DownloadProvider 
    ContentProviderRecord{4369e808 com.android.providers.downloads.DownloadProvi 
der} 
    package=com.android.providers.downloads process=android.process.media 
    app=ProcessRecord{436e89e8 644:android.process.media/10003} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@43600a50 
    name=downloads 
    isSyncable=false 
    multiprocess=false initOrder=0 uid=10003 
    clients=[] 
    externals=0 
  Provider com.android.providers.telephony.MmsProvider 
    ContentProviderRecord{436a0f28 com.android.providers.telephony.MmsProvider} 
    package=com.android.providers.telephony process=com.android.phone 
    app=ProcessRecord{43638990 605:com.android.phone/1001} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436c93a8 
    name=mms 
    isSyncable=false 
    multiprocess=true initOrder=0 uid=1001 
    clients=[] 
    externals=0 
  Provider com.android.googlesearch.SuggestionProvider 
    ContentProviderRecord{436a24c0 com.android.googlesearch.SuggestionProvider} 
    package=com.android.googlesearch process=android.process.acore 
    app=ProcessRecord{43645bc0 608:android.process.acore/10004} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436cd288 
    name=com.android.googlesearch.SuggestionProvider 
    isSyncable=false 
    multiprocess=false initOrder=0 uid=10004 
    clients=[] 
    externals=0 
  Provider com.android.providers.telephony.TelephonyProvider 
    ContentProviderRecord{436a1030 com.android.providers.telephony.TelephonyProv 
ider} 
    package=com.android.providers.telephony process=com.android.phone 
    app=ProcessRecord{43638990 605:com.android.phone/1001} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436c9988 
    name=telephony 
    isSyncable=false 
    multiprocess=true initOrder=0 uid=1001 
    clients=[] 
    externals=0 
  Provider com.android.providers.telephony.SmsProvider 
    ContentProviderRecord{436a1138 com.android.providers.telephony.SmsProvider} 
    package=com.android.providers.telephony process=com.android.phone 
    app=ProcessRecord{43638990 605:com.android.phone/1001} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436ca038 
    name=sms 
    isSyncable=false 
    multiprocess=true initOrder=0 uid=1001 
    clients=[] 
    externals=0 
  Provider com.android.phone.SimProvider 
    ContentProviderRecord{436a1240 com.android.phone.SimProvider} 
    package=com.android.phone process=com.android.phone 
    app=ProcessRecord{43638990 605:com.android.phone/1001} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@436ca648 
    name=sim 
    isSyncable=false 
    multiprocess=true initOrder=0 uid=1001 
    clients=[] 
    externals=0 
  Provider com.android.alarmclock.AlarmProvider 
    ContentProviderRecord{4371d520 com.android.alarmclock.AlarmProvider} 
    package=com.android.alarmclock process=com.android.alarmclock 
    app=ProcessRecord{4371bad0 655:com.android.alarmclock/10000} 
    launchingApp=null 
    provider=android.content.ContentProviderProxy@435e2c10 
    name=com.android.alarmclock 
    isSyncable=false 
    multiprocess=false initOrder=0 uid=10000 
    clients=[] 
    externals=0

Granted Uri Permissions: 
------------------------------------------------------------------------------- 
DUMP OF SERVICE activity.senders: 
Intent Senders in Current Activity Manager State: 
  IntentSender IntentSenderRecord{435bb968 android broadcastIntent} 
    packageName=android type=broadcastIntent flags=0x0 
    activity=null who=null 
    requestCode=0 requestResolvedType=null 
    requestIntent=Intent { action=android.content.syncmanager.SYNC_ALARM } 
    sent=false canceled=false 
  IntentSender IntentSenderRecord{4359f4e0 android broadcastIntent} 
    packageName=android type=broadcastIntent flags=0x0 
    activity=null who=null 
    requestCode=0 requestResolvedType=null 
    requestIntent=Intent { action=android.intent.action.DATE_CHANGED } 
    sent=false canceled=false 
  IntentSender IntentSenderRecord{43638b10 android broadcastIntent} 
    packageName=android type=broadcastIntent flags=0x0 
    activity=null who=null 
    requestCode=0 requestResolvedType=null 
    requestIntent=Intent { action=com.android.service.Watchdog.REBOOT } 
    sent=false canceled=false 
  IntentSender IntentSenderRecord{436714c0 android broadcastIntent} 
    packageName=android type=broadcastIntent flags=0x0 
    activity=null who=null 
    requestCode=0 requestResolvedType=null 
    requestIntent=Intent { action=com.android.server.WifiManager.action.DEVICE_I 
DLE } 
    sent=false canceled=false 
  IntentSender IntentSenderRecord{435e56d8 android broadcastIntent} 
    packageName=android type=broadcastIntent flags=0x0 
    activity=null who=null 
    requestCode=0 requestResolvedType=null 
    requestIntent=Intent { action=android.intent.action.TIME_TICK flags=0x400000 
00 } 
    sent=true canceled=false 
  IntentSender IntentSenderRecord{435adb08 android broadcastIntent} 
    packageName=android type=broadcastIntent flags=0x0 
    activity=null who=null 
    requestCode=0 requestResolvedType=null 
    requestIntent=Intent { action=android.content.syncmanager.SYNC_POLL_ALARM } 
    sent=true canceled=false 
  IntentSender IntentSenderRecord{4359edf0 android broadcastIntent} 
    packageName=android type=broadcastIntent flags=0x0 
    activity=null who=null 
    requestCode=0 requestResolvedType=null 
    requestIntent=Intent { action=com.android.service.Watchdog.CHECKUP } 
    sent=false canceled=false 
  IntentSender IntentSenderRecord{436e3198 android broadcastIntent} 
    packageName=android type=broadcastIntent flags=0x0 
    activity=null who=null 
    requestCode=0 requestResolvedType=null 
    requestIntent=Intent { } 
    sent=false canceled=false 
------------------------------------------------------------------------------- 
DUMP OF SERVICE activity.services: 
Services in Current Activity Manager State: 
------------------------------------------------------------------------------- 
DUMP OF SERVICE alarm: 
Current Alarm Manager state:

  Realtime alarms that are scheduled: 
  RTC #1: 
    Alarm{436358a0 type 1 android} 
    type=1 when=1272931200000 repeatInterval=0 count=0 
    operation=PendingIntent{43617020 target IntentSenderRecord{4359f4e0 android 
broadcastIntent}} 
  RTC #0: 
    Alarm{43695080 type 1 android} 
    type=1 when=1272884280000 repeatInterval=0 count=0 
    operation=PendingIntent{4358e9d8 target IntentSenderRecord{435e56d8 android 
broadcastIntent}}

  Elapsed realtime wakeup alarms that are scheduled: 
  ELAPSED_REALTIME_WAKEUP #0: 
    Alarm{4361e8e8 type 2 android} 
    type=2 when=90877805 repeatInterval=0 count=0 
    operation=PendingIntent{435adc60 target IntentSenderRecord{435adb08 android 
broadcastIntent}}

  Broadcast ref count: 0

  Alarm Stats: 
  android 
    4729ms running, 1 wakeups 
    1 alarms: Intent { action=android.content.syncmanager.SYNC_POLL_ALARM flags= 
0x4 (has extras) } 
    28 alarms: Intent { action=android.intent.action.TIME_TICK flags=0x40000004 
(has extras) } 
------------------------------------------------------------------------------- 
DUMP OF SERVICE appwidget: 
Providers: (size=3) 
  [0] provder=ComponentInfo{com.android.alarmclock/com.android.alarmclock.Analog 
AppWidgetProvider} min=(146x146) updatePeriodMillis=0 initialLayout=2130903043 z 
ombie=false 
  [1] provder=ComponentInfo{com.android.camera/com.android.camera.PhotoAppWidget 
Provider} min=(146x146) updatePeriodMillis=0 initialLayout=2130903052 zombie=fal 
se 
  [2] provder=ComponentInfo{com.android.music/com.android.music.MediaAppWidgetPr 
ovider} min=(294x72) updatePeriodMillis=0 initialLayout=2130903040 zombie=false 
AppWidgetIds: (size=1) 
  [0] appWidgetId=1 host=1024/com.android.launcher provider=ComponentInfo{com.an 
droid.alarmclock/com.android.alarmclock.AnalogAppWidgetProvider} host.callbacks= 
com.android.internal.appwidget.IAppWidgetHost$Stub$Proxy@4363f610 views=android. 
widget.RemoteViews@43731e90 
Hosts: (size=1) 
  [0] packageName=com.android.launcher uid=10004 hostId=1024 callbacks=com.andro 
id.internal.appwidget.IAppWidgetHost$Stub$Proxy@4363f610 instances.size=1 zombie 
=false 
------------------------------------------------------------------------------- 
DUMP OF SERVICE audio:

 

C:/Users/xufan>adb shell ime list 
com.android.inputmethod.latin/.LatinIME: 
  mId=com.android.inputmethod.latin/.LatinIME mSettingsActivityName=com.android. 
inputmethod.latin.LatinIMESettings 
  mIsDefaultResId=0x7f060001 
  Service: 
    Filter: null 
    priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false 
    labelRes=0x0 nonLocalizedLabel=null icon=0x0 
    ServiceInfo: 
com.android.inputmethod.pinyin/.PinyinIME: 
  mId=com.android.inputmethod.pinyin/.PinyinIME mSettingsActivityName=com.androi 
d.inputmethod.pinyin.SettingsActivity 
  mIsDefaultResId=0x7f060000 
  Service: 
    Filter: null 
    priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false 
    labelRes=0x0 nonLocalizedLabel=null icon=0x0 
    ServiceInfo:

 

C:/Users/xufan>adb shell input 
usage: input [text|keyevent] 
       input text <string> 
       input keyevent <event_code>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值