八字 求签 排盘 黄历
网站地图
首页 > 紫微斗数

紫薇斗数apk

作者:肜荀命理网 · 更新日期:2025-08-12

推荐精准的测试

(点击上方公众号,可快速关注)

来源:伯乐在线专栏作者 - 踏歌行

链接: *** ://android.jobbole *** /84804/

点击 → 了解如何加入专栏作者

Android 开发中, adb 是开发者经常使用的工具,是 Android 开发者必须掌握的。

Android Debug Bridge,Android 调试桥接器,简称 adb ,该工具位于 sdk/platform-tools/ 目录下,其源码位于 path-to-sourcecode/ *** /core/adb 目录下,是用于管理模拟器或真机状态的万能工具。 adb 采用了客户端-服务器模型,包括三个部分:

客户端部分,运行在开发用的电脑上,可以在命令行中运行adb命令来调用该客户端,像 DDMS 这样的 Android 工具也可以调用 adb 客户端。

守护进程部分,运行于模拟器或手机的后台。

服务端部分,是运行在开发用电脑上的后台进程,用于管理客户端与运行在模拟器或真机的守护进程通信。

adb 工具模型示意图如下:

adb 的工作原理

当启动 adb 客户端时,客户端首先检查 adb 服务端进程是否运行,如果没有运行,则启动服务端。当服务端启动时,它会绑定到本地的 TCP5037 端口,并且 *** 从 adb 客户端发来的命令——所有 adb 客户端都使用 5037 端口与 adb 服务端通信。

接下来服务端与所有正在运行的模拟器或手机连接。它通过扫描 5555-5585 之间的奇数号端口来搜索模拟器或手机,一旦发现 adb 守护进程,就通过此端口进行连接。需要说明的是,每一个模拟器或手机使用一对有序的端口,偶数号端口用于控制台连接,奇数号端口用于 adb 连接,例如:

Emulator1,console: 5554

Emulator1,adb: 5555

Emulator2,console: 5556

Emulator2,adb: 5557

即如果模拟器与 adb 在 5555 端口连接,则其与控制台的连接就是 5554 端口。

当服务端与所有的模拟器建立连接之后,就可以使用 adb 命令来控制或者访问了。因为服务端管理着连接并且可以接收到从多个 adb 客户端的命令,所以可以从任何一个客户端或脚本来控制任何模拟器或手机设备。

补充:

1. 使用 adb 命令调试需要手机开启 开发者模式 下的 USB 调试,在 Android 4.2 及更高的版本中,开发者选项默认是隐藏的,你可以去 设置——关于手机 ,然后连续点击七次版本号即可。返回上层就可以在底部看见 开发者模式 了。当然有些定制的 ROM 开启方式会有点不一样,这个就要去问 ROM 的开发者了。

2. 关于 USB 调试与计算机的 RSA 密钥指纹配对。Google 官方原文如下:

When you connect a dev *** running Android 4.2.2 or higher to your computer, the *** shows a dialog asking whether to accept an RSA key that allows debugging through this computer. This security mechani *** protects user dev *** s because it ensures that USB debugging and other adb commands cannot be executed unless you’re able to unlock the dev *** and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with SDK Platform-tools r16.0.1 and higher) in order to debug on a dev *** running Android 4.2.2 or higher.

大意就是,你想使用 USB调试 就得启用 USB调试 模式下的 RSA密钥指纹。不然我就不给你用。

3. 关于使用真机调试的更多信息可参考:Run Apps on a Hardware Dev *** 。

adb 用法

查询模拟器或手机状态

了解 adb 服务端连接的模拟器或手机可以帮助更好的使用 adb 命令,这可以通过 dev *** s 命令来列举当前连接的设备:

adb dev *** s

执行结果是 adb 为每一个设备输出以下状态信息:

序列号(serialNumber):由 adb 创建用于唯一标识设备的字符串,格式是 设备类型-端口号,例如: emulator-5554

连接状态(state),其值是可能是下面的任意一种:

offline — 未连接或未响应

dev *** — 表示设备已经连接到服务端。但需要注意的是,这个状态并不表示 Android *** 已经完全启动起来并且可 *** 作,因为 *** 在启动的过程中就已经连接 adb ,但这个状态是正常的可 *** 作状态。

no dev *** – 表示没有任何设备连接(楼主测试过程中没有碰到过 no dev *** 的情况,没连接设备就没任何输出)

每一个设备的输出形如:

[serialNumber][state]

下面是 adb dev *** s 命令和其执行结果:

$adb dev *** s

List of dev *** s attached

emulator-5554dev ***

emulator-5556dev ***

emulator-5558dev ***

如果没有模拟器或手机在运行,运行 adb dev *** s 命令的执行结果如下:

$adb devces

List of dev *** s attached

*** 作指定模拟器或手机

如果有多个模拟器或手机正在运行,当使用 adb 命令的时候就需要指定目标设备,这可以通过使用 -s 选项参数实现,用法如下:

adb-sserialNumber command

你可以使用 adb 命令指定序列号在特定的设备上执行命令,这里可以先使用前面提到的 adb dev *** s 命令查询设备的序列号信息。

例如:

adb-semulator-5556install helloWorld.apk

需要注意的是,如果使用了 -s 而没有指定设备的话, adb 会报错。

补充:

这是 Google 官方给出在多设备的情况下,不用 -s 参数指定目标设备的快捷方式,原文如下:

If you have multiple dev *** s available (hardware or emulated), but only one is an emulator, simply use the -e option to send commands to the emulator. Likewise if there’s multiple dev *** s but only one hardware dev *** attached, use the -d option to send commands to the hardware dev *** .

大意就是:如果你有多个设备,即既有模拟器,又有真机,但是模拟器只有一个,那么你可以使用 -e 参数想模拟器发送命令,用法如下:

$adb-einstall helloWorld.apk

//同理,如果有多个设备,但只有一个真机,可以使用如下命令快速发送命令

$adb-dinstall helloWorld.apk

安装应用

使用 adb install 命令可以从开发用电脑中复制应用程序并且安装到模拟器或手机上,adb install 命令必须指定待安装的.apk文件的路径:

adb install[-lrtsdg]path_to_apk

(-l: 锁定该程序)

(-r: 重新安装该程序,保留应用数据)

(-t: allow test packages)

(-s: 将应用安装到SD卡,不过现在手机好像都没有SD卡了吧)

(-d: 允许降版本号安装,当然只有debug包才能使用)

紫薇斗数apk

(-g: 安装完默认授予所有运行时权限,这个应该对Android6.0及之后的版本才有效吧)

更多关于创建 apk 文件可参考:Build And Running

卸载应用

既然有安装应用的命令,那当然有卸载应用的命令。卸载应用命令的格式如下:

//package 表示要卸载应用的包名

adb uninstall[-k]package

(-k:不删除程序运行所产生的数据和缓存目录)

端口转发

使用 adb forward 命令转发端口 — 将特定端口上的请求转发到模拟器或手机的不同的端口上。下例是从 6100端口 转到 7100端口 :

紫薇斗数apk

adb forward tcp:6100tcp:7100

也可以使用UNIX命名的socket标识:

adb forward tcp:6100local:logd

补充:关于 adb forward 命令的作用不是很明白,网上搜了下,大部分文章都是转载了 浅析 adb 命令 – adb forward ,不知道这是不是原文,反正看不得不是很明白。有哪位大神能跟我讲讲嘛?

与模拟器或手机传输文件

使用 adb 命令 pull 和 push 能从 Android 设备拷贝或复制文件到 Android 设备。跟 install 命令不同,pull 和 push 命令允许拷贝和复制文件到任何位置。

从模拟器或手机拷贝文件或文件夹(包括文件夹的子目录)

adb pull[-a]remote_path local_path

(-a:保留文件时间戳及属性)

将文件或文件夹(包括文件夹的子目录)拷贝到模拟器或手机

adb pushlocal_path remote_path

比如,我想把桌面的 log.txt 复制到手机的 dev 目录下,则命令如下:

$adb push/Users/littlejie/Desktop/log.txt/dev

有时候,使用该命令复制文件到手机或从 *** 文件,会碰到如下提示:

failed tocopy'log.txt'to'/dev/log.txt': Permission denied

备注:Permission denied 这个问题以前在使用 Windows *** 的时候碰到过,现在转 Mac 后就没有再遇到,难道是我打开方式不对嘛?再补充一点, Mac 上我运行 adb root 命令真的有点一头雾水,因为竟然提示:

$adb root

adbd isalready running asroot

这是因为当前用户没有相应的权限或者是 /dev 目录不可写。解决 *** 如下:

// *** 一

//已 root 权限启动 adb 服务

$adb root

//adb remount (重新挂载 *** 分区,使 *** 分区重新可写)

$adb remount

//将文件复制到 /dev 目录下

$adb push/Users/littlejie/Desktop/log.txt/dev

// *** 二:修改文件的读写权限

$adb shell

# su

# chmod 777 /dev

关于 Linux 下文件权限的更多内容请参考:linux *** 644、755、777权限详解

adb shell

