ADB命令:修订间差异

来自Uotan Wiki · 刷机百科
无编辑摘要
无编辑摘要
 
(未显示1个用户的4个中间版本)
第1行: 第1行:
连接管理
<h2>连接管理</h2>
 
列出所有连接设备及其序列号:
列出所有连接设备及其序列号:
 
<pre>adb devices</pre>
<code>adb devices</code>
 
如果有多个连接设备,则需要使用序列号来区分:
如果有多个连接设备,则需要使用序列号来区分:
 
<pre>export ANDROID_SERIAL=&lt;设备序列号&gt;</pre>
<code>export ANDROID_SERIAL=<设备序列号></code>
<pre>adb shell ls</pre>
 
<code>adb shell ls</code>
 
多设备下连接指定设备
多设备下连接指定设备
 
<pre>adb -s 序列号 shell</pre>
<code>adb -s 序列号 shell</code>
 
可以通过网络来连接 ADB:
可以通过网络来连接 ADB:
让设备端的 adbd 重启,并在 TCP 端口 5555 处监听
<pre>adb tcpip 5555</pre>
此时可以断开 USB 连接
远程连接设备,设备的 IP 地址是 192.168.1.100
<pre>adb connect 192.168.1.100:5555</pre>
断开连接
<pre>adb disconnect 192.168.1.100:5555</pre>


<nowiki>#</nowiki> 让设备端的 adbd 重启,并在 TCP 端口 5555 处监听
<p style="color: gray;">注:在安卓11及以上版本中,可以直接在开发者选项中启用无线调试</p>
 
<code>adb tcpip 5555</code>
 
<nowiki>#</nowiki> 此时可以断开 USB 连接
 
<nowiki>#</nowiki> 远程连接设备,设备的 IP 地址是 192.168.1.100
 
<code>adb connect 192.168.1.100:5555</code>
 
<nowiki>#</nowiki> 断开连接
 
<code>adb disconnect 192.168.1.100:5555</code>
 
调试
 
获取系统日志 <code>adb logcat</code>


<h2>调试</h2>
<h4>获取系统日志</h4>
<pre>adb logcat</pre>
用法
用法
<pre>adb logcat [选项] [应用标签]</pre>


<code>adb logcat [选项] [应用标签]</code>
<h5>示例</h5>
 
查看全部日志
示例
<pre>adb logcat</pre>
 
仅查看部分日志
<nowiki>#</nowiki> 查看全部日志
<pre>adb logcat -s WifiStateMachine StateMachine</pre>
 
<code>adb logcat</code>
 
<nowiki>#</nowiki> 仅查看部分日志
 
<code>adb logcat -s WifiStateMachine StateMachine</code>
 
运行命令 adb shell


获取详细运行信息 <code>adb bugreport</code>


<code>adb bugreport</code> 用于错误报告,里面包含大量有用的信息。
<code>adb bugreport</code>用于错误报告,里面包含大量详细运行信息。


示例
<h5>示例</h5>
 
<pre>adb bugreport</pre>
<code>adb bugreport</code>
保存到本地,方便用编辑器查看
 
<pre>adb bugreport >bugreport.txt</pre>
<nowiki>#</nowiki> 保存到本地,方便用编辑器查看
 
<code>adb bugreport >bugreport.txt</code>
 
root 权限
 
如果 TARGET_BUILD_VARIANT 使用的是 userdebug 模式,要获得 root 权限,需要先运行:
 
<code>adb root</code>


<h2>root 权限</h2>
如果<code>TARGET_BUILD_VARIANT</code>使用的是 userdebug 模式,要获得 root 权限,需要先运行:
<pre>adb root</pre>
让 ADB 的设备端切换到 root 权限模式,这样 adb remount 等需要 root 权限的命令才会成功。
让 ADB 的设备端切换到 root 权限模式,这样 adb remount 等需要 root 权限的命令才会成功。
<p style="color: gray;">注:如果 TARGET_BUILD_VARIAN </code>使用的是 eng 模式,则 adb 默认为 root 权限不需要切换</p>


应用管理
<h2>应用管理</h2>
 
