ADB是什么,做android开发的没有不知道的。

window下执行cmd,输入adb help就会打印adb都可以做的事情,包含 adb push 。。adb pull 。。 adb devices adb install。。。 等等。。而且一搜一大把。


当中有一个命令叫做 adb shell,android是基于linux的,shell模式下linux的命令但是很多的,android去掉了很多linux的命令,那么从这写命令里面又可以发现什么宝藏呢?寻宝之旅开启!!


首先linux的shell模式有很多命令,比如 ls cd mkdir su ps vim等等很多控制命令,这些在android上都是支持的。可是它是android的内核啊,应该有些特殊点的吧。


通过命令cd /system/bin 进入bin文件夹查看一下。


# cd /system/bincd /system/bin# lslsBlobCache_testInputChannel_testInputDispatcher_testInputEvent_testInputPublisherAndConsInputReader_testLooper_testObbFile_testString8_testUnicode_testZipFileRO_testadbamapp_processapplypatchapplypatch_staticashaudioloopbmgrbootanimationbubugreportcatcheck_prereqchmodchowncmpdalvikvmdatedddebuggerddecoderdexoptdfdhcpcddmesgdumpstatedumpsysflash_imagefsck_msdosgdbjithelpergdbservergeteventgetpropgziphdidifconfigiftopimeinputinsmodinstalldioctlioniceip6tablesiptableskeystorekeystore_clikilllinkerlnloglogcatlogwrapperlslsmodlsofmediaservermkdirmonkeymountmtpdmvnandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspingping6pmpppdprintenvpsqemu-propsqemudrracoonradiooptionsrebootrecordrecordvideorecoveryrenicerildrmrmdirrmmodrouterun-asschedtestschedtopscreencapscreenshotsdcardsendeventsensorserviceserviceservicemanagersetconsolesetpropsf2shshowleasesimg2imgskia_testsleepsmdstagefrightstartstopstreamsurfaceflingersvcsyncsystem_servertestid3toolboxtoptouchumountupdateruptimevdcvmstatvoldwatchpropswipe#

噢 my god 命令还是非常多的嘛!

我们一般能够通过 命令 -h 来查看介绍,比如:

# am -ham -husage: am [subcommand] [options]usage: am start [-D] [-W] [-P <FILE>] [--start-profiler <FILE>]               [--R COUNT] [-S] <INTENT>       am startservice <INTENT>       am force-stop <PACKAGE>       am kill <PACKAGE>       am kill-all       am broadcast <INTENT>       am instrument [-r] [-e <NAME> <VALUE>] [-p <FILE>] [-w]               [--no-window-animation] <COMPONENT>       am profile [looper] start <PROCESS> <FILE>       am profile [looper] stop [<PROCESS>]       am dumpheap [flags] <PROCESS> <FILE>       am set-debug-app [-w] [--persistent] <PACKAGE>       am clear-debug-app       am monitor [--gdb <port>]       am screen-compat [on|off] <PACKAGE>       am display-size [reset|MxN]       am to-uri [INTENT]       am to-intent-uri [INTENT]am start: start an Activity.  Options are:    -D: enable debugging    -W: wait for launch to complete    --start-profiler <FILE>: start profiler and send results to <FILE>    -P <FILE>: like above, but profiling stops when app goes idle    -R: repeat the activity launch <COUNT> times.  Prior to each repeat,        the top activity will be finished.    -S: force stop the target app before starting the activityam startservice: start a Service.am force-stop: force stop everything associated with <PACKAGE>.am kill: Kill all processes associated with <PACKAGE>.  Only kills.  processes that are safe to kill -- that is, will not impact the user  experience.am kill-all: Kill all background processes.am broadcast: send a broadcast Intent.am instrument: start an Instrumentation.  Typically this target <COMPONENT>  is the form <TEST_PACKAGE>/<RUNNER_CLASS>.  Options are:    -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT).  Use with        [-e perf true] to generate raw output for performance measurements.    -e <NAME> <VALUE>: set argument <NAME> to <VALUE>.  For test runners a        common form is [-e <testrunner_flag> <value>[,<value>...]].    -p <FILE>: write profiling data to <FILE>    -w: wait for instrumentation to finish before returning.  Required for        test runners.    --no-window-animation: turn off window animations will running.am profile: start and stop profiler on a process.am dumpheap: dump the heap of a process.  Options are:    -n: dump native heap instead of managed heapam set-debug-app: set application <PACKAGE> to debug.  Options are:    -w: wait for debugger when application starts    --persistent: retain this valueam clear-debug-app: clear the previously set-debug-app.am monitor: start monitoring for crashes or ANRs.    --gdb: start gdbserv on the given port at crash/ANRam screen-compat: control screen compatibility mode of <PACKAGE>.am display-size: override display size.am to-uri: print the given Intent specification as a URI.am to-intent-uri: print the given Intent specification as an intent: URI.<INTENT> specifications include these flags and arguments:    [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]    [-c <CATEGORY> [-c <CATEGORY>] ...]    [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]    [--esn <EXTRA_KEY> ...]    [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]    [--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]    [--el <EXTRA_KEY> <EXTRA_LONG_VALUE> ...]    [--eu <EXTRA_KEY> <EXTRA_URI_VALUE> ...]    [--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]]    [--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]    [-n <COMPONENT>] [-f <FLAGS>]    [--grant-read-uri-permission] [--grant-write-uri-permission]    [--debug-log-resolution] [--exclude-stopped-packages]    [--include-stopped-packages]    [--activity-brought-to-front] [--activity-clear-top]    [--activity-clear-when-task-reset] [--activity-exclude-from-recents]    [--activity-launched-from-history] [--activity-multiple-task]    [--activity-no-animation] [--activity-no-history]    [--activity-no-user-action] [--activity-previous-is-top]    [--activity-reorder-to-front] [--activity-reset-task-if-needed]    [--activity-single-top] [--activity-clear-task]    [--activity-task-on-home]    [--receiver-registered-only] [--receiver-replace-pending]    [--selector]    [<URI> | <PACKAGE> | <COMPONENT>]Error: Unknown command: -h

尽管-h没法识别,可还是打印出了參数的。


经常使用命令介绍


1、am

am命令是很实用的一个命令,使用此命令能够启动 activity, services;发送 broadcast等等。

使用实例:如启动一个 Activity:

格式:adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。

实例1:C:\Users\Administrator>adb shell am start -n com.android.camera/.CameraStarting: Intent { cmp=com.android.camera/.Camera }

实例2:(带extra 的 intent)C:\Users\Administrator>adb shell am start -n com.android.camera/.Camera -e abc helloStarting: Intent { cmp=com.android.camera/.Camera (has extras) }当中 extra 的 key 为 abc ,value 为字串 "hello"

还能够发送命令模拟手机低电环境:

实例:adb shell am broadcast -a android.intent.action.BATTERY_CHANGED --ei "level" 3 --ei "scale" 100

2、getprop/watchprops

getprop列出系统的属性,前面十名字,后面是值
# getprop
getprop
[ro.secure]: [0]
[ro.allow.mock.location]: [1]
[ro.debuggable]: [1]
[persist.service.adb.enable]: [1]
[ro.kernel.qemu]: [1]
[ro.kernel.console]: [ttyS0]
[ro.kernel.android.checkjni]: [1]
[ro.kernel.android.qemud]: [ttyS1]
[ro.kernel.android.ndns]: [1]
[ro.factorytest]: [0]
[ro.serialno]: []

3、watchprosp动态监视这些属性的变化,比方我改动系统的语言为中文,就会打印出:
# watchprops
watchprops
1269420653 persist.sys.language = 'zh'
1269420653 persist.sys.language = 'CN'

