ADB命令行学习笔记

root权限
adb虽然可以用来做一些Root操作,但是前提是设备必须具备root权限,学习可以考虑用虚拟机。 命令:

adb root
复制代码
恢复root:

adb unroot
复制代码
设置adb的网络端口
命令:

adb -P <port> start-server
复制代码
这个几乎很少使用,不知到具体用处,之后补充记录

设备连接
查询设备
查询当前adb连接的设备信息

adb devices
复制代码
List of devices attached
0000119030001002        device
复制代码
输出的组成格式为[serialNumber] [state],其中0000119030001002为设备编号SN,device为设备的状态。设备的状态可以分为以下几种:

offline —— 表示设备未连接成功或无响应。

device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。

no device —— 没有设备/模拟器连接。

该命令为常用命令,多会使用。

USB连接
USB连接就是通过USB线,以及adb来连接Android设备,也是开发工作中使用得最多的连接方式。一般手机需要打开[ 设置」-「开发者选项」-「Android 调试」。如果没有该选项,可以到「设置」-「关于手机」连续点击「版本号」可以打开开发者选项。

USB无线
其实除了USB连接设备外,还可以通过无线网的方式连接,虽然开始需要USB线连接,但是想想可以离开USB线的限制,是不是也有一点小激动呢。操作步骤如下

首先,确认PC和设备是处于同一局域网下,比如同一个路由下的wiffi。这是非常重要的。
其次,将PC和设备通过USB连接在一起,通过adb devices确认是否连接成功.
然后,让设备在555端口监听TCP/IP 连接,当然部分特殊设备端口不是555,酌情调整:
adb tcpip 555
复制代码
之后,断开USB线连接
通过手机自身的设置」-「关于手机」-「状态信息」-「IP地址」或者(推荐后者)通过adb命令去获取设备的ip地址adb shell ifconfig | grep Mask.
使用命令行和得到的IP地址连接设备
adb connect <device-ip-address>
复制代码
<device-ip-address>也就是之前找到的ip地址.

最后,使用adb devices检测是否成功连接设备
无线连接(root)
无线连接的首要条件就是需要root权限.所以一开始就是adb root开启root权限。然后操作步骤与USB一样,但是无需连接USB线。 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。

首先,打开 Android 设备上的终端模拟器,在里面依次运行命令:
su
setprop service.adb.tcp.port 5555
复制代码
再者,通过手机自身的设置」-「关于手机」-「状态信息」-「IP地址」或者(推荐后者)通过adb命令去获取设备的ip地址adb shell ifconfig | grep Mask.

最后,在电脑上通过 adb 和 IP 地址连接 Android 设备。

adb connect <device-ip-address>
复制代码
这里的<device-ip-address> 就是上一步中找到的设备 IP 地址。

如果能看到 connected to <device-ip-address>:端口 这样的输出则表示连接成功。

Package管理
查阅应用列表
查阅应用列表的adb命令行模式如下:

adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
复制代码
前部分adb shell pm list packages为获取当前设备中所有应用的package信息,后面为过滤符。其中支持的过滤参数列表整理如下:

参数    显示列表
无    所有应用
-f    显示应用关联的 apk 文件
-d    只显示 disabled 的应用
-e    只显示 enabled 的应用
-s    只显示系统应用
-3    只显示第三方应用
-i    显示应用的 installer
-u    包含已卸载应用
<FILTER>    包名包含 <FILTER> 字符串
ps:<FILTER>除了直接可以过滤外,还可以使用grep做筛选 比如:

adb shell pm list packages clouwalk
复制代码

adb shell pm list packages |grep cloudwalk
复制代码
(部分设备不支持)

安装应用
安装应用为常用的adb命令行,其格式如下:

adb install [-xxx] <apk_path>
复制代码
其中xxx为修饰参数,用来指定应用apk的安装方式,具体可以有以下几种修饰方式:

参数    含义
-l    将应用安装到保护目录 /mnt/asec
-r    允许覆盖安装
-t    允许安装 AndroidManifest.xml 里 application 指定 android:testOnly="true" 的应用
-s    将应用安装到 sdcard
-d    允许降级覆盖安装
-g    授予所有运行时权限
出现如Success标识,代表安装成功。出现Failure [xxx],代表失败.常见的失败选项如下:

输出    含义    解决方法
INSTALL_FAILED_ALREADY_EXISTS    应用已经存在,或卸载了但没卸载干净    adb install 时使用 -r 参数,或者先 adb uninstall <packagename> 再安装
INSTALL_FAILED_INVALID_APK    无效的 APK 文件    检查apk文件的完整性和有效性
INSTALL_FAILED_INVALID_URI    无效的 APK 文件名    确保 APK 命名文件名里无中文或特殊字符
INSTALL_FAILED_INSUFFICIENT_STORAGE    空间不足    清理空间
INSTALL_FAILED_DUPLICATE_PACKAGE    已经存在同名程序    更改应用名或adb uninstall <packagename> 再安装
INSTALL_FAILED_NO_SHARED_USER    请求的共享用户不存在    
INSTALL_FAILED_UPDATE_INCOMPATIBLE    以前安装过同名应用,但卸载时数据没有移除;或者已安装该应用,但签名不一致    先 adb uninstall <packagename> 再安装
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 使用相同签名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值