本文介绍一种安卓卸载系统应用的方法,如果你和我一样喜欢瞎折腾,有那么一点强迫症,希望对你有用。作为一名安卓开发者,大学以前总喜欢刷不同刷机包(ROM)、爱装不同的Launcher桌面体验,不过工作了没以前爱折腾了。安卓提供的adb工具不用多介绍,网上都有很多教程。
一. 实验条件
- LG V30 (Android 9.0)
- 较新adb驱动
- PC一台
- 对应的USB调试线一根
二. 安装adb驱动
下载360手机助手,安装USB连接手机,360手机助手对手机adb驱动支持很好,直接连接就好了。确定adb驱动安装好后,任务管理器将360Mobile相关的进程干掉。重新连接adb,最后使用cmd或者AS自带的Terminal进入命令行,熟悉我们的adb命令就行了。
三. adb卸载预装应用步骤
1、查看adb版本
确认adb版本较新,我自己亲自试了在自己笔记本电脑adb工具执行命令用不了,总是提示如下打印:
F:\mypc>adb devices
adb server is out of date. killing…
daemon started successfully *
List of devices attached
810e909e offline
尝试了网上的方法,还是没有解决,但想到公司电脑好像没有问题的。于是对比了两台电脑adb的版本,还是存在差异,或许是adb安装路径有问题!
F:\mypc>adb version
Android Debug Bridge version 1.0.29
E:\other>adb version
Android Debug Bridge version 1.0.41
Version 29.0.1-5644136
Installed as C:\Windows\system32\adb.exe
2、查看系统中所有包
执行下面命令,将打印复制到记事本中,方便后面查找。
adb shell pm list packages
3、确认不知名的应用包名(较低安卓版本可直接查看应用包名)
有的应用我们可以通过包名就可以判断哪一个应用,但有的应用我们是确定不了的。那么就需要确认当前运行的应用的包名,记住安卓Activity和Application packagename是有关系的!好几种方法,一种不行尝试另外一种哦。
法一:
1、在手机上打开app
2、执行:adb shell dumpsys window w |findstr / |findstr name=
法二:
1、在手机上打开app
2、执行:adb shell dumpsys activity activities
3、分析打印
执行:adb shell dumpsys activity activities 后,我拿到的打印如下,具体分析我们就知道包名和应用名是哪一个了。这条命令会将activity堆栈信息和活动信息告诉我们。
D:\other>adb shell dumpsys activity activities
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
Display #0 (activities from top to bottom):
Stack #102: type=standard mode=fullscreen
isSleeping=false
mBounds=Rect(0, 0 - 0, 0)
Task id #3162
mBounds=Rect(0, 0 - 0, 0)
mMinWidth=-1
mMinHeight=-1
mLastNonFullscreenBounds=null
* TaskRecord{5546a0e #3162 A=com.uplus.onphone U=0 StackId=102 sz=1}
userId=0 effectiveUid=u0a265 mCallingUid=u0a121 mUserSetupComplete=true mCallingPackage=com.lge.launcher3
affinity=com.uplus.onphone
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.uplus.onphone/.activity.MainActivity}
realActivity=com.uplus.onphone/.activity.MainActivity
autoRemoveRecents=false isPersistable=true numFullscreen=1 activityType=1
rootWasReset=true mNeverRelinquishIdentity=true mReuseTask=false mLockTaskAuth=LOCK_TASK_AUTH_PINNABLE
Activities=[ActivityRecord{64b2438 u0 com.uplus.onphone/.activity.MainActivity t3162}]
askedCompatMode=false inRecents=true isAvailable=true
mRootProcess=ProcessRecord{d749b7 25828:com.uplus.onphone/u0a265}
stackId=102
hasBeenVisible=true mResizeMode=RESIZE_MODE_RESIZEABLE mSupportsPictureInPicture=false isResizeable=true lastActiveTime=95850170 (inactive for 12s)
* Hist #0: ActivityRecord{64b2438 u0 com.uplus.onphone/.activity.MainActivity t3162}
packageName=com.uplus.onphone processName=com.uplus.onphone
launchedFromUid=10121 launchedFromPackage=com.lge.launcher3 userId=0
app=ProcessRecord{d749b7 25828:com.uplus.onphone/u0a265}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.uplus.onphone/.activity.MainActivity bnds=[312,1214][584,1665] (has
extras) }
frontOfTask=true task=TaskRecord{5546a0e #3162 A=com.uplus.onphone U=0 StackId=102 sz=1}
taskAffinity=com.uplus.onphone
realActivity=com.uplus.onphone/.activity.MainActivity
baseDir=/system/product/app/UplusTVonPhone/UplusTVonPhone.apk
dataDir=/data/user/0/com.uplus.onphone
stateNotNeeded=false componentSpecified=true mActivityType=standard
compat={640dpi, } labelRes=0x7f12002d icon=0x7f0f0002 theme=0x7f13000a
mLastReportedConfigurations:
mGlobalConfig={1.0 460mcc1mnc [zh_CN_#Hans,en_US,zh_CN] ldltr sw360dp w360dp h654dp 640dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 27
12, 1440) mAppBounds=Rect(0, 0 - 1440, 2712) mWindowingMode=fullscreen mActivityType=undefined} s.45 fontTypeIndex0 forceEmbolden0}
mOverrideConfig={1.0 460mcc1mnc [zh_CN_#Hans,en_US,zh_CN] ldltr sw360dp w360dp h654dp 640dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 -
1440, 2712) mAppBounds=Rect(0, 0 - 1440, 2712) mWindowingMode=fullscreen mActivityType=standard} s.45 fontTypeIndex0 forceEmbolden0}
CurrentConfiguration={1.0 460mcc1mnc [zh_CN_#Hans,en_US,zh_CN] ldltr sw360dp w360dp h654dp 640dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0,
0 - 1440, 2712) mAppBounds=Rect(0, 0 - 1440, 2712) mWindowingMode=fullscreen mActivityType=standard} s.45 fontTypeIndex0 forceEmbolden0}
taskDescription: label=“null” icon=null iconResource=0 iconFilename=null primaryColor=ffffffff
backgroundColor=fffafafa
statusBarColor=ff000000
navigationBarColor=ff000000
launchFailed=false launchCount=1 lastLaunchTime=-2m33s40ms
haveState=false icicle=null
state=RESUMED stopped=false delayedResume=false finishing=false focused=true
keysPaused=false inHistory=true visible=true sleeping=false idle=true mStartingWindowState=STARTING_WINDOW_REMOVED
fullscreen=true noDisplay=false immersive=false launchMode=0
frozenBeforeDestroy=false forceNewConfig=false
mActivityType=standard
waitingVisible=false nowVisible=true lastVisibleTime=-12s404ms
connections=[ConnectionRecord{b2a7614 u0 CR com.uplus.onphone/.player.PopupPlayer:@b109867}]
resizeMode=RESIZE_MODE_RESIZEABLE
mLastReportedMultiWindowMode=false mLastReportedPictureInPictureMode=false
translucent=false
Running activities (most recent first):
TaskRecord{5546a0e #3162 A=com.uplus.onphone U=0 StackId=102 sz=1}
Run #0: ActivityRecord{64b2438 u0 com.uplus.onphone/.activity.MainActivity t3162}
mResumedActivity: ActivityRecord{64b2438 u0 com.uplus.onphone/.activity.MainActivity t3162}
mLastPausedActivity: ActivityRecord{64b2438 u0 com.uplus.onphone/.activity.MainActivity t3162}
Stack #0: type=home mode=fullscreen
isSleeping=false
mBounds=Rect(0, 0 - 0, 0)
法三:
1、手机打开应用
2、执行:adb shell dumpsys activity top
linux: adb shell dumpsys activity | grep “mFocusedActivity”
windows: adb shell dumpsys activity | findstr “mFocusedActivity”
这种方法和法二类似,但仔细看一下下面的打印太恐怖了。我打印了安卓Launcher桌面活动信息,居然什么都暴露了,我擦谷歌爸爸太强大了!
D:\other>adb shell dumpsys activity top
TASK com.android.systemui id=3064 userId=0
ACTIVITY com.android.systemui/.recents.RecentsActivity 1c13a90 pid=2533
Local Activity ca56c1a State:
mResumed=false mStopped=true mFinished=false
mChangingConfigurations=false
mCurrentConfig={1.0 460mcc1mnc [zh_CN_#Hans,en_US,zh_CN] ldltr sw360dp w360dp h654dp 640dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 2712,1440) mAppBounds=Rect(0, 0 - 1440, 2712) mWindowingMode=fullscreen mActivityType=recents} s.45 fontTypeIndex0 forceEmbolden0}
mLoadersStarted=true
FragmentManager misc state:
mHost=android.app.Activity H o s t C a l l b a c k s @ d f 5 b 1 f e m C o n t a i n e r = a n d r o i d . a p p . A c t i v i t y HostCallbacks@df5b1fe mContainer=android.app.Activity HostCallbacks@df5b1femContainer=android.app.Activ