zoukankan      html  css  js  c++  java
  • Adb am/pm的使用

    am

    am全称activity manager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等。当你在adb shell命令下执行am命令:

    am <command>
    你也可以在adb shell前执行am命令:
    adb shell am start -a android.intent.action.VIEW
    关于一些am命令的介绍:
    start [options] <INTENT> :启动activity通过指定的intent参数。具体intent参数参照官方表。

    startservice [options] <INTENT> : 启动service通过指定的intent参数。具体intent跟start命令参数相同。

    force-stop <PACKAGE> : 强制停止指定的package包应用。

    kill [options] <PACKAGE> :杀死指定package包应用进程,该命令在安全模式下杀死进程,不影响用户体验。参数选项:--user <USER_ID> | all | current: 指定user进程杀死,如果不指定默认为所有users。(关于USER_ID下面会介绍到)

    kill-all :杀死所有的后台进程。

    broadcast [options] <INTENT> :发送一个intent。具体intent参数参照start命令参数。参数选项:--user <USER_ID> | all | current: 指定user进程杀死,如果不指定默认为所有users。

    instrument [options] <COMPONENT> :测试命令,不多作介绍。

    profile start <PROCESS> <FILE> :在<PROCESS>进程中运行profile,分析结果写到<FILE>里。

    profile stop <PROCESS> :停止profile。

    set-debug-app [options] <PACKAGE> :设置package包应用为debug模式。参数选项:-w|--persistent:等待进入调试模式,保留值。

    clear-debug-app :清空之前用set-debug-app命令设置的package包应用。

    以下命令查看官网:
    monitor [options]
    screen-compat [on|off] <PACKAGE>
    display-size [reset|<WxH>]
    display-density <dpi>
    to-uri <INTENT>
    to-intent-uri <INTENT>

    pm

    pm全称package manager,你能使用pm命令去模拟android行为或者查询设备上的应用等,当你在adb shell命令下执行pm命令:

    pm path packname   查看apk安装的路径
    pm install -r -f -s apppath  安装apk,r 强制安装,f 安装手机内存 s 安装sdcard
    pm uninstall -k packname    卸载应用 -k 保留应用数据 /data/data/packname下的数据 或者 /sdcard/Android/data/packnmae
    pm enable packname      设置应用为可用,或者组件不可用 组件跟类的完整路径  
    pm disable packname          设置应用为不可用,在手机上就隐藏了 

    涨姿势:disable --冻结的原理
     1).冻结应用 找到应用的 MainActivity(即MAIN,LAUNCHER):# pm disable com.example.test/com.test.MainActivity   (完整路径:包名/类名)
     2). 禁止开机启动 找到对就的receiver(即action与MainActivity的action相同的):# pm disable com.example.test/com.test.BootBroadReceiver   (完整路径:包名/类名)

    pm set-install-location 0 1 2  设置应用安装的默认目录 0 auto 1 手机内存 2 sdcard
    pm get-install-location  获取应用安装方式
    pm clear packname 清除应用缓存数据 

    问1:软件搬家怎么实现的?
    答:再安装一遍就行了:# pm install -r -f /mnt/asec/com.zhaopin.social-1/pkg.apk
       查看:# pm path com.zhaopin.social  
       显示: pm path com.zhaopin.social
                package:/data/app/com.zhaopin.social-1.apk
    问2:那智能安装 是怎么做的呢?
    答:它有可能会判断一下 手机内存 和SD卡空间。查看空间大小的命令:# df  /sdcard   ;# df  /data

    常用命令:
    ① 查看端口号 --- netstat -oan
    ② 查看一个apk的包名 --- aapt d badging  apkpath

    Android下用户分类:uid,gid 越小 权限越高
    root      uid 0              gid 0 
    system uid 1000        gid 1000
    shell     uid 2000        gid 2000
    app      uid >10000    gid >10000
    查看的命令:① whoami  ②查看id:$ id

    其他pm命令:

    list packages [options] <FILTER> :打印所有包,选择性的查询包列表。参数选项:-f:查看关联文件,即应用apk的位置跟对应的包名(如:package:/system/app /MusicPlayer.apk=com.sec.android.app.music);-d:查看disabled packages;-e:查看enable package;-s:查看系统package;-3:查看第三方package;-i:查看package的对应安装者(如:1、 package:com.tencent.qqmusic installer=null 2、package:com.tencent.qqpim installer=com.android.vending);-u:查看曾被卸载过的package。(卸载后又重新安装依然会被列 入);--user<USER_ID>:The user space to query。

    list permission-groups :打印所有已知的权限群组。

    list permissions [options] <GROUP> :选择性的打印权限。参数选项:

    list features :设备特性。硬件之类的性能。

    list libraries :当前设备支持的libs。

    list users :系统上所有的users。(上面提到的USER_ID查询方式,如:UserInfo{0:Primary:3}那么USER_ID为0)

    clear <PACKAGE> :对指定的package删除所有数据。

    disable-user [options] <PACKAGE_OR_COMPONENT> :参数选项:--user <USER_ID>: The user to disable.
    grant <PACKAGE_PERMISSION> :授权给应用。

    revoke <PACKAGE_PERMISSION> :撤销权限。

    set-install-location <LOCATION> :设置默认的安装位置。其中0:让系统自动选择最佳的安装位置。1:安装到内部的设备存储空间。2:安装到外部的设备存储空间。(这只用于调试应用程序, 使用该命令可能导致应用程序退出或者其他不适的后果)。

    get-install-location :返回当前的安装位置。返回结果同上参数选项。

    set-permission-enforced <PERMISSION> [true|false] :使指定权限生效或者失效。

    create-user <USER_NAME> :增加一个新的USER。

    remove-user <USER_ID> :删除一个USER。

    get-max-users :该设备所支持的最大USER数。(某些设备不支持该命令)

    例:

    adb shell am start [options] <INTENT>

    作用:启动一个activity

    举例:adb shell am start -a com.lt.test.action.SECOND

    举例:adb shell am start -n com.lt.test/.MyActivity

    说明:[options]与<INTENT>参见 http://developer.android.com/tools/help/adb.html#am

    adb shell am startservice [options] <INTENT>

    作用:启动一个service

    举例:adb shell am startservice -a com.lt.test.action.ONESERVICE
    举例:adb shell am startservice -n com.lt.test/.MyService

    adb shell am force-stop <PACKAGE>
    作用:强制关闭一个应用程序

    举例:adb shell am force-stop com.lt.test

    adb shell am broadcast [options] <INTENT>

    作用:发送一个广播
    举例:adb shell am broadcast -a "action_finish" (发送一个广播去关闭一个activity)
    举例:adb shell am broadcast -a android.intent.action.MASTER_CLEAR(恢复出厂设置的方法,会清除内存所有内容)

    举例:adb shell am broadcast -n com.lt.test/.MyBroadcast

    adb shell pm list packages [options] <INTENT>

    作用:列举出所有包含<INTENT>的package

    举例:adb shell pm list packages com.lt

    说明:[options]与<INTENT>参见 http://developer.android.com/tools/help/adb.html#pm

  • 相关阅读:
    EXCEL每次打开文件都会出现一个空白sheet1窗口
    Python基础知识之面向对象编程
    Python基础知识之模块详解
    Python基础知识之正则表达式re模块
    Python基础知识之xml模块
    Python基础知识之json&pickle模块
    Python基础知识之装饰器
    VUE-02
    VUE
    虚拟环境的搭建
  • 原文地址:https://www.cnblogs.com/guoke1001/p/5938553.html
Copyright © 2011-2022 走看看