修改README文件
This commit is contained in:
35
README.md
35
README.md
@@ -19,6 +19,7 @@ Go 语言实现的 Android UIAutomator2 客户端库。纯 Go 实现,零外部
|
|||||||
## 功能特性
|
## 功能特性
|
||||||
|
|
||||||
- ✅ **ADB 隧道** - 纯 Go 实现 ADB TCP 协议,通过 ADB 隧道直连设备,无需端口转发
|
- ✅ **ADB 隧道** - 纯 Go 实现 ADB TCP 协议,通过 ADB 隧道直连设备,无需端口转发
|
||||||
|
- ✅ **资源内嵌** - 通过 `go:embed` 将 u2.jar/APK 编译进二进制,`go get` 即用,无需额外文件
|
||||||
- ✅ **设备管理** - 设备发现、连接、信息查询
|
- ✅ **设备管理** - 设备发现、连接、信息查询
|
||||||
- ✅ **UIAutomator2 服务** - 自动启动和管理 UIAutomator2 服务端
|
- ✅ **UIAutomator2 服务** - 自动启动和管理 UIAutomator2 服务端
|
||||||
- ✅ **UI 元素操作** - 点击、滑动、输入、拖拽、手势等完整 UI 操作
|
- ✅ **UI 元素操作** - 点击、滑动、输入、拖拽、手势等完整 UI 操作
|
||||||
@@ -488,21 +489,23 @@ selector.Child(map[string]interface{}{
|
|||||||
jsonData, _ := selector.ToJSON()
|
jsonData, _ := selector.ToJSON()
|
||||||
```
|
```
|
||||||
|
|
||||||
### APK 安装
|
### UIAutomator2 服务部署
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import "github.com/zhuy1228/go-mobile-uiautomator/services"
|
import "github.com/zhuy1228/go-mobile-uiautomator/services"
|
||||||
|
|
||||||
// 安装 UIAutomator2 JAR(自动检查设备端是否已存在)
|
// 安装 UIAutomator2 JAR(自动从内嵌资源推送,检查设备端是否已存在)
|
||||||
err := services.InstallServiceJar(addr, serial, "", false)
|
err := services.InstallServiceJar(addr, serial, false)
|
||||||
|
|
||||||
// 安装 UIAutomator2 APK
|
// 安装 UIAutomator2 APK(自动从内嵌资源推送)
|
||||||
err = services.InstallServiceApk(addr, serial, "", false)
|
err = services.InstallServiceApk(addr, serial, false)
|
||||||
|
|
||||||
// 强制重新安装
|
// 强制重新安装(force=true 跳过存在检查)
|
||||||
err = services.InstallServiceApk(addr, serial, "/path/to/custom.apk", true)
|
err = services.InstallServiceJar(addr, serial, true)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> 资源文件通过 `go:embed` 编译进二进制,无需在本地维护 JAR/APK 文件。
|
||||||
|
|
||||||
## 项目结构
|
## 项目结构
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -529,9 +532,11 @@ go-mobile-uiautomator/
|
|||||||
├── services/ # 服务模块
|
├── services/ # 服务模块
|
||||||
│ ├── install_service.go # UIAutomator2 安装服务
|
│ ├── install_service.go # UIAutomator2 安装服务
|
||||||
│ └── doc.go # 包文档
|
│ └── doc.go # 包文档
|
||||||
├── assets/ # 资源文件
|
├── assets/ # 资源文件(通过 go:embed 编译进二进制)
|
||||||
│ ├── u2.jar # UIAutomator2 服务端
|
│ ├── embed.go # go:embed 指令,导出 JarData/ApkData/ApkTestData
|
||||||
|
│ ├── u2.jar # UIAutomator2 服务端 JAR
|
||||||
│ ├── app-uiautomator.apk # UIAutomator2 APK
|
│ ├── app-uiautomator.apk # UIAutomator2 APK
|
||||||
|
│ ├── app-uiautomator-test.apk # UIAutomator2 测试 APK
|
||||||
│ └── sync.sh # 资源同步脚本
|
│ └── sync.sh # 资源同步脚本
|
||||||
├── cmd/ # 主程序入口
|
├── cmd/ # 主程序入口
|
||||||
│ └── main.go
|
│ └── main.go
|
||||||
@@ -557,6 +562,9 @@ go-mobile-uiautomator/
|
|||||||
│ adb.CreateTunnel (纯 Go ADB 协议) │
|
│ adb.CreateTunnel (纯 Go ADB 协议) │
|
||||||
│ (TCP → ADB Server → transport → tcp:9008) │
|
│ (TCP → ADB Server → transport → tcp:9008) │
|
||||||
├─────────────────────────────────────────────────┤
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ assets.JarData / assets.ApkData (go:embed) │
|
||||||
|
│ (资源文件编译进二进制,零配置部署) │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
│ Android 设备 │
|
│ Android 设备 │
|
||||||
│ UIAutomator2 HTTP 服务 (端口 9008) │
|
│ UIAutomator2 HTTP 服务 (端口 9008) │
|
||||||
└─────────────────────────────────────────────────┘
|
└─────────────────────────────────────────────────┘
|
||||||
@@ -630,9 +638,11 @@ for _, dev := range devices {
|
|||||||
### Q: UIAutomator2 服务启动失败?
|
### Q: UIAutomator2 服务启动失败?
|
||||||
|
|
||||||
确保:
|
确保:
|
||||||
1. `assets/u2.jar` 文件存在
|
1. 设备已正确连接且已授权 USB 调试
|
||||||
2. 设备已正确连接且已授权 USB 调试
|
2. ADB Server 正在运行(默认 `127.0.0.1:5037`)
|
||||||
3. 使用 `NewDevice()` 会自动推送 JAR 并启动服务,无需手动管理
|
3. 使用 `NewDevice()` 会自动从内嵌资源推送 JAR/APK 并启动服务,无需手动管理
|
||||||
|
|
||||||
|
> u2.jar 和 APK 通过 `go:embed` 编译进二进制,`go get` 后即可直接使用,无需额外下载资源文件。
|
||||||
|
|
||||||
### Q: 如何处理弹窗干扰自动化?
|
### Q: 如何处理弹窗干扰自动化?
|
||||||
|
|
||||||
@@ -665,6 +675,7 @@ d.ByText("Hello").Click()
|
|||||||
## 开发计划
|
## 开发计划
|
||||||
|
|
||||||
- [x] 纯 Go ADB 协议实现
|
- [x] 纯 Go ADB 协议实现
|
||||||
|
- [x] go:embed 资源内嵌(零配置部署)
|
||||||
- [x] ADB 隧道直连(与 Python 一致)
|
- [x] ADB 隧道直连(与 Python 一致)
|
||||||
- [x] 设备发现和连接管理
|
- [x] 设备发现和连接管理
|
||||||
- [x] JSON-RPC 2.0 通信层
|
- [x] JSON-RPC 2.0 通信层
|
||||||
|
|||||||
Reference in New Issue
Block a user