<h4>安装应用</h4>
安装应用 <code>adb install</code>
<pre>adb install</pre>
 
用法:
 
<code>adb install [选项] 应用包.apk</code>


<h5>用法</h5>
<pre>adb install [选项] 应用包.apk</pre>
选项包括:
选项包括:


-l forward-lock
<strong>-l</strong> forward-lock
 
-r 重新安装应用,保留原先数据
 
-s 安装到 SD 卡上,而不是内部存储


示例:
<strong>-r</strong> 重新安装应用,保留原先数据


<nowiki>#</nowiki> 安装 facebook.apk
<strong>-s</strong> 安装到 SD 卡上,而不是内部存储


<code>adb install facebook.apk</code>
<h5>示例</h5>
安装 facebook.apk
<pre>adb install facebook.apk</pre>
升级 twitter.apk
<pre>adb install -r twitter.apk</pre>
如果安装成功,工具会返回成功提示 <strong>Success</strong>;失败的话,一般是以下几种情况:


<nowiki>#</nowiki> 升级 twitter.apk
<strong>INSTALL_FAILED_ALREADY_EXISTS:</strong> 此时需要用 -r 参数来重新安装。


<code>adb install -r twitter.apk</code>
<strong>INSTALL_FAILED_SIGNATURE_ERROR:</strong> 应用的签名不一致,可能是发布版和调试版签名不同所致。


如果安装成功,工具会返回成功提示 Success;失败的话,一般是以下几种情况:
<strong>INSTALL_FAILED_INSUFFICIENT_STORAGE:</strong> 存储空间不足,需要检查设备存储情况。


INSTALL_FAILED_ALREADY_EXISTS: 此时需要用 -r 参数来重新安装。
INSTALL_FAILED_SIGNATURE_ERROR: 应用的签名不一致,可能是发布版和调试版签名不同所致。如果确认 APK 文件签名正常,可以用 adb uninstall 命令先卸载旧的应用,然后再安装。
INSTALL_FAILED_INSUFFICIENT_STORAGE: 存储空间不足,需要检查设备存储情况。
卸载应用 <code>adb uninstall</code>


<h4>卸载应用</h4>
<pre>adb uninstall</pre>
用法:
用法:
 
<pre>adb uninstall 应用包名称</pre>
<code>adb uninstall</code> 应用包名称
 
示例:
示例:
 
<pre>adb uninstall com.android.chrome</pre>
adb uninstall com.android.chrome
 
应用包名称可以用以下命令列出:
应用包名称可以用以下命令列出:
 
<pre>adb shell pm list packages -f</pre>
<code>adb shell pm list packages -f</code>
 
运行结果是:
运行结果是:
<pre>package:/system/app/Bluetooth.apk=com.android.bluetooth</pre>
前面是 apk 文件,后面则是对应的包名称。


package:/system/app/Bluetooth.apk=com.android.bluetooth
<h2>其他</h2>
 
<h4>多用户相关</h4>
前面是 apk 文件,后面则是对应的包名称。
从Android 4.0开始,Google就开始在Android上布局多用户,UserManager因此而诞生,然而此时还没有对应的Binder服务。真正支持多用户是从Android 4.2 开始,即便如此,系统中也依然存在各种Bug和兼容性问题。直到Android 6.0,Android多用户才比较完善,国内外的厂家也纷纷开始针对多用户这个噱头来做各种 “花里胡哨” 的操作,“手机分身”、“分身应用”、“应用双开” 应运而生,不得不说,国内的厂家在多用户这方面定制化到如今已经非常稳定和完善了。各个用户之间的数据不互通,由各自的用户管理各自的数据。
在一些类原生ROM上,多用户会默认存在于手机的设置中,你可以通过搜索"多用户“直达设置项,当然,你也可以用adb调试桥来方便的管理手机上的多用户,
例如:
<pre>adb shell pm list users</pre>
查看当前设备中的用户列表。
<pre>adb shell pm create-user 10 godv</pre>
创建一个用户ID为10 用户名叫godv的用户。
<pre>adb shell am switch-user 10</pre>
切换到用户ID为10的用户。
<pre>db shell am start-user 10</pre>
启动用户ID为10的用户。
<pre>adb install –user 10 name.apk</pre>
把应用程序安装在用户ID为10的用户下。
<pre>adb shell pm remove-user 10</pre>
移除用户ID为10的用户。

2024年8月22日 (四) 22:20的最新版本

连接管理

列出所有连接设备及其序列号:

adb devices

如果有多个连接设备,则需要使用序列号来区分:

export ANDROID_SERIAL=<设备序列号>
adb shell ls

多设备下连接指定设备

adb -s 序列号 shell

可以通过网络来连接 ADB: 让设备端的 adbd 重启,并在 TCP 端口 5555 处监听

adb tcpip 5555

此时可以断开 USB 连接 远程连接设备,设备的 IP 地址是 192.168.1.100

adb connect 192.168.1.100:5555

断开连接

adb disconnect 192.168.1.100:5555

注:在安卓11及以上版本中,可以直接在开发者选项中启用无线调试

调试

获取系统日志

adb logcat

用法

adb logcat [选项] [应用标签]
示例

查看全部日志

adb logcat

仅查看部分日志

adb logcat -s WifiStateMachine StateMachine


adb bugreport用于错误报告,里面包含大量详细运行信息。

示例
adb bugreport

保存到本地,方便用编辑器查看

adb bugreport >bugreport.txt

root 权限

如果TARGET_BUILD_VARIANT使用的是 userdebug 模式,要获得 root 权限,需要先运行:

adb root

让 ADB 的设备端切换到 root 权限模式,这样 adb remount 等需要 root 权限的命令才会成功。

注:如果 TARGET_BUILD_VARIAN 使用的是 eng 模式,则 adb 默认为 root 权限不需要切换

应用管理

安装应用

adb install
用法
adb install [选项] 应用包.apk

选项包括:

-l forward-lock

-r 重新安装应用,保留原先数据

-s 安装到 SD 卡上,而不是内部存储

示例

安装 facebook.apk

adb install facebook.apk

升级 twitter.apk

adb install -r twitter.apk

如果安装成功,工具会返回成功提示 Success;失败的话,一般是以下几种情况:

INSTALL_FAILED_ALREADY_EXISTS: 此时需要用 -r 参数来重新安装。

INSTALL_FAILED_SIGNATURE_ERROR: 应用的签名不一致,可能是发布版和调试版签名不同所致。

INSTALL_FAILED_INSUFFICIENT_STORAGE: 存储空间不足,需要检查设备存储情况。


卸载应用

adb uninstall

用法:

adb uninstall 应用包名称

示例:

adb uninstall com.android.chrome

应用包名称可以用以下命令列出:

adb shell pm list packages -f

运行结果是:

package:/system/app/Bluetooth.apk=com.android.bluetooth

前面是 apk 文件,后面则是对应的包名称。

其他

多用户相关

从Android 4.0开始,Google就开始在Android上布局多用户,UserManager因此而诞生,然而此时还没有对应的Binder服务。真正支持多用户是从Android 4.2 开始,即便如此,系统中也依然存在各种Bug和兼容性问题。直到Android 6.0,Android多用户才比较完善,国内外的厂家也纷纷开始针对多用户这个噱头来做各种 “花里胡哨” 的操作,“手机分身”、“分身应用”、“应用双开” 应运而生,不得不说,国内的厂家在多用户这方面定制化到如今已经非常稳定和完善了。各个用户之间的数据不互通,由各自的用户管理各自的数据。 在一些类原生ROM上,多用户会默认存在于手机的设置中,你可以通过搜索"多用户“直达设置项,当然,你也可以用adb调试桥来方便的管理手机上的多用户, 例如:

adb shell pm list users

查看当前设备中的用户列表。

adb shell pm create-user 10 godv

创建一个用户ID为10 用户名叫godv的用户。

adb shell am switch-user 10

切换到用户ID为10的用户。

db shell am start-user 10

启动用户ID为10的用户。

adb install –user 10 name.apk

把应用程序安装在用户ID为10的用户下。

adb shell pm remove-user 10

移除用户ID为10的用户。