这里简单讲一下 adb shell 的使用,因为 adb shell 的用法太多,功能太强,完全可以专门分出一篇文章来记录~不出意外,下周应该能写完~有兴趣的同学可以自己先去看 Google 的官方文档:ADB Shell Commands

adb shell 有两种使用方式,一种是不进入 remote shell 直接执行命令行,格式如下:

adb[-d|-e|-sserialNumber]shellshell_command

还有一种是,进入模拟器或手机的 remote shell 执行,格式如下:

adb[-d|-e|-sserialNumber]shell

开启或关闭 adb 服务

在某些情况下需要重启 adb 服务来解决问题,比如 adb 无响应。这时你可以通过 adb kill-server 来实现这一 *** 作。

之后,通过 adb start-server 或者任意 adb 命令来重启 adb 服务。

$adb kill-server

$adb start-server

*daemon notrunning.starting it now on port5037*

* daemon started successfully *

$adb kill-server

$adb dev *** s

List of dev *** s attached

*daemon notrunning.starting it now on port5037*

* daemon started successfully *

emulator-5556dev ***

emulator-5554dev ***

无线调试

平时我们都是使用 USB调试,但是现在也支持通过 WIFI 进行调试了。使用方式如下:

首先,你要将 Android 设备和 装有 adb 的电脑连接到同一 Wi-Fi *** 。其次,你需要配置好防火墙,否则很有可能导致 Wi-Fi 调试不能使用。

使用 USB数据线 将手机连接到电脑。

设置目标设备 *** 5555端口 的 TCP/IP 连接。

$adb tcpip5555

断开手机与电脑的 USB 连接。

查看手机的 IP *** 。例如,在 Nexus 设备上,你可以通过如下方式查看: 设置——关于手机——状态——IP *** 。在 Androir Wear 上,你可以通过如下方式查看:设置——Wi-Fi设置——高级——IP ***

通过 IP 连接手机

adb connectdev *** _ip_address

确认手机是否连接到电脑上

$adb dev *** s

List of dev *** s attached

dev *** -ip-address:5555dev ***

通过以上步骤,就可以开心的享用 WiFi 调试了。如果没有正常连接,可以按照下面的步骤检查:

1. 检查电脑和手机是否还在同一个 WiFi *** 下

2. 重新执行一次 adb connect dev *** _ip_address 命令

3. 重启 adb 服务,然后重头再来

4. 检查是否是防火墙的设置问题

这是一篇关于 Android 设备 USB调试 和 WiFi调试 相互切换 的博文,博主写了一个脚本来实现这个过程,有兴趣的同学可以去看看。

补充

获取设备序列号

$adb shell

emulator-5554

查看 bugreport 报告

//直接在终端输出

$adb bugreport

//将 bugreport 输出到指定文件

$adb bugreport file_path

adb bugreport 这个命令非常简单,但是在实际应用中非常有用,它会输出从开机之后详细的 dumpsys 、 dumpstate 和 logcat 信息,是一份完整的日志记录。对分析用户行为、异常信息、 *** 状态有很大的参考作用。一般我们会把 bugreport 导出到电脑上分析。

bugreport 的详细使用可以参考 Baniel01 的这篇 Android adb bugreport工具分析和使用 文章,里面有很详细的介绍。

查看设备的 log

$adb logcat

查看 adb 的帮助

这个命令很简单,但是也很实用,如果你不知道该使用哪个命令,那么使用 adb 帮助命令你能查看到大部分 adb 命令的作用和使用 *** 。

$adb help

重启手机

有时候,手动关机太麻烦,那就来个命令行吧~

adb reboot

以 root 权限开启 adb 守护进程

//此命令会重启守护进程

$adb root

//不以 root 权限开启 adb 守护进程

$adb unroot

总结

以上就是 adb 命令的常见用法,大部分翻译自 Android Debug Bridge ,其中加了一些个人总结。有些不常用的 adb 命令没有介绍,更多 adb 用法请见:Adb Command Summary。文中如有纰漏,欢迎大家留言指出。

参考:

1. Android Debug Bridge

2. 浅析 adb 命令 – adb forward

3. Android_ADB_通过WIFI或USB方式完成调试

4. Android adb bugreport工具分析和使用

专栏作者简介( 点击 → 加入专栏作者)

踏歌行 :希望有一天我能够很坦然地说:\"让我来告诉你,在我眼中,这是一个怎样的世界。\"

打赏支持作者写出更多好文章,谢谢!

关注「安卓开发精选」

看更多精选安卓技术文章

↓↓↓

文章最后更新: 2025年08月12日20时59分40秒
最新文章
返回顶部