adb 셸 dumpsys 명령 용법
Android 는 '작업 스 택' 이라는 개념 을 도 입 했 는데 이 개념 은 Android 장치 의 리 턴 버튼 에 매우 중요 한 관 계 를 가진다.가끔 은 되 돌아 가기 단 추 를 누 르 거나 현재 Activity 를 닫 는 동작 을 누 르 면 안 드 로 이 드 시스템 이 프로그램 을 어느 Activity 로 가 져 갈 지 모 르 고 마지막 Activity 인지 확인 하지 못 해 프로그램 전 체 를 종료 합 니 다.또는 일부 버튼 과 작업 순환 이 Activity 를 발생 시 켜 메모리 가 팽창 합 니 다.이러한 문제 에 대해 디 버 깅 기간 에 현재 작업 스 택 의 상황 을 알 수 있다 면 문제 가 존재 하 는 원인 을 편리 하 게 관찰 하고 발견 한 다음 에 정확 한 launchMode 를 선택 하여 Intent 의 Flag 을 설정 하고 프로그램 이 기대 하 는 효 과 를 얻 을 수 있 습 니 다.
출발점 2:
휴대 전화 에 애플 리 케 이 션 이 설치 되 어 있 습 니 다. 컴 파일 도 하지 않 고 다른 처리 도 하지 않 는 상황 에서 이 애플 리 케 이 션 에 대해 얼마나 알 수 있 습 니까?
출발점 3: "공식 문서 에서 나 왔 습 니 다"
dumpsys is a tool that runs on Android devices and provides information about system services. You can call dumpsys from the command line using the Android Debug Bridge (ADB) to get diagnostic output for all system services running on a connected device. This output is typically more verbose than you may want, so use the command line options described below to get output for only the system services you're interested in. This page also describes how to use dumpsys to accomplish common tasks, such as inspecting input, RAM, battery, or network diagnostics.
명령 형식: adb shell dumpsys activity [options] [WHAT]
option 매개 변수
options
속뜻
-a
사용 가능 한 모든 Servier 상태 포함
-c
클 라 이언 트 상태, 즉 앱 엔 드 상황 포함
-p PACKAGE
출력 지정 패키지 이름 제한
WHAT 매개 변수
WHAT
속뜻
a[ctivities]
활동 상태
b[roadcasts] [PACKAGE_NAME]
브 로드 캐 스 트 상태
s[ervices] [COMP_SPEC ...]
서비스 상태
prov[iders] [COMP_SPEC ...]
콘 텐 츠 제공 자 상태
p[rocesses][PACKAGE_NAME]
프로 세 스 상태
o[om]
메모리 관리
i[ntents] [PACKAGE_NAME]
pending intent 상태
r[ecents]
최근 활동
perm[issions]
URI 인증 현황
all
모든 활동 정보
top
상단 액 티 비 티 정보
package
패키지 관련 정보
연습 을 시작 하 다
연습 1:
입력:
adb shell dumpsys activity
출력:
ACTIVITY MANAGER PENDING INTENTS (dumpsys activity intents) //注意一下
* PendingIntentRecord{1004eb1 com.tencent.mobileqq broadcastIntent}
* PendingIntentRecord{a9858c7 com.google.android.gms broadcastIntent}
* PendingIntentRecord{dc3ae3d com.tencent.mm startService}
// 省略 N 行 ...
ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts) //注意一下
Historical broadcasts [foreground]:
#0: BroadcastRecord{63c6dd9 u-1 android.hardware.usb.action.USB_STATE}
// 省略 N 行 ...
ACTIVITY MANAGER CONTENT PROVIDERS (dumpsys activity providers) //注意一下
Published single-user content providers (by class):
* ContentProviderRecord{ef6fc1f u0 com.android.providers.telephony/.TelephonyProvider}
proc=ProcessRecord{efab720 3684:com.android.phone/1001}
singleton=true
authority=telephony
// 省略 N 行 ...
ACTIVITY MANAGER URI PERMISSIONS (dumpsys activity permissions) //注意一下
Granted Uri Permissions:
* UID 10129 holds:
UriPermission{b827fb4 0 @ content://downloads/all_downloads/125}
UriPermission{2b167dd 0 @ content://downloads/all_downloads/134}
UriPermission{51cbf52 0 @ content://downloads/all_downloads/148}
UriPermission{af4a223 0 @ content://downloads/all_downloads/169}
ACTIVITY MANAGER SERVICES (dumpsys activity services) //注意一下
User 0 active services:
* ServiceRecord{da1e320 u0 com.android.bluetooth/.hid.HidService}
app=null
created=-12d3h35m44s197ms started=false connections=1
// 省略 N 行 ...
ACTIVITY MANAGER RECENT TASKS (dumpsys activity recents) //注意一下
Recent tasks:
* Recent #0: TaskRecord{162657c #917 A=android.task.mms U=0 sz=1}
// 省略 N 行 ...
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) //注意一下
Display #0 (activities from top to bottom):
// 省略 N 行 ...
ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes) //注意一下
Isolated process list (sorted by uid):
Isolated # 0: ProcessRecord{ffa12e5 3187:WebViewLoader-arm64-v8a/1037}
UID states:
UID 1000: UidRecord{15a01ba 1000 P / 19 procs}
// 省略 N 行 ...
위 에 '주의 하 세 요' 라 고 표 시 된 위 치 는 괄호 안에 있 는 명령 을 사용 하여 이 부분 에 대응 하 는 내용 을 가 져 올 수 있 음 을 알려 주 는 것 입 니 다. 따라서 'adb 셸 dumpsys activity' 명령 은 아래 8 개의 명령 을 순서대로 출력 하 는 것 과 같 습 니 다.
adb shell dumpsys activity intents //主要输出 PendingIntentRecord
adb shell dumpsys activity broadcasts
adb shell dumpsys activity providers// Published single-user content providers (by class) / Published user 0 content providers (by class) /
adb shell dumpsys activity permissions
adb shell dumpsys activity services
adb shell dumpsys activity recents
adb shell dumpsys activity activities
adb shell dumpsys activity processes
연습 2:
입력:
adb shell dumpsys activity top
출력:
TASK com.jianshu.haruki id=101
ACTIVITY com.jianshu.haruki/com.baiji.jianshu.MainActivity fb571c1 pid=21291
// ... 只举出了前两行,省略了 N 行代码
현재 Android 시스템 에서 사용자 와 상호작용 하 는 Activity 에 대한 자세 한 정 보 를 가 져 옵 니 다. 출력 에 따라 얻 을 수 있 는 응용 패키지 이름 은 'com. jianshu. haruki' 입 니 다.
연습 3:
입력:
adb shell dumpsys activity activities
의미:
显示当前所有在运行的任务栈,它们的 id 分别是什么。对于每个 Task 也有 Activity 数量等信息,同时也列出了其中的 Activity 列表,并且对于每个 Activity 也有比较详细的描述,比如启动它的 Intent 的内容。如果觉得内容过多,只想看看栈的内容,也可以直接跳到「Running activities (most recent first) 那部分,比较简洁而又明了的列出了栈中的 Activity 列表,就能知道当按下返回键的时候会应该回到哪个 Activity 」
연습 4:
입력:
adb shell dumpsys package com.jianshu.haruki[此处写的是『』的应用包名]
출력:
Activity Resolver Table: // 标注:这里开始解析「activity」标签
Full MIME Types:
text/plain:
28edf2a com.jianshu.haruki/com.baiji.jianshu.ui.editor.EditorActivityV19
Base MIME Types:
text:
28edf2a com.jianshu.haruki/com.baiji.jianshu.ui.editor.EditorActivityV19
Schemes:
jianshu: // 标注:列出了所有以 jianshu 为 scheme 的 Activity
3057264 com.jianshu.haruki/com.baiji.jianshu.ui.messages.submission.SubmissionDetailActivity
350011b com.jianshu.haruki/com.baiji.jianshu.MainActivity
96cc891 com.jianshu.haruki/com.baiji.jianshu.ui.user.collection.CollectionActivity (2 filters)
993c3f6 com.jianshu.haruki/com.baiji.jianshu.ui.user.userinfo.UserCenterActivity (2 filters)
f48e2b8 com.jianshu.haruki/com.baiji.jianshu.activity.NotifyDetailActivity
f845ccd com.jianshu.haruki/com.baiji.jianshu.ui.articledetail.ArticleDetailActivity
fe393f7 com.jianshu.haruki/com.baiji.jianshu.ui.user.notebook.normal.NotebookActivity (2 filters)
tencent100410602:
3302982 com.jianshu.haruki/com.tencent.tauth.AuthActivity
Non-Data Actions: // 标注:列出了所有有「intent-filter」标签但是无「data」标签的 Activity
android.intent.action.MAIN:
4b37893 com.jianshu.haruki/com.baiji.jianshu.ui.splash.SplashScreenActivity
com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY:
3d950d0 com.jianshu.haruki/haruki.jianshu.com.lib_share.weibo.WBShareActivity
android.intent.action.CREATE_SHORTCUT:
28edf2a com.jianshu.haruki/com.baiji.jianshu.ui.editor.EditorActivityV19
// 省略多行
MIME Typed Actions:
android.intent.action.SEND:
28edf2a com.jianshu.haruki/com.baiji.jianshu.ui.editor.EditorActivityV19
Receiver Resolver Table: // 标注:这里开始解析「receiver」标签
Schemes:
package: // 标注:列出了所有以 jianshu 为 scheme 的 receiver
c930aef com.jianshu.haruki/com.huawei.android.pushagent.PushEventReceiver
Non-Data Actions:// 标注:列出了所有含「intent-filter」标签但是无「action」标签的 receiver
com.xiaomi.mipush.MESSAGE_ARRIVED:
bcaa9fc com.jianshu.haruki/com.baiji.jianshu.ui.receiver.xiaomi.XiaoMiPushReceiver
android.intent.action.ACTION_POWER_DISCONNECTED:
9fd5885 com.jianshu.haruki/com.igexin.sdk.PushReceiver
// 省略多行
Service Resolver Table:// 标注:这里开始解析「service」标签
Non-Data Actions:// 标注:列出了所有含「intent-filter」标签但是无「action」标签的 service
com.google.firebase.INSTANCE_ID_EVENT:
649f732 com.jianshu.haruki/com.google.firebase.iid.FirebaseInstanceIdService
com.igexin.sdk.action.service.message:
97bac83 com.jianshu.haruki/com.igexin.sdk.PushService
Permissions:
Permission [com.jianshu.haruki.permission.C2D_MESSAGE] (88a8e00):
sourcePackage=com.jianshu.haruki
uid=10141 gids=null type=0 prot=signature
perm=Permission{e42a639 com.jianshu.haruki.permission.C2D_MESSAGE}
packageSetting=PackageSetting{a1c547e com.jianshu.haruki/10141}
Permission [getui.permission.GetuiService.com.jianshu.haruki] (7428ddf):
sourcePackage=com.jianshu.haruki
uid=10141 gids=null type=0 prot=normal
perm=Permission{80a8a2c getui.permission.GetuiService.com.jianshu.haruki}
packageSetting=PackageSetting{a1c547e com.jianshu.haruki/10141}
Permission [com.jianshu.haruki.permission.MIPUSH_RECEIVE] (c9e6cf5):
sourcePackage=com.jianshu.haruki
uid=10141 gids=null type=0 prot=signature
perm=Permission{f253a8a com.jianshu.haruki.permission.MIPUSH_RECEIVE}
packageSetting=PackageSetting{a1c547e com.jianshu.haruki/10141}
Registered ContentProviders:
com.jianshu.haruki/com.google.firebase.provider.FirebaseInitProvider:
Provider{b6c28fb com.jianshu.haruki/com.google.firebase.provider.FirebaseInitProvider}
com.jianshu.haruki/com.baiji.jianshu.db.core.JianshuProvider:
Provider{eac1d18 com.jianshu.haruki/com.baiji.jianshu.db.core.JianshuProvider}
com.jianshu.haruki/com.sensorsdata.analytics.android.sdk.SensorsDataContentProvider:
Provider{8b5e371 com.jianshu.haruki/com.sensorsdata.analytics.android.sdk.SensorsDataContentProvider}
ContentProvider Authorities:
[com.jianshu.haruki.SensorsDataContentProvider]:
Provider{8b5e371 com.jianshu.haruki/com.sensorsdata.analytics.android.sdk.SensorsDataContentProvider}
applicationInfo=ApplicationInfo{b247556 com.jianshu.haruki}
[com.jianshu.haruki.firebaseinitprovider]:
Provider{b6c28fb com.jianshu.haruki/com.google.firebase.provider.FirebaseInitProvider}
applicationInfo=ApplicationInfo{b247556 com.jianshu.haruki}
[com.jianshu.haruki.provider]:
Provider{eac1d18 com.jianshu.haruki/com.baiji.jianshu.db.core.JianshuProvider}
applicationInfo=ApplicationInfo{b247556 com.jianshu.haruki}
Key Set Manager:
[com.jianshu.haruki]
Signing KeySets: 67
Packages:
Package [com.jianshu.haruki] (a1c547e):
userId=10141
pkg=Package{ca59d7 com.jianshu.haruki}
codePath=/data/app/com.jianshu.haruki-2
resourcePath=/data/app/com.jianshu.haruki-2
legacyNativeLibraryDir=/data/app/com.jianshu.haruki-2/lib
primaryCpuAbi=arm64-v8a
secondaryCpuAbi=null
versionCode=2017082915 targetSdk=23
versionName=2.6.0
splits=[base]
applicationInfo=ApplicationInfo{b247556 com.jianshu.haruki}
flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA LARGE_HEAP ]
dataDir=/data/user/0/com.jianshu.haruki
supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
timeStamp=2017-09-22 15:39:43
firstInstallTime=2017-09-22 15:38:20
lastUpdateTime=2017-09-22 15:40:02
signatures=PackageSignatures{d1f2c4 [8f445ad]}
installPermissionsFixed=true installStatus=1
pkgFlags=[ HAS_CODE ALLOW_CLEAR_USER_DATA LARGE_HEAP ]
declared permissions:
getui.permission.GetuiService.com.jianshu.haruki: prot=normal, INSTALLED
com.jianshu.haruki.permission.MIPUSH_RECEIVE: prot=signature, INSTALLED
com.jianshu.haruki.permission.C2D_MESSAGE: prot=signature, INSTALLED
requested permissions:
android.permission.INTERNET
android.permission.WRITE_EXTERNAL_STORAGE
// 省略多行
install permissions:
com.jianshu.haruki.permission.C2D_MESSAGE: granted=true
com.google.android.c2dm.permission.RECEIVE: granted=true
android.permission.MANAGE_ACCOUNTS: granted=true
getui.permission.GetuiService.com.jianshu.haruki: granted=true
// 省略多行
User 0: installed=true hidden=false stopped=false notLaunched=false enabled=0
gids=[3002, 3003, 3001]
runtime permissions:
android.permission.READ_EXTERNAL_STORAGE: granted=true
android.permission.READ_PHONE_STATE: granted=true
android.permission.WRITE_EXTERNAL_STORAGE: granted=true
disabledComponents:
com.huawei.android.pushagent.PushBootReceiver
연습 5:
입력:
adb shell dumpsys meminfo com.jianshu.haruki[此处写的是『』的应用包名]
출력:
Applications Memory Usage (kB):
Uptime: 94384953 Realtime: 367426401
** MEMINFO in pid 21291 [com.jianshu.haruki] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 20236 19432 0 1180 50580 48838 1741
Dalvik Heap 12299 12264 0 56 52530 45197 7333
Dalvik Other 23104 23064 0 9680
Stack 1484 1484 0 0
Ashmem 134 128 0 0
Gfx dev 14698 14596 0 0
Other dev 10 0 8 0
.so mmap 5924 252 4312 2908
.apk mmap 27189 144 26692 0
.ttf mmap 130 0 104 0
.dex mmap 12242 12 11060 0
.oat mmap 3661 0 1256 4
.art mmap 2450 1940 92 144
Other mmap 1300 12 1280 0
EGL mtrack 41280 41280 0 0
Unknown 6052 6044 0 84
TOTAL 172193 120652 44804 14056 103110 94035 9074
App Summary
Pss(KB)
------
Java Heap: 14296
Native Heap: 19432
Code: 43832
Stack: 1484
Graphics: 55876
Private Other: 30536
System: 6737
TOTAL: 172193 TOTAL SWAP (KB): 14056
Objects
Views: 837 ViewRootImpl: 1
AppContexts: 2 Activities: 1
Assets: 4 AssetManagers: 2
Local Binders: 31 Proxy Binders: 31
Parcel memory: 23 Parcel count: 92
Death Recipients: 1 OpenSSL Sockets: 2
SQL
MEMORY_USED: 1054
PAGECACHE_OVERFLOW: 297 MALLOC_SIZE: 62
DATABASES
pgsz dbsz Lookaside(b) cache Dbname
4 24 36 112/19/5 /data/user/0/com.jianshu.haruki/databases/com.jianshu.haruki
4 76 176 116/64/25 /data/user/0/com.jianshu.haruki/databases/google_app_measurement.db
4 40 33 6/21/5 /data/user/0/com.jianshu.haruki/databases/tencent_analysis.db
4 32 98 75/26/12 /data/user/0/com.jianshu.haruki/databases/bugly_db_
4 40 19 4/19/3 /data/user/0/com.jianshu.haruki/databases/pri_tencent_analysis.db
4 20 34 3/18/4 /data/user/0/com.jianshu.haruki/databases/ThrowalbeLog.db
4 20 32 786/19/5 /data/user/0/com.jianshu.haruki/databases/sharesdk.db
4 124 57 45/24/10 /data/user/0/com.jianshu.haruki/databases/jian_shu.db
command
description
adb shell dumpsys activity
현재 Android 시스템 Activity 스 택 에서 Activity 정 보 를 가 져 옵 니 다.
adb shell dumpsys activity top
현재 Android 시스템 에서 사용자 와 상호작용 하 는 Activity 에 대한 자세 한 정보 가 져 오기
adb 셸 dumpsys meminfo [응용 패키지 이름]
응용 메모리 사용 현황 보기
adb 셸 dumpsys 패키지 [응용 신청]
핸드폰 에 있 는 apk 의 응용 정보, 버 전 정 보 를 가 져 옵 니 다.
adb shell dumpsys activity activities
현재 실행 중인 작업 스 택 을 표시 하고 스 택 에 있 는 모든 Activity 목록 을 볼 수 있 습 니 다.
참고 링크: 공식 문서, 여기 비교적 상세 한 문서 소개 가 있 습 니 다.https://developer.android.com/studio/command-line/dumpsys.html 개발 필수 - 당신 이 알 아야 할 ADB 명령http://www.jianshu.com/p/0693b841c83b dumpsys 명령 용법http://gityuan.com/2017/07/04/ams_dumpsys/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.