android@adb连接电脑和android设备@安装和卸载@清除app数据
文章目录
ref
adb连接电脑和android设备
android设备端设置和准备
- USB选项:
- 选择文件传输
- 而不是仅充电(只会导致文件传输等功能无法生效)
- 典型错误:
more than one device/emulator
- 典型错误:
- 打开开发者选项(developerOptions)
- 启用USB调试(USB debugging)
- Switche to debugging mode when USB is connected
- 允许通过USB安装应用(apps)(Install via USB)
- 根据设备情况启用(比如MIUI)
- (可选)关闭授权过期功能(Disalble adb authorizatoin timeout)
电脑端准备
- 下载adb工具包,并将所在目录用命令行打开(推荐配置到系统环境变量,以便在任何目录下可以调用adb)
- 将需要安装的包准备在已知目录(比如桌面)或者adb命令工具所在目录
- 前者使用绝对路径定位安装包位置:执行命令的格式为
adb install xxx/xxx/appName.apk>
完成安装 - 后者只需要知道安装包的名字即可执行安装:执行
adb install <appName.apk>
完成安装即可
- 前者使用绝对路径定位安装包位置:执行命令的格式为
android设备开发者选项设置推荐(可选)
- 如果您经常用手机连接电脑做通行/传输,那么建议将usb连接的默认选项设置为
File Transfer
(文件传输) - 设置方法:
- 较新android设备可以在设置搜索框中搜索
默认
- 或者直接在设置中按照打开路径:
Additional settings/Developer options/Default Use configuration/File Transfer
- 较新android设备可以在设置搜索框中搜索
实例
adb 安装app实例👺
-
检查设备链接情况
-
PS C:\Users\cxxu\Desktop\n11tp> adb devices List of devices attached UO7PKFNF99IR9TV4 device
-
-
执行安装
-
PS C:\Users\cxxu\Desktop> adb install .\magisk.apk Performing Streamed Install Success
-
看到
success
,说明安装成功 -
上述命令在2类情形下可以执行:
- 安装包在桌面上,即
C:\Users\xxxx\Desktop>
- 或者
adb
所在目录被配置环境变量Path
中
- 安装包在桌面上,即
-
adb 卸载app实例
-
adb uninstall <packageName>
-
例如:卸载酷安应用市场:
PS C:\Users\cxxu\Downloads> adb uninstall com.coolapk.market Success
-
如果要降级安装某些应用,通常,就需要先卸载新版本,再安装老版本
- 如果有root权限或其他高于一般的权限,可以直接强制降级app
- 比如核心破解这类修改系统默认行为的工具
FAQ@可能出现的问题👺
错误的进入adb shell
-
xaga:/sdcard $ install magisk.apk install: Needs 2 arguments
- adb install 是adb可执行文件提供,而不是adb shell 提供的(toybox)
more than one device/emulator
-
PS C:\Users\cxxu\Desktop\n11tp> adb install .\magisk.apk adb.exe: more than one device/emulator
-
初步排查:
-
使用
adb devices
-l检查当前列表- 这里加一个参数
-l
会列出设备更加详细的信息,推荐加上,可看到设备型号
- 这里加一个参数
-
下面是adb 将设备识别为多模拟设备
-
这可能是根手机端选择的链接方式的选项有关!
-
从而导致虽然只连接了一台设备,却扫描出了2台设备(包括模拟设备,应该是您的选项
Use USB for
的选项更换之后导致的) -
PS C:\Users\cxxu> adb devices List of devices attached UO7PKFNF99IR9TV4 device emulator-5554 offline
-
-
如果向上面所讲的那样,发现了多台设备,那么考虑如下做法:
-
断开所有adb链接:
adb kill-server
-
然后重新检查设备列表
-
PS C:\Users\cxxu> adb kill-server PS C:\Users\cxxu> adb devices -l * daemon not running; starting now at tcp:5037 * daemon started successfully List of devices attached UO7PKFNF99IR9TV4 device product:xaga model:22041216C device:xaga transport_id:1
-
您也可以选择跳过
adb kill-server
,通过追加选项-s
指定设备参数 -
这样就不会导致设备指代不明的错误
-
如果您链接了多个android设备(包括虚拟设备),
- 考虑物理断开与其他设备
- 但是最优雅的方式,是指定具体设备进行通行/控制
adb -s xxx
- 这里的
xxx
代指的是设备序列号,例如上面的UO7PKFNF99IR9TV4
-
-
-
开发者选项相关开关为正确开启,也可能导致相应错误
-
-
-
PS C:\Users\cxxu\Desktop\n11tp> adb install .\magisk.apk Performing Streamed Install adb: failed to install .\magisk.apk: Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]
第三方安装器
- 某些系统由于某些原因限制了安装第三方app
- 可以考虑使用第三方安装器:GitHub - Xposed-Modules-Repo/com.yxer.compo.module: R-安装组件-扩展
- 这个软件以及类似软件可以在Coolapk(酷安)找到相关资源贴)
查看应用版本
-
dumpsys package <com.example.packageName>|grep versionName -i
-
例如,查看酷安的版本:
windows_x86_64:/$ dumpsys package com.coolapk.market|grep versionName -i versionName=13.1.3
清除app数据
-
adb shell clear <appPackage>
-
例如
-
PS C:\Users\cxxu\Desktop> adb shell pm clear com.android.settings Success
-
-
例如刷入的某些模块导致系统无法正常运行,(比如卡在锁屏界面),可以尝试清除受怀疑的模块或者禁用它
参考adb文档
-
PS C:\Users\cxxu> adb Android Debug Bridge version 1.0.41 Version 33.0.2-8557947 Installed as D:\exes\platform-tools\adb.exe ....省略篇幅....(跳过,直达主题:..app intallation app installation (see also `adb shell cmd package help`): install [-lrtsdg] [--instant] PACKAGE push a single package to the device and install it install-multiple [-lrtsdpg] [--instant] PACKAGE... push multiple APKs to the device for a single package and install them install-multi-package [-lrtsdpg] [--instant] PACKAGE... push one or more packages to the device and install them atomically -r: replace existing application -t: allow test packages -d: allow version code downgrade (debuggable packages only) -p: partial application install (install-multiple only) -g: grant all runtime permissions --abi ABI: override platform's default ABI --instant: cause the app to be installed as an ephemeral install app --no-streaming: always push APK to device and invoke Package Manager as separate steps --streaming: force streaming APK directly into Package Manager --fastdeploy: use fast deploy --no-fastdeploy: prevent use of fast deploy --force-agent: force update of deployment agent when using fast deploy --date-check-agent: update deployment agent when local version is newer and using fast deploy --version-check-agent: update deployment agent when local version has different version code and using fast deploy (See also `adb shell pm help` for more options.) uninstall [-k] PACKAGE remove this app package from the device '-k': keep the data and cache directories
-
根据帮助文档
- app installation (see also
adb shell cmd package help
):- install [-lrtsdg] [–instant] PACKAGE
push a single package to the device and install it
- install [-lrtsdg] [–instant] PACKAGE
- 可以发现,使用adb程序的子命令install来安装某个包到设备
- 具体通过
adb install
来调用,因为install package是adb可执行文件提供的命令接口 - 该包含了多个可选的选项和一个参数(安装包的路径)
- 也可以不使用任何选项,默认行为就是执行app包文件安装
- 吐槽一下原文档第一个子命令install没有换行的问题,容易漏看,可以结合grep来看文档
- 具体通过
- app installation (see also