4、 wipe <system|data|all>
wipe表示清除模拟器或者真机上的数据,比方你的模拟器用了非常久,装了非常多软件就能够用这个来清除
system表示清除 /system下的数据
data表述清除 /data 下的数据

5、dumpsys命令

主要用来获取一些系统service的信息,也能够对这些服务做一些简单的控制。

在使用此命令之前要先查看一下有哪些组件是能够使用这个命令的

C:\Users\Administrator>adb shellshell@android:/ $ dumpsys | grep DUMPdumpsys | grep DUMPDUMP OF SERVICE Binder.Pged:DUMP OF SERVICE ProtocolParaManagerService:DUMP OF SERVICE SurfaceFlinger:DUMP OF SERVICE accessibility:DUMP OF SERVICE account:DUMP OF SERVICE activity:DUMP OF SERVICE alarm:DUMP OF SERVICE appwidget:DUMP OF SERVICE audio:DUMP OF SERVICE audio.om:DUMP OF SERVICE backup:DUMP OF SERVICE battery:DUMP OF SERVICE batteryinfo:DUMP OF SERVICE bluetooth_manager:DUMP OF SERVICE clipboard:

还有非常多,比方activity的信息

C:\Users\Administrator>adb shell dumpsys activity > e:\activity.txtC:\Users\Administrator>
因为activity的信息太多了,所以将信息输出到文件。


查看程序内存使用情况,dumpsys meminfo YoupackageName

C:\Users\Administrator>adb shell dumpsys meminfo cn.com.zte.ucApplications Memory Usage (kB):Uptime: 2341477 Realtime: 2341464** MEMINFO in pid 5851 [cn.com.zte.uc] **                         Shared  Private     Heap     Heap     Heap                   Pss    Dirty    Dirty     Size    Alloc     Free                ------   ------   ------   ------   ------   ------       Native       72       12       72     9012     5361     3650       Dalvik    28915     5784    28768    28624    26812     1812       Cursor        0        0        0       Ashmem        0        0        0    Other dev        4       60        0     .so mmap     3334      864     1196    .jar mmap       20        0        0    .apk mmap      238        0        0    .ttf mmap      482        0        0    .dex mmap     4576        0       28   Other mmap     1151        4       40      Unknown     5480       36     5480        TOTAL    44272     6760    35584    37636    32173     5462 Objects               Views:      552         ViewRootImpl:        1         AppContexts:       14           Activities:       11              Assets:        4        AssetManagers:        4       Local Binders:       33        Proxy Binders:       29    Death Recipients:        0     OpenSSL Sockets:        0 SQL         MEMORY_USED:      352  PAGECACHE_OVERFLOW:      182          MALLOC_SIZE:       62 DATABASES      pgsz     dbsz   Lookaside(b)          cache  Dbname         4      268            477      539/60/25  /data/data/cn.com.zte.uc/databases/E300 Asset Allocations    zip:/data/app/cn.com.zte.uc-1.apk:/resources.arsc: 192KC:\Users\Administrator>

假设dumpsys不能用,检查你的manifest.xml是不是加了这个permission:
android.permission.DUMP


6、pm命令 (2014年9月26日更新)

这个命令相同很强大。来看下它都有哪些用处。

