adb使用学习
ADB使用学习
ADB是Android调试桥(Android Debug Bridge)的缩写,是一个用于在电脑和Android设备之间进行通信和调试的工具。
参考:https://blog.csdn.net/Sugar_wolf/article/details/127806122
ADB服务相关
使用:adb devices
列出当前设备状态,存在三种
当出现offline状态时,使用
adb kill-server
和adb start-server
实现重连。当出现unauthorized状态,说明被连接设备未接受连接设备的公钥,应该会弹窗。
使用命令adb shell,获取手机命令行:
ADB软件操作
安装卸载
adb install xxx.apk
用来安装软件;
adb install
实际是分三步完成:
push apk
文件到/data/local/tmp
。- 调用
pm install
安装。 - 删除
/data/local/tmp
下的对应 apk 文件。
adb install -r <文件路径\apk>:覆盖安装
adb install -d <文件路径\apk>:允许降级覆盖安装
adb install -g <文件路径\apk>:授权/获取权限,安装软件时把所有权限都打开
安装可能出现的失败情况:
- Failure:代表安装失败。APK 安装失败的情况有很多,Failure状态之后有安装失败输出代码。常见安装失败输出代码、含义及可能的解决办法如下:
输出代码 | 含义 | 解决办法 |
---|---|---|
INSTALL_FAILED_ALREADY_EXISTS | 应用已经存在,或卸载了但没卸载干净 | adb install 时使用 -r 参数,或者先 adb uninstall 再安装 |
INSTALL_FAILED_INVALID_APK | 无效的 APK 文件 | |
INSTALL_FAILED_INVALID_URI | 无效的 APK 文件名 | 确保 APK 文件名里无中文 |
INSTALL_FAILED_INSUFFICIENT_STORAGE | 空间不足 | 清理空间 |
INSTALL_FAILED_DUPLICATE_PACKAGE | 已经存在同名程序 | |
INSTALL_FAILED_NO_SHARED_USER | 请求的共享用户不存在 | |
INSTALL_FAILED_UPDATE_INCOMPATIBLE | 以前安装过同名应用,但卸载时数据没有移除;或者已安装该应用,但签名不一致 | 先 adb uninstall 再安装 |
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE | 请求的共享用户存在但签名不一致 | |
INSTALL_FAILED_MISSING_SHARED_LIBRARY | 安装包使用了设备上不可用的共享库 | |
INSTALL_FAILED_REPLACE_COULDNT_DELETE | 替换时无法删除 | |
INSTALL_FAILED_DEXOPT | dex 优化验证失败或空间不足 | |
INSTALL_FAILED_OLDER_SDK | 设备系统版本低于应用要求 | |
INSTALL_FAILED_CONFLICTING_PROVIDER | 设备里已经存在与应用里同名的 content provider | |
INSTALL_FAILED_NEWER_SDK | 设备系统版本高于应用要求 | |
INSTALL_FAILED_TEST_ONLY | 应用是 test-only 的,但安装时没有指定 -t 参数 | |
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE | 包含不兼容设备 CPU 应用程序二进制接口的 native code | |
INSTALL_FAILED_MISSING_FEATURE | 应用使用了设备不可用的功能 | |
INSTALL_FAILED_CONTAINER_ERROR | 1. sdcard 访问失败;2. 应用签名与 ROM 签名一致,被当作内置应用。 | 1. 确认 sdcard 可用,或者安装到内置存储;2. 打包时不与 ROM 使用相同签名。 |
INSTALL_FAILED_INVALID_INSTALL_LOCATION | 1. 不能安装到指定位置;2. 应用签名与 ROM 签名一致,被当作内置应用。 | 1. 切换安装位置,添加或删除 -s 参数;2. 打包时不与 ROM 使用相同签名。 |
INSTALL_FAILED_MEDIA_UNAVAILABLE | 安装位置不可用 | 一般为 sdcard,确认 sdcard 可用或安装到内置存储 |
INSTALL_FAILED_VERIFICATION_TIMEOUT | 验证安装包超时 | |
INSTALL_FAILED_VERIFICATION_FAILURE | 验证安装包失败 | |
INSTALL_FAILED_PACKAGE_CHANGED | 应用与调用程序期望的不一致 | |
INSTALL_FAILED_UID_CHANGED | 以前安装过该应用,与本次分配的 UID 不一致 | 清除以前安装过的残留文件 |
INSTALL_FAILED_VERSION_DOWNGRADE | 已经安装了该应用更高版本 | 使用 -d 参数 |
INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE | 已安装 target SDK 支持运行时权限的同名应用,要安装的版本不支持运行时权限 | |
INSTALL_PARSE_FAILED_NOT_APK | 指定路径不是文件,或不是以 .apk 结尾 | |
INSTALL_PARSE_FAILED_BAD_MANIFEST | 无法解析的 AndroidManifest.xml 文件 | |
INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION | 解析器遇到异常 | |
INSTALL_PARSE_FAILED_NO_CERTIFICATES | 安装包没有签名 | |
INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES | 已安装该应用,且签名与 APK 文件不一致 | 先卸载设备上的该应用,再安装 |
INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING | 解析 APK 文件时遇到 CertificateEncodingException | |
INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME | manifest 文件里没有或者使用了无效的包名 | |
INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID | manifest 文件里指定了无效的共享用户 ID | |
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED | 解析 manifest 文件时遇到结构性错误 | |
INSTALL_PARSE_FAILED_MANIFEST_EMPTY | 在 manifest 文件里找不到找可操作标签(instrumentation 或 application) | |
INSTALL_FAILED_INTERNAL_ERROR | 因系统问题安装失败 | |
INSTALL_FAILED_USER_RESTRICTED | 用户被限制安装应用 | |
INSTALL_FAILED_DUPLICATE_PERMISSION | 应用尝试定义一个已经存在的权限名称 | |
INSTALL_FAILED_NO_MATCHING_ABIS | 应用包含设备的应用程序二进制接口不支持的 native code | |
INSTALL_CANCELED_BY_USER | 应用安装需要在设备上确认,但未操作设备或点了取消 | 在设备上同意安装 |
INSTALL_FAILED_ACWF_INCOMPATIBLE | 应用程序与设备不兼容 | |
INSTALL_FAILED_TEST_ONLY | APK 文件是使用 Android Studio 直接 RUN 编译出来的文件 | 通过 Gradle 的 assembleDebug 或 assembleRelease 重新编译,或者 Generate Signed APK |
does not contain AndroidManifest.xml | 无效的 APK 文件 | |
is not a valid zip file | 无效的 APK 文件 | |
Offline | 设备未连接成功 | 先将设备与 adb 连接成功 |
unauthorized | 设备未授权允许调试 | |
error: device not found | 没有连接成功的设备 | 先将设备与 adb 连接成功 |
protocol failure | 设备已断开连接 | 先将设备与 adb 连接成功 |
Unknown option: -s | Android 2.2 以下不支持安装到 sdcard | 不使用 -s 参数 |
No space left on device | 空间不足 | 清理空间 |
Permission denied … sdcard … | sdcard 不可用 | |
signatures do not match the previously installed version; ignoring! | 已安装该应用且签名不一致 | 先卸载设备上的该应用,再安装 |
卸载:
adb uninstall [-k] \<package-name>
-k 参数可选,表示卸载应用但保留数据和缓存目录。
卸载软件思路
要卸载软件,首先需要获知<package-name>,记录一下我个人的探究过程:
在进入android shell后(使用 adb shell
),常见的相关工具有两个:
pm
pm(package-manager)是Android系统中的包管理器工具,用于管理应用程序包(APK)及其相关信息。它允许用户执行各种操作,包括安装、卸载、查询应用程序信息等。
pm list packages可以列出应用列表:
然而并没有什么用,依然不太清楚哪个package对应哪个app;
因此,可以使用一些比较方便的option进行筛选:
pm list packages -3
显示第三方应用,即用户自己安装的应用,也对应着手机操作者唯一具有卸载权限的应用;
pm list packages -u
显示由用户安装的应用,这里实际就包括系统预装了;
pm list packages -s
只显示系统应用程序。
那么三者究竟有什么关系,经过对于结果的统计,发现 -u的输出几乎是 -3 和 -s的并集,在我的手机(oppo)上验证,-u的输出与 -3 和 -s的并集之间仅仅相差几个pakcage;
dumpsys
dumpsys
是Android系统中一个强大的调试命令,用于提供关于系统服务状态和信息的详细报告。它可以展示各种系统级别的信息,包括运行中的服务、内存状态、CPU信息、网络状态、传感器数据等。
然而,在dumpsys后面添加各类服务的名字,就可以对于信息进行粗筛,如dumpsys window
或dumpsys battery
等,然而这些对于非系统开发者并没有什么用;
网上的教程一般都说,
亲测在oppo机型不太行,作为替代,可以使用:dumpsys activity activities | grep mControlTarget
c查看正在受控的activity:
也可以通过屏幕状态筛选正在活动的应用,如命令:dumpsys window windows | grep mSurface
这样一来,据此就可以尝试寻找需要进行卸载的App;
huawei系统软件卸载案例
参考,摘抄自:http://www.usbmi.com/5700.html
正常操作的情况下,安卓手机的控制只需要单用户即可,因此卸载用户目录下的软件即可,不需要从系统目录连根拔起斩尽杀绝(这样刷机的时候还能恢复)
第一步:
手机的”设置”—“系统”—“开发人员选项”,界面下滑找到”调试”,打开“USB调试”、“连接USB时总是弹出提示”“监控ADB安装应用”、“仅充电模式下允许USB调试”这四个选项,有些不让选也影响不大。
第二步:
电脑下载调试工具包 ADB Kits
数据线连接电脑和手机,连接后在手机选择仅充电
手机还会有一条连接确认,确认即可。
第三步:
adb命令(做打码处理):
1 | C:\Users\xxx\Desktop\Andriod\adb>adb devices |
说明已经连接了设备,下面就可以操作了
第四步:
1 | 获取系统当前用户的安装列表: |
输出到文件方便查看。
第五步:
开始动手!
禁用命令格式:adb shell pm disable-user 软件包名
启用命令格式:adb shell pm enable 软件包名
删除命令格式:adb shell pm uninstall --user 0 软件包名
附录1,常见软件包名称对应
摘抄自:http://www.8fe.com/jiaocheng/1201.html(个人认为非常全面了)
直接找到相应的包名执行命令开删就可以了!
包名 | 应用名称 |
---|---|
com.android.networkstack.inprocess | |
com.android.providers.downloads | 下载管理器 |
com.huawei.android.totemweather | 天气 |
com.huawei.desktop.explorer | 我的文件 |
com.huawei.arengine.service | 华为AR引擎 |
com.google.android.overlay.settingsProvider | |
com.android.soundrecorder | 录音机 |
com.google.android.configupdater | |
com.android.mms.service | 短信服务 |
com.android.companiondevicemanager | |
com.huawei.imedia.dolby | 杜比音效 |
com.google.android.ext.shared | |
com.google.android.onetimeinitializer | 谷歌one time |
com.huawei.desktop.systemui | |
com.huawei.multimedia.audioengine | |
com.huawei.numberidentity | |
com.huawei.KoBackup | 备份 |
com.google.ar.core | 谷歌AR服务 |
com.android.nfc | NFC服务 |
com.android.mms | 信息 |
com.huawei.systemserver | 系统服务 |
com.android.ons | |
com.huawei.himovie.partner1 | |
com.huawei.cloud | 华为云 |
com.huawei.profile | 华为Profile |
com.huawei.himovie.partner2 | |
com.android.contacts | 联系人 |
com.android.systemui.overlay | |
com.android.simappdialog | |
com.android.vending | Google Play商店 |
com.android.frameworkhwext.honor | |
com.huawei.wallet.sdk.walletsdk | |
com.android.modulemetadata | |
com.android.providers.media | 媒体存储 |
com.huawei.bluetooth | 通过蓝牙导入 |
com.android.email | 电子邮件 |
com.android.providers.blockednumber | 存储已屏蔽的号码 |
com.android.wallpaperbackup | 壁纸备份 |
com.Qunar | 去哪儿 |
com.google.android.gsf.login | 谷歌组件 |
com.huawei.android.mirrorshare | 无线分享 |
com.svox.pico | Pico TTS |
com.android.packageinstaller | 打包安装程序 |
com.android.frameworkhwext.overlay.dark | 安卓框架 |
com.google.android.printservice.readb | 谷歌组件 |
com.huawei.android.hwpay | 华为钱包安全支付 |
com.android.imedia.syncplay | |
com.android.providers.userdictionary | 用户词典 |
com.android.providers.telephony | 通话/信息存储 |
com.huawei.android.launcher | 华为桌面 |
com.huawei.camerakit.impl | |
com.huawei.androidx | AndroidX |
com.android.phone.recorder | 录音机 |
com.huawei.hidisk | 文件管理 |
com.huawei.featurelayer.featureframework | |
com.android.providers.calendar | 日历存储 |
com.huawei.android.tips | |
com.huawei.camera | 相机 |
com.android.exchange | Exchange服务 |
com.baidu.haokan | 好看视频 |
com.smile.gifmaker | gif制造商 |
com.huawei.hiskytone | 天际通 |
com.huawei.nlp | |
cn.wps.moffice_eng | WPS |
com.android.hwmirror | 镜子 |
com.huawei.dmsdp | |
com.huawei.hicar | 华为汽车 |
com.huawei.hiboard | 负一屏 |
com.huawei.ihealth | 华为健康 |
com.huawei.yellowpage | 在线黄页 |
com.huawei.internetaudioservice | 智能线控 |
com.huawei.livewallpaper.matewenty | 华山 |
com.google.android.backuptransport | 谷歌备份传输 |
com.huawei.android.thememan | 主题 |
com.ifytek.speechsuite | 讯飞语音引擎 |
com.android.inputmethod.latin | AOSP输入法 |
com.android.providers.contacts | 联系人存储 |
com.android.permissioncontroller | 安卓权限控制 |
com.huawei.assetsync | |
com.android.systemui | 系统界面 |
com.huawei.hwvoipservice | |
com.huawei.assetsyncservice | |
com.android.bluetooth | 蓝牙 |
com.huawei.hff | hff服务 |
com.huawei.aod | 灭屏显示 |
com.android.vebding | 谷歌play商店 |
com.andeoid.wallpaper.livepicker | 稻穗屏保 |
com.szzc.ucar.pilot | 神州租车 |
com.amap.android.ams | 高德位置服务 |
com.huawei.remoteassistant | 远程协助 |
com.autonavi.minimap | 高德地图 |
ctrip.android.view | 携程旅行 |
com.huawei.retaildemo | 演示程序 |
com.huawei.android.location.activityrecognition | 行为识别 |
com.huawei.geofence | 地理围栏 |
com.stupeflix.replay | Quik |
com.ifeng.news2 | 凤凰新闻 |
com.nuance.swype.emui | 华为Swype输入法 |
com.dianping.v1 | 大众点评 |
com.google.android.ext.services | android Services Library |
com.huawei.locationsharing | 位置共享 |
com.huawei.cryptosms.service | 短信加密 |
com.android.defcontainer | 软件包访问帮助程序 |
com.realvnc.android.remote | VNC远程控制 |
com.android.deskclock | 时钟 |
com.android.location.fused | 融合定位 |
com.google.android.syncadapters.contacts | |
com.android.server.telecom | 通话管理 |
com.google.android.webview | 安卓内置浏览器 |
com.android.gallery3d | 图库 |
android.ext.services | |
com.google.android.gsf | 谷歌服务框架 |
com.google.android.gms | 谷歌play服务 |
com.google.android.overlay.gmsconfig | |
androidx.camera.extensions.impl | |
com.android.providers.settings | |
com.huawei.livewallpaper.matetwenty | |
com.android.calendar | 日历 |
com.android.incallui | 拨号 |
com.huawei.systemmanager | 手机管家 |
com.huawei.securityserver | |
com.android.se | |
com.google.android.partnersetup | 谷歌合作伙伴设置 |
com.android.localtransport | |
com.android.calculator2 | 计算器 |
com.huawei.deviceauth | |
com.android.networkstack.permissionconfig | |
com.huawei.android.remotecontroller | 华为智能遥控 |
com.huawei.android.hwupgradeguide | 升级向导 |
com.android.huawei.HiMediaEngine | 定制多媒体引擎 |
com.android.shell | |
com.android.phone | 拨号 |
com.android.settings | |
com.qeexo.smartshot | 智能截屏 |
com.huawei.vrservice | 华为VR眼镜服务 |
com.huawei.compass | 指南针 |
com.google.android.printservice.recommendation | |
com.huawei.android.dsdscardmanager | 双卡管理 |
com.tencent.qqlivehuawei | 腾讯视频华为版 |
com.huawei.powergenie | 省电精灵 |
com.android.apps.tag | 标记 |
com.huawei.watch.sync | 手表应用同步 |
com.ss.android.ugc.aweme | 抖音短视频 |
com.huawei.mmitest | 华为测试组件 |
com.android.wallpaper.livepicker | 动态壁纸 |
com.huawei.android.wfdft | WLAN直连 |
com.huawei.android.instantonline | 华为一键热点应用 |
com.huawei.android.projectmenu | 工程菜单 |
com.android.vpndialogs | VPN设置 |
com.huawei.android.pushagent | 推送服务 |
com.android.cts.ctsshim | 旅行助手 |
com.android.dreams.phototable | 图片屏保程序 |
com.huawei.hitouch | Hi Touch功能 |
com.huawei.vassistant | 语音助手 |
com.android.onetimeinitializer | 一次性 |
com.huawei.hilink.framework | 智能家居连接服务 |
com.huawei.hwstartupguide | 安装向导 |
com.android.calllogbackup | 通讯录备份 |
com.android.managedprovisioning | 工作资料设置 |
com.android.proxyhandler | 处理器信息 |
com.huawei.fido.uafclient | 在线快速验证 |
com.android.emergency | 个人紧急信息 |
com.huawei.ims | 华为云镜像服务 |
com.huawei.hwpolicyservice | 华为旅行助手服务管理 |
com.huawei.hwapplet | 旅行助手策略管理 |
com.huawei.hicard | 卡片管理 |
com.huawei.hiview | 状态栏通知有关 |
com.huawei.trustspace | 支付保护中心 |
com.huawei.spaceservice | 云空间 |
com.huawei.fastapp | 快应用中心 |
com.huawei.hisuite | 华为手机助手 |
com.android.captiveportallogin | Captive Portal Login |
com.huawei.bd | 用户体验计划 |
com.huawei.hwdetectrepair | 智能检测 |
com.android.bluetoothmidiservice | 蓝牙模组 |
com.huawei.ca | ca服务 |
com.huawei.android.karaoke | K歌特效 |
com.huawei.rcsserviceapplication | 华为rcs服务 |
com.huawei.hiaction | 智能识屏中控模块 |
com.android.inputdevices | 输入设备 |
com.android.frameworkres.overlay | |
com.android.externalstorage | 外部存储设备 |
com.android.documentsui | 文件 |
com.huawei.secime | 华为安全输入法 |
com.android.htmlviewer | HTML查看器 |
com.huawei.regservice | 注册服务 |
com.huawei.trustcircle | 支付保护中心 |
com.huawei.wallet | 华为钱包 |
com.iflytek.speechsuite | 讯飞语音引擎 |
com.huawei.parentcontrol | 学生模式 |
com.huawei.recsys | 华为智能系统还原 |
com.huawei.iaware | 智能优化 |
com.huawei.android.UEInfoCheck | 自注册短信 |
com.huawei.synergy | 输入设备 |
com.huawei.android.chr | HwChrService |
com.android.wallpapercropper | 壁纸裁剪器 |
com.huawei.intelligent | 情景智能 |
com.huawei.android.FloatTasks | 悬浮导航 |
com.huawei.nearby | 华为附近 |
com.huawei.phoneservice | 会员服务 |
com.huawei.iconnect | 智能家居连接 |
com.android.statementservice | Intent Filter Verification Services |
com.huawei.trustagent | 智能解锁 |
com.huawei.android.instantshare | Huawei Share |
com.huawei.android.internal.app | Huawei Share |
com.huawei.hwasm | |
com.android.printspooler | 打印处理服务 |
com.android.sharedstoragebackup | |
com.huawei.wifiprobqeservice | WiFi服务 |
com.android.backupconfirm | 第三方的应用程序 |
com.android.stk | sim应用 |
com.android.pacprocessor | 电脑连接辅助 |
com.huawei.hiviewtunnel | 电量优化 |
com.huawei.android.AutoRegSms | 自动注册 |
com.android.frameworkhwext.HONOR | 荣耀框架 |
com.android.certinstaller | 证书安装器 |
com.android.mtp | MTP服务 |
com.android.frameworkhwext.dark | |
com.huawei.printservice | 谷歌组件 |
com.huawei.featurelayer.sharedfeature.map | 华为地图服务 |
com.huawei.motionservice | 手势服务 |
com.sankuai.meituan | 美团 |
com.huawei.health | 运动健康 |
org.simalliance.openmobileapi.service | SmartcardService |
com.huawei.hnreader | 荣耀阅读 |
com.huawei.vdrive | 驾驶模式 |
companiondevicemanager | 系统状态栏 |
com.huawei.android.FMRadio | 收音机 |
com.android.dreams.basic | 基本互动屏保 |
com.huawei.tips | 智能提醒 |
com.huawei.gameassistant | 游戏助手 |
com.android.storagemanager | 存储设备管理 |
com.huawei.scanner | 扫一扫 |
com.huawei.mycenter | 会员中心 |
com.huawei.contactscamcard | 名片全能王 |
com.huawei.hwireader | 华为阅读 |
com.android.browser | 浏览器 |
com.huawei.hwvplayer.youku | 华为视频优酷版 |
com.taobao.mobile.dipei | |
com.hicloud.android.clone | 手机克隆 |
com.xunmeng.pinduoduo | 拼多多 |
com.huawei.HwMultiScreenShot | 滚动截屏 |
com.ss.android.article.news | 今日头条 |
com.UCMobile | UC浏览器 |
com.android.keychain | 密钥链 |
com.example.android.notepad | 备忘录 |
com.huawei.nb.service | 可删可禁用 |
com.huawei.lives | 生活 |
com.google.android.marvin.talkback | TalkBack |
com.android.carrierconfig | 运营商配置 |
com.android.systEMUI.overlay | 主题界面 |
com.huawei.fans | 花粉俱乐部 |
com.baidu.searchbox | 百度搜素 |
com.huawei.gamebox | 华为游戏中心 |
com.wuba | 58同城 |
com.unionpay.tsmservice | tsm服务 |
com.huawei.hifolder | 精品推荐 |
com.huawei.screenrecorder | 屏幕录制 |
com.huawei.browser | 浏览器 |
com.android.mediacenter | 音乐 |
com.huawei.android.hiaidsengine | 屏幕录制 |
com.huawei.contentsensor | 取词 |
com.huawei.msdp | 综合传感信息处理平台 |
com.huawei.suggestion | 情景智能 |
com.huawei.search | 智慧搜索 |
com.huawei.himovie | 华为视频 |
com.huawei.android.findmyphone | 查找我的手机 |
com.huawei.android.airsharing | 多屏互动 |
com.huawei.skytone | 天际通数据服务 |
com.huawei.hbs.framework | |
com.huawei.lbs | HwLBSService |
com.huawei.smartlocation | |
com.huawei.appmarket | 华为应用市场 |
com.huawei.android.hwouc | 系统更新 |
com.huawei.pengine | 智能建议 |
com.huawei.videoeditor | 视频编辑 |
com.huawei.contacts.sync | 联系人同步 |
com.android.frameworkhwext.nova | 更换主题 |
com.huawei.android.thememanager | 主题 |
com.bjbyhd.screenreader_huawei | 屏幕阅读 |
com.huawei.android.hwaps | 智能分辨率 |
com.huawei.scenepack | 华为旅行助手 |
com.android.printservice.recommendation | 谷歌组件 |
com.huawei.pcassistant | 电脑端工具 |
com.android.keyguard | 华为杂志锁屏 |
com.android.providers.downloads.ui | 下载内容 |
com.huawei.hiai | 智慧引擎 |
com.huawei.languagedownloader | 下载语言 |
com.huawei.securitymgr | 隐私空间 |
com.huawei.imedia.sws | 音效管理 |
com.huawei.android.hsf | 华为框架服务 |
com.baidu.input_huawei | 百度输入法华为版 |
com.huawei.hwid | 华为移动服务 |
com.android.cts.priv.ctsshim | 旅行助手 |
模拟操作
am
am
命令是Android系统中的一个重要工具,用于与Activity Manager(活动管理器)进行交互。
一般来说,am的常见使用方法有如下:
- 启动activity:
adb shell am start -n <package-name>/<activity-name>
- 启动service:
adb shell am startservice -n <package-name>/<service-name>
- 强制停止activity:
adb shell am force-stop <package-name>
- 发送广播:
adb shell am broadcast -a <action>
- 杀死应用:
adb shell am kill <package-name>
其中:
- **-a <ACTION>**:指定要执行的操作,例如
android.intent.action.VIEW
。 - **-n <COMPONENT>**:明确指定要启动的Activity或Service的组件名称,例如
com.example.package/.MainActivity
。
启动activity:
am start -a android.settings.SETTINGS
# 打开系统设置页面am start -a android.intent.action.DIAL -d tel:10086
# 打开拨号页面am start -n com.android.mms/.ui.ConversationList
# 打开短信会话列表
启动/停止service:
顺便普及一下安卓知识:
在Android中,Activity和Service是两种不同的组件,它们有不同的功能和用途,但可以相互配合实现更丰富的应用程序功能。
Activity 是用户与应用程序交互的主要界面。它表示一个屏幕上的用户界面,并且通常与用户的交互相关联,比如接收用户的输入、展示信息等。Activity通常代表应用程序的一个单独屏幕或一个交互状态。例如,一个登录界面、设置页面或游戏的不同关卡都可以是不同的Activity。
Service 是一种后台运行的组件,用于执行长时间运行的操作或处理后台任务,而不需要直接与用户交互。Service可以在后台运行,即使用户切换到了其他应用或手机处于休眠状态,Service仍然可以继续运行。Service常常用于处理网络请求、播放音乐、执行文件下载、检索数据等需要长时间运行的任务。
Activity和Service之间的关系可以是相互独立的,也可以相互配合:
- Activity启动Service:Activity可以通过启动Service来执行后台任务,如在用户点击一个按钮后开始下载文件或播放音乐。
- Service通知Activity:Service可以通过广播、回调或其他方式与Activity通信,向Activity发送数据或通知,让Activity更新界面或执行相应操作。
- 绑定Service到Activity:Activity可以绑定到Service,这样它们之间可以建立更紧密的连接,Activity可以直接调用Service提供的方法进行交互。
启动service:adb shell am startservice [options] <intent>
停止service:adb shell am stopservice [options] <intent>
广播操作(broadcast):
可以向所有组件广播,也可以只向指定组件广播。
例如,向所有组件广播 BOOT_COMPLETED
:
1 | adb shell am broadcast -a android.intent.action.BOOT_COMPLETED |
又例如,只向 com.android.receiver.test/.BootCompletedReceiver
广播 BOOT_COMPLETED
:
1 | adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.android.receiver.test/.BootCompletedReceiver |
常见的事件有以下:
action | 触发时机 |
---|---|
android.net.conn.CONNECTIVITY_CHANGE | 网络连接发生变化 |
android.intent.action.SCREEN_ON | 屏幕点亮 |
android.intent.action.SCREEN_OFF | 屏幕熄灭 |
android.intent.action.BATTERY_LOW | 电量低,会弹出电量低提示框 |
android.intent.action.BATTERY_OKAY | 电量恢复了 |
android.intent.action.BOOT_COMPLETED | 设备启动完毕 |
android.intent.action.DEVICE_STORAGE_LOW | 存储空间过低 |
android.intent.action.DEVICE_STORAGE_OK | 存储空间恢复 |
android.intent.action.PACKAGE_ADDED | 安装了新的应用 |
android.net.wifi.STATE_CHANGE | WiFi连接状态发生变化 |
android.net.wifi.WIFI_STATE_CHANGED | WiFi状态变为启用/关闭/正在启动/正在关闭/未知 |
android.intent.action.BATTERY_CHANGED | 电池电量发生变化 |
android.intent.action.INPUT_METHOD_CHANGED | 系统输入法发生变化 |
android.intent.action.ACTION_POWER_CONNECTED | 外部电源连接 |
android.intent.action.ACTION_POWER_DISCONNECTED | 外部电源断开连接 |
android.intent.action.DREAMING_STARTED | 系统开始休眠 |
android.intent.action.DREAMING_STOPPED | 系统停止休眠 |
android.intent.action.WALLPAPER_CHANGED | 壁纸发生变化 |
android.intent.action.HEADSET_PLUG | 插入耳机 |
android.intent.action.MEDIA_UNMOUNTED | 卸载外部介质 |
android.intent.action.MEDIA_MOUNTED | 挂载外部介质 |
android.os.action.POWER_SAVE_MODE_CHANGED | 省电模式开启 |
然而:
推测没有root权限是不能进行广播的。
终止程序:
- 强制停止activity:
adb shell am force-stop <package-name>
- 停止应用:
adb shell am kill <package-name>
二者的区别是,kill是正常停止应用进程,而force-stop是立即终止应用程序的所有组件,故后者的威力更大,但force-stop不会释放应用程序的资源或清除其数据,只是强制停止应用程序的运行。因此,当应用程序进程出现问题或者卡死时,使用force-stop,一般情况则使用kill就行。
文件操作
文件操作实际并不复杂,和linux相同的rm
、mkdir
、pwd
、touch
、cp
、mv
等命令不做赘述。
比较指的关注且常用的就是push和pull,用于手机和终端进行交互:
从模拟器/设备下载指定的文件到计算机:adb pull <remote> [local]
指定的文件从计算机上传到模拟器/设备:adb push <local> <remote>
(pull和push需要在adb shell以外操作,毕竟不是adb shell pull)
内部储存:
手机文件管理-设备储存对应的目录是:/sdcard
各个应用的储存在:/sdcard/Andriod/data/<package-name>目录下,也就是应用数据目录:
如相册为:/sdcard/DCIM;即/sdcard/Andriod/data/以外的储存位置就是非应用数据目录,两者的差异就是卸载应用的时候系统会清除应用数据目录下的文件。
外部储存:
用户软件目录为:/data 然而这个目录是需要root权限的,否则不可读,在对应目录下有权限划分,软件只能读取自身目录下的文件。
举个例子:
如何打开网易云音乐呢,首先我们手动打开网易云音乐软件,然后使用命令dumpsys获取activity名:
然后am start -n com.netease.cloudmusic/com.netease.cloudmusic.activity.IconChangeDefaultAlias
就打开该软件啦;
输入操作
input
input
命令是在 Android 系统上模拟用户输入的工具,可以模拟各种输入设备(如触摸屏、键盘、鼠标等)的操作。以下是该命令的基本用法和参数:
基本用法:
1 | bashCopy code |
命令参数解释:
<source>
:指定输入设备的来源,如触摸屏(touchscreen)、键盘(keyboard)、鼠标(mouse)等。-d DISPLAY_ID
:指定显示器 ID。<command>
:指定要执行的操作命令。<arg>...
:相关参数。
可用命令及默认来源:
text <string>
:在当前焦点位置输入文本(默认来源为 touchscreen)。keyevent [--longpress|--doubletap] <key code number or name> ...
:发送按键事件,可以是按键代码或者名称(默认来源为 keyboard)。tap <x> <y>
:在指定位置模拟点击(默认来源为 touchscreen)。swipe <x1> <y1> <x2> <y2> [duration(ms)]
:在屏幕上模拟滑动操作(默认来源为 touchscreen)。draganddrop <x1> <y1> <x2> <y2> [duration(ms)]
:模拟拖放操作(默认来源为 touchscreen)。press
:执行按压操作(默认来源为 trackball)。press<dx> <dy>
:模拟滚动操作(默认来源为 trackball)。motionevent <DOWN|UP|MOVE|CANCEL> <x> <y>
:发送原始的 MotionEvent 事件(默认来源为 touchscreen)。keycombination [-t duration(ms)] <key code 1> <key code 2> ...
:发送组合键事件(默认来源为 keyboard)。
以text为例:
adb shell input text "hello world"
就可以在手机焦点处输入hello world
按钮事件 - keyevent实例
具体可参看
https://developer.android.com/reference/android/view/KeyEvent
adb shell input keyevent <keycode>
命令:
keycode | 含义 | 代码 |
---|---|---|
3 | HOME 键 | KEYCODE_HOME |
4 | 返回键 | FLAG_KEEP_TOUCH_MODE |
5 | 打开拨号应用 | KEYCODE_CALL |
24 | 增加音量 | KEYCODE_VOLUME_UP |
25 | 降低音量 | KEYCODE_VOLUME_DOWN |
26 | 电源键 | KEYCODE_POWER |
27 | 摄像机照相(首先要启动相机应用) | KEYCODE_CAMERA |
122 | 移动光标到行首或列表顶部 | KEYCODE_MOVE_HOME |
123 | 移动光标到行末或列表底部 | KEYCODE_MOVE_END |
220 | 降低屏幕亮度 | KEYCODE_BRIGHTNESS_DOWN |
221 | 提高屏幕亮度 | KEYCODE_BRIGHTNESS_UP |
164 | 静音 | KEYCODE_VOLUME_MUTE |
使用keycode 或者 对应的代码都可以。
坐标
press、roll等操作都需要手机上的坐标,因此稍微研究一下:
打开坐标后,会有屏幕上面的一部分显示坐标情况:
当触摸时,会显示X、Y实时坐标(图中没有),完成一道轨迹后,会显示dx、dy,即起止点的变化情况,滑动时还会有Xv、Yv表示速度。
有一些关键点:
(0,0)在手机左上角,X向右增长、Y向下增长
左下角坐标约为(1450,3200),实际大小其实可以命令查到:
正常滑动速度也就是Xv = 1左右
因此综上,举个例子,模拟一下锁屏的滑动操作:
swipe <x1> <y1> <x2> <y2>
:swipe 300 1000 300 500
从坐标(300,1000)滑到(300,500)即在手机的左侧的上半部分,模拟了一次短程的向上滑动;
截图
截图保存在电脑:adb exec-out screencap -p > sc.png
或者先保存在手机adb shell screencap -p /sdcard/sc.png
,然后导出到电脑adb pull /sdcard/sc.png
;
录制屏幕以 mp4 格式保存到 /sdcard:adb shell screenrecord /sdcard/filename.mp4
需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。
如果需要导出到电脑:
adb pull /sdcard/filename.mp4
获取activity
https://www.cnblogs.com/yongfengnice/p/14268229.html
android开发获取手机当前界面Activity完整包名的解决方法
电脑连上手机,终端输入:adb shell //进入手机终端
输入 logcat | grep cmp= //然后终端就进入了堵塞监听状态,比如 logcat | grep cmp=com.suyf.test 可以只查看该包名的信息
操作手机打开APP,终端就会监听显示出当前打开的APP包名和Activity名称。
比如: START u0 {flg=0x10000000 cmp=com.miui.securitycenter/com.miui.permcenter.autostart.AutoStartManagementActivity} from uid 10514
这个方法一般用于查看要跳转的第三方页面,很方便就可以查看到完整的页面路径。