Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android Adb Shell Command Record #62

Open
yunshuipiao opened this issue Jul 4, 2019 · 0 comments
Open

Android Adb Shell Command Record #62

yunshuipiao opened this issue Jul 4, 2019 · 0 comments
Labels

Comments

@yunshuipiao
Copy link
Owner

yunshuipiao commented Jul 4, 2019

Android Adb Shell Command Record

[TOC]

本篇文章用于收集一些 Android 开发中常用的 Adb 命令。

当前 Activity

在接触一个陌生项目中,经常需要知道当前的 Activity 的信息。那么可以使用命令:

adb shell dumpsys activity top, 可以的输出内容如下:(内容很多)

SW-MacBook-Pro:other zp$ adb shell dumpsys activity top
// 当前任务
TASK com.ziipin.softkeyboard.uzbekistan id=3486
	// 当前 Activity
  ACTIVITY com.ziipin.softkeyboard.uzbekistan/com.ziipin.setting.FeedActivity 6f615b pid=10300
    Local Activity 7553594 State:
    // 状态
      mResumed=true mStopped=false mFinished=false
      mChangingConfigurations=false
			// 配置信息
      mCurrentConfig={1.0 ?mcc?mnc zh_CN ldltr sw360dp w360dp h616dp 480dpi nrml long port finger -keyb/v/h -nav/h s.5 themeResource=null}
      mLoadersStarted=true
      Active Fragments in 1b4b297:
        #0: ReportFragment{243c84 #0 android.arch.lifecycle.LifecycleDispatcher.report_fragment_tag}
          mFragmentId=#0 mContainerId=#0 mTag=android.arch.lifecycle.LifecycleDispatcher.report_fragment_tag
          mState=5 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
          mAdded=true mRemoving=false mResumed=true mFromLayout=false mInLayout=false
          mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
          mRetainInstance=false mRetaining=false mUserVisibleHint=true
          mFragmentManager=FragmentManager{1b4b297 in HostCallbacks{bf62c6d}}
          mHost=android.app.Activity$HostCallbacks@bf62c6d
          Child FragmentManager{2a850a2 in ReportFragment{243c84}}:
            FragmentManager misc state:
              mHost=android.app.Activity$HostCallbacks@bf62c6d
              mContainer=android.app.Fragment$1@987e133
              mParent=ReportFragment{243c84 #0 android.arch.lifecycle.LifecycleDispatcher.report_fragment_tag}
              mCurState=5 mStateSaved=false mDestroyed=false
      Added Fragments:
        #0: ReportFragment{243c84 #0 android.arch.lifecycle.LifecycleDispatcher.report_fragment_tag}
      FragmentManager misc state:
        mHost=android.app.Activity$HostCallbacks@bf62c6d
        mContainer=android.app.Activity$HostCallbacks@bf62c6d
        mCurState=5 mStateSaved=false mDestroyed=false
    ViewRoot:
      mAdded=true mRemoved=false
      mConsumeBatchedInputScheduled=false
      mConsumeBatchedInputImmediatelyScheduled=false
      mPendingInputEventCount=0
      mProcessInputEventsScheduled=false
      mTraversalScheduled=false      mIsAmbientMode=false
      android.view.ViewRootImpl$NativePreImeInputStage: mQueueLength=0
      android.view.ViewRootImpl$ImeInputStage: mQueueLength=0
      android.view.ViewRootImpl$NativePostImeInputStage: mQueueLength=0
    Choreographer:
      mFrameScheduled=false
      mLastFrameTime=257936331 (165 ms ago)
    View Hierarchy:
			// 布局信息
      com.android.internal.policy.PhoneWindow$DecorView{226c4bf V.E...... R....... 0,0-1080,1920}
        android.widget.LinearLayout{52e278c V.E...... ........ 0,0-1080,1920}
          android.view.ViewStub{5ea9cf0 G.E...... ......I. 0,0-0,0 #10203b7 android:id/action_mode_bar_stub}
          android.widget.FrameLayout{6fbaed5 V.E...... ........ 0,72-1080,1920}
            android.support.v7.widget.FitWindowsLinearLayout{62c86ea V.E...... ........ 0,0-1080,1848 #7f090012 app:id/action_bar_root}
              android.support.v7.widget.ViewStubCompat{2562269 G.E...... ......I. 0,0-0,0 #7f09001d app:id/action_mode_bar_stub}
              android.support.v7.widget.ContentFrameLayout{50ceddb V.E...... ........ 0,0-1080,1848 #1020002 android:id/content}
                android.widget.LinearLayout{95c3078 V.E...... ........ 0,0-1080,1848 #7f09027a app:id/root}
                  com.ziipin.areatype.ZiipinToolbar{7d56351 V.E...... ........ 0,0-1080,132 #7f09030b app:id/toolbar}
                    android.widget.LinearLayout{bc427b6 V.E...... ........ 0,0-1080,132}
                      android.support.v7.widget.AppCompatImageView{3628cb7 V.ED..C.. ........ 0,0-120,132 #7f09030c app:id/toolbar_back}
                      android.support.v7.widget.AppCompatTextView{45fdc24 V.ED..... ........ 156,35-266,96 #7f09030f app:id/toolbar_text}
                      android.support.v4.widget.Space{9bbe38d I.ED..... ......I. 266,0-930,0}
                      android.widget.FrameLayout{630942 V.E...... ........ 930,0-1080,132 #7f09030e app:id/toolbar_menu_parent}
                        android.support.v7.widget.AppCompatTextView{35ed4ee G.ED..C.. ......I. 0,0-0,0 #7f090310 app:id/toolbar_text_menu}
                        android.support.v7.widget.AppCompatImageView{2093d53 V.ED..C.. ........ 0,0-150,132 #7f09030d app:id/toolbar_icon}
                  android.support.v7.widget.RecyclerView{fd09690 VFED..... ........ 0,132-1080,1632 #7f090115 app:id/feed_recycler}
                    android.widget.LinearLayout{aec7e9a V.E...... ........ 48,48-1032,695}
                      android.widget.LinearLayout{a6103cb V.E...... ........ 0,0-984,647}
                        android.support.v7.widget.AppCompatTextView{478a7a8 V.ED..... ........ 0,48-984,105 #7f090097 app:id/content_title}
                        android.support.v7.widget.AppCompatEditText{e64c2c1 VFED..CL. .F...... 0,135-984,271 #7f090094 app:id/content}
                        android.support.v7.widget.AppCompatTextView{683ea66 V.ED..... ........ 0,319-984,376 #7f090092 app:id/contact_title}
                        android.support.v7.widget.AppCompatEditText{87a11a7 VFED..CL. ........ 0,406-984,542 #7f090091 app:id/contact}
                        android.support.v7.widget.AppCompatTextView{b849654 V.ED..... ........ 0,590-984,647 #7f090292 app:id/screen_title}
                    android.support.constraint.ConstraintLayout{89e75bb V.E...C.. ........ 48,743-344,1039}
                      android.support.v7.widget.AppCompatImageView{cf94ad8 V.ED..... ........ 0,0-296,296 #7f090113 app:id/feed_image}
                      android.support.v7.widget.AppCompatImageView{2555d8f G.ED..C.. ......I. 0,0-0,0 #7f090114 app:id/feed_item_delete}
                  android.support.v7.widget.AppCompatButton{602de31 VF.D..C.. ........ 48,1632-1032,1782 #7f0902dd app:id/submit}
        android.view.View{c659ade V.ED..... ........ 0,0-1080,72 #102002f android:id/statusBarBackground}
    Looper (main, tid 1) {2b57015}
      Message 0: { when=+327ms callback=android.widget.Editor$Blink target=android.widget.Editor$Blink }
      (Total messages: 1, polling=false, quitting=false)
    Local FragmentActivity 7553594 State:
      mCreated=truemResumed=true mStopped=false mReallyStopped=false
    FragmentManager misc state:
      mHost=android.support.v4.app.FragmentActivity$HostCallbacks@c74981c
      mContainer=android.support.v4.app.FragmentActivity$HostCallbacks@c74981c
      mCurState=5 mStateSaved=false mStopped=false mDestroyed=false

可以获取当前 Activity 的一些信息。

查看启动耗时

在分析程序的冷启动时,经常需要获取程序的启动时间,可以使用如下命令:

adb shell am start -W -S package/avtivity,比如:

adb shell am start -W -S com.ziipin.softkeyboard.uzbekistan/com.ziipin.MainActivity

可以从上一步获取 package/activity。-W:等待启动完成 -S: 杀死当前 App 并启动

SW-MacBook-Pro:other zp$ adb shell am start -W -S com.ziipin.softkeyboard.uzbekistan/com.ziipin.MainActivity
Stopping: com.ziipin.softkeyboard.uzbekistan
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.ziipin.softkeyboard.uzbekistan/com.ziipin.MainActivity }
Status: ok
Activity: com.ziipin.softkeyboard.uzbekistan/com.ziipin.setting.GuideActivity
// 表示当前 Activity 的启动时间 
ThisTime: 1131 
// 应用自身启动耗时=ThisTime+应用application等资源启动时间
TotalTime: 4171
// 系统启动应用耗时=TotalTime+系统资源启动时间
WaitTime: 4190
Complete

安装Apk

adb install -r path/xxx.apk

-r: 表示允许覆盖安装

-d: 表示允许降级覆盖安装

卸载应用

adb uninstall <应用包名>
adb uninstall -k <应用包名> *# 如果加 -k 参数,为卸载应用但是保留配置和缓存文件*

其中 <应用包名> 可以通过 adb shell pm list packages 命令查看:

  • adb shell pm list packages -s 可以查看系统应用
  • adb shell pm list packages -3 可以查看用户应用
  • adb shell pm list packages xxx 可以查看包含 xxx 字符串的应用

TAG 、Log级别过滤日志

adb logcat < filter-spec>
其中 < filter-spec>可以由多个 < tag>[:priority] 组成

例: adb logcat MainActivity:D HomeFragemt:I
只输出TAG为MainActivity的Debug以上和 TAG为HomeFragemt的Info 以上的log日志,屏蔽其他的log日志;

清空日志
adb logcat -c

内核日志
adb shell dmesg

查看手机分辨率

adb shell dumpsys window displays

清楚应用数据和缓存

在开发过程中,经常需要清楚数据,还原应用,可以使用:

adb shell pm clear pkgname

通过adb 命令启动重启service ,发送广播来进行调试

重启service:

adb shell am force-stop com.xiaopeng.privacyservice
adb shell am start-foreground-service -a com.xiaopeng.privacyservice.PrivacyService

可以写成批处理文件:

@echo off
echo " --- begin --- "
adb shell am force-stop com.xiaopeng.privacyservice
adb shell am start-foreground-service -a com.xiaopeng.privacyservice.PrivacyService
echo " --- end ---"
@REM pause

带参数发送广播:

adb shell am start -a android.intent.action.VIEW -d "xiaopeng://com.xiaopeng.privacyservice?action=showdialog\&type=201\&flag=0"

参考资料:http://nky1989.com/2017/07/12/android-adb-shell-and-param/

调试修改[content provider]:参数见文档

 adb shell content query --uri content://com.xiaopeng.privacyservice.provider/protocol
 adb shell content update --uri content://com.xiaopeng.privacyservice.provider/protocol --bind date:s:10

查看文件的最后几行并过滤:

tail -f main.txt | grep RemoteMessageP

未完待续

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant