本
文
摘
要
因为新版的腾讯模拟器不支持本地安装和卸载,只能用ABD模式来操作,所以有一下流程以供参考和备忘。
模拟器安装随意安装一个商店中的应用,并打开,这样会启动一个模拟器
打开CMD命令在安装目录找到adb.exe
选中当前路径输入CMD 回车进入CMD面板
在手游助手随便点开一个应用启动模拟器
3.链接模拟器及安装
在CMD里面输入adb devices adb connect 127.0.0.1:5555 链接设备
输入 adb install + APK路径 安装APK 安装成功后有提示
这里就有我们自己的APK程序了
4.卸载
输入 adb shell 进入系统 再输入pm list packages显示安装的APK列表
注意:这里的包名是unity打包设置里面的包名,不是外层自己写的安装包的名字
pm uninstall <包名> 卸载安装包, Exit推出系统。
然后就可以执行新的安装APK的操作了。
打印日志参考链接
Android 调试桥 (adb) | Android 开发者 | Android Developers (google.cn)
# Android 调试桥 (adb)
[TOC]
Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。
## adb 端口
当启动 adb 时,通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器,并与相应的端口建立连接。具体原理见[adb 的工作原理](https://developer.android.google.cn/studio/command-line/adb#howadbworks)。有些模拟器的端口超过了这个范围要手动连接,有时没有自动自连接,以下一些常用模拟器单开时的端口,多开一般为在此基础上依次+2:
| 模拟器 | adb 端口 |
| ---------------- | -------- |
| 雷电模拟器 | 5555 |
| 腾讯手游助手 | 5555 |
| MuMu 模拟器 | 7555 |
| 夜神模拟器 | 62001 |
| 蓝叠模拟器 | 5555 |
| 逍遥模拟器 | 21503 |
| 靠谱助手之天天 3 | 45005 |
| 靠谱助手之天天 | 40005 |
| 靠谱天天模拟器 | 5037 |
通过`adb connect 127.0.0.1:5555`连接
若腾讯手游助手从界面上本地安装非其平台 APK 失败,可通过 adb 安装
## 连接设备
我们常通过设备 ip 及端口连接设备,如`adb connect 127.0.0.1:5555`,其它方式见[adb 官方文档](https://developer.android.google.cn/studio/command-line/adb)。`disconnect`断开连接
## 已连接设备
使用`adb devices -l`查看已连接的设备列表。列表中有些设备显示状态为`offline`,表示设备未连接到 adb 或没有响应,可尝试重开设备再次连接。
## 操作指定设备
当有多个设备时,须指定目标设备,通过参数`-s <device>`指定设备。以下为向指定设备安装应用:
```cmd
$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device
$ adb -s emulator-5555 install helloWorld.apk
```
## 代理&反向代理
通过 ADB,可以把 Android 上的某个端口映射到电脑`adb forward`,或者把电脑的某个端口映射到 Android 系统`adb reverse`。
代理。将本地 PC 指定 Port 端口,映射到设备手机指定 Port 端口或服务上。就可通过访问本地端口访问手机上的端口或服务
反向代理。假设电脑上开启的服务,监听的端口为 8000。Android 手机通过 USB 连接电脑后,执行 `adb reverse tcp:8000 tcp:8000`,然后在手机中访问`127.0.0.1:8000`,就可以访问到电脑上启动的服务了
常用于调试工具中。
## 传输文件
- `pull`(拉),从设备中拉取文件/文件夹到本地。 `adb pull device local`
- `push`(推),将文件/文件夹推送到设备。`adb push local device`
eg:`adb push foo.txt /sdcard/foo.txt`
## 安装应用
`adb install <包路径>`
## 在设备上执行 shell 命令
- 通过`adb shell`登入设备,在设备上执行 shell 命令
- 通过`adb shell <shell命令>`直接执行 shell 命令。eg:`adb shell cat /proc/version`
## Android 提供的 Unix 命令
Android 提供了大多数常见的 Unix 命令行工具。可通过`adb shell ls /system/bin`查看支持的命令列表。对于大多数命令,可通过 `--help` 参数获得命令帮助,而不是`man`,eg:`adb shell ls --help`。
### Activity 管理器 (am)
使用 Activity 管理器 (am) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性,等等。
`adb shell am start -n http://com.xxx.xxx/com.unity3d.player.UnityPlayerActivity`根据包名启动 Unity 应用
### 软件包管理器 (pm)
- `pm list packages`列出所有软件包
- `pm install <包路径>`安装 apk 包
- `pm uninstall <包名>`卸载 apk 包
- `pm clear <包名>`删除 apk 包相关的所有数据
- `pm path <包名>`打印 apk 包的路径
- [更多](https://developer.android.google.cn/studio/command-line/adb#pm)
### 设备政策管理器 (dpm)
### 截取屏幕截图
`screencap`可以截取屏幕截图,并存储在设备指定位置。eg:`screencap /sdcard/screen.png`
### 录制视频
`screenrecord` 录屏为 mp4,并存储在设备指定位置。按 `Ctrl + C` 键(在 Mac 上,按 `Command + C` 键)可停止屏幕录制;如果不手动停止,到三分钟或 `--time-limit` 设置的时间限制时,录制将会自动停止。最长不超过 3 分钟。eg:`screenrecord /sdcard/demo.mp4`
### logcat
用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹,以及应用使用 Log 类写入的消息。一般在应用运行异常时查找问题。
可直接使用`adb logcat`查看打印的日志,另外它包含在一些版本的 SDK 中的`android-sdk/tools/monitor`中,IED`Android Studio`中。
单纯使用命令行 logcat 也很便捷:
- `adb logcat >> C:\Users\admin\Desktop\log.txt` 使用重定向符`>>`把日志添加到指定文件,`>`为覆盖写入。然后可以使用类似 linux 中的`tail` `grep`命令来监控查找日志。[记录日志.bat](./Android调试桥_adb_res/记录日志.bat)一个记录日志的脚本,需放在adb.exe所在目录或把adb.exe所在目录添加到环境变量`Path`中
- `logcat -f \cache\logcat.log&` 通过`-f`参数指定日志要保存到的文件,日志会追加到指定的文件中,`&`符号表示后台运行。文件是存在设备上的,这样就不会受本地影响,需要时我们可以通过`pull`把日志拉到本地。更进一步考虑开机自启动、写脚本一键启动(expect)
### dumpsys
获取在连接的设备上运行的所有系统服务的诊断输出。如检查输入、性能信息、内存使用、耗电统计或网络诊断信息。
## 参考资料
[adb 官方文档](https://developer.android.google.cn/studio/command-line/adb)
[Android SDK 命令行工具](https://developer.android.google.cn/studio/command-line)
[logcat 官方文档](https://developer.android.google.cn/studio/command-line/logcat)
[Android Device Monitor](https://developer.android.google.cn/studio/profile/monitor)
[DisplayTool](http://www.display-tool.com/)