usage: pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]       pm list permission-groups       pm list permissions [-g] [-f] [-d] [-u] [GROUP]       pm list instrumentation [-f] [TARGET-PACKAGE]       pm list features       pm list libraries       pm list users       pm path PACKAGE       pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f]                  [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>]                  [--originating-uri <URI>] [--referrer <URI>] PATH       pm uninstall [-k] PACKAGE       pm clear [--user USER_ID] PACKAGE       pm enable [--user USER_ID] PACKAGE_OR_COMPONENT       pm disable [--user USER_ID] PACKAGE_OR_COMPONENT       pm disable-user [--user USER_ID] PACKAGE_OR_COMPONENT       pm grant PACKAGE PERMISSION       pm revoke PACKAGE PERMISSION       pm set-install-location [0/auto] [1/internal] [2/external]       pm get-install-location       pm set-permission-enforced PERMISSION [true|false]       pm trim-caches DESIRED_FREE_SPACE       pm create-user USER_NAME       pm remove-user USER_ID       pm get-max-userspm list packages: prints all packages, optionally only  those whose package name contains the text in FILTER.  Options:    -f: see their associated file.    -d: filter to only show disbled packages.    -e: filter to only show enabled packages.    -s: filter to only show system packages.    -3: filter to only show third party packages.    -i: see the installer for the packages.    -u: also include uninstalled packages.pm list permission-groups: prints all known permission groups.pm list permissions: prints all known permissions, optionally only  those in GROUP.  Options:    -g: organize by group.    -f: print all information.    -s: short summary.    -d: only list dangerous permissions.    -u: list only the permissions users will see.pm list instrumentation: use to list all test packages; optionally  supply <TARGET-PACKAGE> to list the test packages for a particular  application.  Options:    -f: list the .apk file for the test package.pm list features: prints all features of the system.pm list users: prints all users on the system.pm path: print the path to the .apk of the given PACKAGE.pm install: installs a package to the system.  Options:    -l: install the package with FORWARD_LOCK.    -r: reinstall an exisiting app, keeping its data.    -t: allow test .apks to be installed.    -i: specify the installer package name.    -s: install package on sdcard.    -f: install package on internal flash.    -d: allow version code downgrade.pm uninstall: removes a package from the system. Options:    -k: keep the data and cache directories around after package removal.pm clear: deletes all data associated with a package.pm enable, disable, disable-user: these commands change the enabled state  of a given package or component (written as "package/class").pm grant, revoke: these commands either grant or revoke permissions  to applications.  Only optional permissions the application has  declared can be granted or revoked.pm get-install-location: returns the current install location.    0 [auto]: Let system decide the best location    1 [internal]: Install on internal device storage    2 [external]: Install on external mediapm set-install-location: changes the default install location.  NOTE: this is only intended for debugging; using this can cause  applications to break and other undersireable behavior.    0 [auto]: Let system decide the best location    1 [internal]: Install on internal device storage    2 [external]: Install on external mediapm trim-caches: trim cache files to reach the given free space.pm create-user: create a new user with the given USER_NAME,  printing the new user identifier of the user.pm remove-user: remove the user with the given USER_IDENTIFIER,  deleting all data associated with that user
比如:打印全部已知的权限

shell@android:/ $ pm list permissionspm list permissionsAll Permissions:permission:com.sina.weibo.permission.PUSH_MSG_BROADCAST_PERMISSIONpermission:com.google.android.gms.permission.GAMES_DEBUG_SETTINGSpermission:com.tencent.photos.permission.DATA    ..........shell@android:/ $


额。有点多就省略了,有兴趣就查下。只是这查起来就非常具体了。。还有安装 卸载,清空包,获取/改动安装路径,删除用户,创建用户,清理缓存,查看安装过的包名 等等。。








更多相关文章

  1. androidのsms,mms短彩信数据库
  2. Android学习09-----Android中数据的存储和访问 (3) By SQLite
  3. Android中SharedPreference实例
  4. Android数据存储(总结篇)
  5. android APK 带数据库
  6. android 通过usb 读取数据
  7. android开发数据存储方式
  8. Android数据传递

随机推荐

  1. 通过 按钮 bundle 传过来 变换Q币图片
  2. 申请android google map API key
  3. Android(安卓)日志打印工具类 可显示打印
  4. android 发送短信的两种方式
  5. android.support.v4.widget.DrawerLayout
  6. Android(安卓)命令行手动编译打包详解
  7. 关于Android证书申请配置
  8. Ubuntu 14.10+NDK+ffmpeg编译+Android
  9. android 平台使用ldap服务
  10. android 打开系统设置界面