Android调试指令

Android 调试指令

am

activity manager 使用am工具来执行系统操作,如开启一个action,开启一个activity、强制停止一个线程、修改设备屏幕属性等等。使用am

开启Activity、服务、广播

Intent 说明 am参数
component 组件名称 格式为:包名/类名 -n
action 指定Intent的执行动作,比如调用拨打电话组件 -a
data_url 表示与动作要操纵的数据 -d
category categary是一个字符串,提供了额外的信息,有关于能够处理这个Intent对象的组件种类 -c
extra 传递给Intent的额外数据,以Bundle的形式定义,就是一些键值对 -e
mime_type MIME类型 -t
flags 各种类型的flag,很多是用来指定Android系统如何启动activity,还有启动了activity后如何对待他 -f
package 包名 -p
启动activity

am start [参数]

参数 说明
-D 开启调试模式
-W 等待启动完成
--start-profile 开始分析器和发送结果(文件)
--sampling INTERVAL 使用样本分析 间隔:us(使用—start-profiler)之间
-P 应用空闲下来后,停止profile
-R COUNT 重复活动推出<统计>次。每个重复之前,活动将会结束
-S 组织目标应用开始前的活动
--opengl-trace 启用跟踪OpenGL函数
[—user | current] 指定哪些用户运行,如果不指定则使用当前用户
启动和停止服务

am startservice [参数]

am stopservice [参数]

参数 说明
--user | current 指定哪些用户运行,如果不指定则使用当前用户
启动广播

am broadcast [参数]

参数 说明
--user | current 指定哪些用户运行,如果不指定则使用当前用户

内存操作

am dumpheap [参数]

参数 说明
--user | current 指定哪些用户运行,如果不指定则使用当前用户
-n 获取native heap而不是managed heap

am dumpheap com.android.browser /data/local/tmp/test.hprof #获取内存快照(后缀名必需为.hprof)

hprof-conv e:\test.hprof e:\test1.hprof 进行文件转化 然后就可以使用mat工具对内存进行查看分析

进程操作

am force-stop [参数] #强制停止应用(process=包名)

am kill [参数] #停止后台单个进程

am kill-all #停止后台所进程

性能

am profile start 开启profile

am profile stop [] 停止profile

参数 说明
--user | current 指定哪些用户运行,如果不指定则使用当前用户

am profile start com.android.contacts /mnt/sdcard/profile

am profile stop com.android.contacts

traceview profile

监听异常

adb shell monitor [potions]

pm

package manager 使用pm工具来执行应用的安装和查询应用的信息、系统权限、控制应用。使用 pm

包名信息查询

pm list packages [options] [FILTER]

打印所有已经安装的应用的包名,如果设置了文件过滤则只显示包含过滤文字的内容

参数 描述
-f 显示每个包的文件位置
-d 使用过滤器,只显示禁用的应用的包名
-e 使用过滤器,只显示可用的应用的包名
-s 使用过滤器,只显示系统应用的包名
-3 使用过滤器,只显示第三方应用的包名
-i 查看应用的安装者

应用安装和卸载

pm install [-lrtsfd] [-i PACKAGE] [PATH] 通过指定路径安装apk

pm uninstall [options] 卸载应用

参数 说明
-l 锁定应用程序
-r 重新安装应用,且保留应用数据
-t 允许测试apk被安装
-i 指定安装包的包名
-s 安装到sd卡
-f 安装到系统内置存储中(默认安装位置)
-d 允许降级安装(同一应用低级换高级)
-g 授予应用程序清单中列出的所有权限(只有6.0系统可用)
-k 卸载应用且保留数据与缓存(如果不加-k则全部删除)

权限信息查询

权限的组成:权限的名称,属于的权限组,保护级别


protectionLevel
protectionLevel 说明
normal 表示权限是低风险的,不会对系统,用户或其他应用程序造成危害
dangerous 表示权限是高风险的,系统将可能要球用户输入相关信息,才会授予此权限
signature 表示只有当应用程序所用数字签名与声明引用权限的应用程序所用签名相同时,才能将权限授予给它
signatureOrSystem 需要签名或者系统级应用(放置在/system/app目录下)才能赋予权限
system 系统级应用(放置在/system/app目录下)才能赋予权限
自定义权限 应用自行定义的权限

pm list permission-groups 打印已知的权限组

pm list permissions [options] [GROUP] 打印权限

options
参数 说明
-g 按组进行列出权限
-f 打印所有信息
-s 简短的摘要
-d 只有危险的权限列表
-u 只有权限的用户将看到列表 用户自定义权限
授权与取消
子命令 说明
grant 授予应用权限许可。必需android6.0(API级别23)以上的设备
revoke 撤销应用权限。必需android6.0(API级别23)以上的设备

需要注意的是所谓的授权是指你的apk里面已有的权限进行授权,相当于启用的概念
pm grant android.permission.READ_CONTACTS #授权( 取消权限同理)

测试包和apk路径查询

pm list instrumentation

pm list instrumentation TARGET_PACKAGE

pm path PACKAGE_NAME

子命令 参数 说明
list instrymentation 无参数 列出所有的instrumentation测试包
-f 列出apk文件位置
列出某个app的测试包
path 打印指定包名的apk路径

系统功能与主持库查询

子命令 说明
list feature 打印系统的所有功能 列出所有硬件相关信息
list libraries 打印当前设备所支持的所有库

包系统状态查询

pm dump PACKAGE

打印内容 说明
DUMP OF SERVICE package 打印服务信息
DUMP OF SERVICE activity 打印activity信息
DUMP OF SERVICE meminfo 打印当前内存使用信息
DUMP OF SERVICE procstats 打印系统内存使用与一段时间内存汇总
DUMP OF SERVICE usagestats 打印服务器使用状态信息
DUMP OF SERVICE batterystats 打印电池状态信息

控制

pm clear 清除应用数据

pm enable 使package或component可用

pm disenable 使package或component不可用(直接就找不到应用了)

pm disenable-user [options] 使package或component不可用(会显示已停用)

pm hide PACKAGE_OR_COMPONENT 隐藏package或component

pm unhide PACKAGE_OR_CONPONENT 恢复可见package或component

子命令 说明
set-install-location 更改默认的安装位置: 0:自动-让系统决定最好的位置 1:内部存储-安装在内部设备上的存储 2:外部存储-安装在外部媒体 注:只用于调试
get-install-location 返回当前的安装位置 0 1 2 对应上面的数字说明

dumpsys

dumpsys用户系统诊断,它运行在设备上,并提供系统服务状态信息

adb shell dumpsys [system services]

查看系统服务

adb shell dumpsys –l xxx

adb shell service list xxx

-h:对于大多数的服务,可以添加-h看到文本的帮助

-c:对于一些服务,可以添加-c查看数据会更友好

adb shell dumpsys meminfo –h

包信息查询

adb shell dumpsys package [-h] [-f] [—checkin] [cmd]…

参数 说明
-h 打印帮助信息
-f 打印intent filter的信息
--checkin 打印出已经登记的库、系统功能、安装包
cmd 子命令(可以在-h帮助文档中查看有哪些子命令)
cmd子命令 说明
prov[iders] 获取content providers
p[ackages] 获取安装包基本信息
s[hared-user] 获取共享用户ID的应用
m[essages] 打印运行时收集的信息
v[erifiers] 打印包校验信息
version 打印数据库版本信息
write 写当前位置
输出给定包的信息
installs 安装会话的详细信息
l[ibraries] 列出已知的共享库
f[ibraries] 列出手机的功能
k[eysets] 列出各个包的Signing KeySets
r[esolvers] 获取intent filter
perm[issions] 获取权限
pref[erred] 打印包首选项
preferred-xml [—full] 打印包首选项,xml格式打印

activity 信息查询

adb shell dumpsys activity [-a] [-c]…

参数 说明
-a 包括所有可用的服务器状态
-c 包括客户端状态
-p 限制输出为给定的包,例如: adb shell dumpsys activity -p com.android.browser
-h 打印帮助信息
cmd 子命令
cmd子命令 说明
a[ctivities] activity堆栈状态
r[recents] 最近activity的状态
b[rodacasts] [package_name] [histpry [-s]] 广播状态
i[ntents] [package_name] 挂起的intent状态
p[rocesses] [package_name] 进程状态
o[om] oom管理
perm[issions] url权限授权状态
prov[iders] [comp_spec…] content provider状态
provider [comp_spec] provider客户端状态
s[ervices] [comp_spec…] 服务状态
as[sociations] 跟踪应用程序的关联
service [comp_spec] 服务客户端状态
package [package_name] 给的包的所有状态
all 转储所有的activityes
top 转储栈顶的activity
write 写入所有挂起状态存储
track-associations 允许会话跟踪
untrack-associations 禁用和明确会话跟踪,命令参数可能也是一个comp_spec 转储的activity

网络信息查询

子命令 说明 命令格式
connectivity 网络连接 adb shell dumpsys connectivity
netpolicy 网络策略 adb shell dumpsys netpolicy
netstats 网络状态 adb shell dumpsys netstats
network_management 网络管理 adb shell dumpsys network_management

其他

子命令 说明 命令格式
meminfo 内存 adb shell dumpsys meminfo
cpuinfo CPU adb shell dumpsys cpuinfo
gfxinfo 帧率 adb shell dumpsys gfxinfo
display 显示 adb shell dumpsys display
power 电源 adb shell dumpsys power
batterystats 电池状态 adb shell dumpsys batterystats
battery 电池 adb shell dumpsys battery
alarm 闹钟 adb shell dumpsys alarm
location 位置 adb shell dumpsys location

adb shell dumpsys window | findstr mCurrentFocus 查看当前包

aapt

android assert packaging tool, 再build-tools目录下。查看创建更新ZIP格式的文档文件(zip,jar,apk)。可将资源文件编成二进制,打包APK等。

aapt v[ersion]

列出apk包

aapt l[ist] [-v] [-a] <你的应用apk>

-v 以table形式列出来
-a 详细列出内容

查看apk信息

aapt d[ump] [选项] <你的应用>

选项 说明 例如
badging 查看apk包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息 aapt dump badging
permissions 查看权限 aapt dump resources
resources 查看资源列表 aapt dump resources > sodino.txt
configurations 查看apk配置信息 aapt dump configurations
xmltree 以树形结构输出的xml信息。 aapt dump xmltree res/***.xml
xmlstrings 查看指定apk的指定xml文件。 aapt dump xmlstrings res/***.xml

编译android资源

aapt p[ackage] [-d] [-f] [-m] [-u] [-v] [-x] [-z] [-M AndroidManifest.xml] /
[-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] /
[--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] /
[--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] /
[--rename-manifest-package PACKAGE] /
[--rename-instrumentation-target-package PACKAGE] /
[--utf16] [--auto-add-overlay] /
[--max-res-version VAL] /
[-I base-package [-I base-package ...]] /
[-A asset-source-dir] [-G class-list-file] [-P public-definitions-file] /
[-S resource-sources [-S resource-sources ...]] [-F apk-file] [-J R-file-dir] /
[--product product1,product2,...] /
[raw-files-dir [raw-files-dir] ...]

-f 如果编译出来的文件已经存在,强制覆盖。

-m 使生成的包的目录放在-J参数指定的目录。

-J 指定生成的R.java的输出目录

-S res文件夹路径

-A assert文件夹的路径

-M AndroidManifest.xml的路径

-I 某个版本平台的android.jar的路径

-F 具体指定apk文件的输出

移除apk中文件

aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]

添加文件到apk中

aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]

你可能感兴趣的:(Android调试指令)