logo
1
0
WeChat Login
sky<kongyang@petalmail.com>
feat(pkg): 添加APK导出功能并优化设备初始化

应用管理示例

展示如何使用 pkg 包进行应用管理操作。

功能

  • 列出设备上的所有应用
  • 区分系统应用和用户应用
  • 显示应用的启用/禁用状态
  • 导出应用 APK

使用方法

列出应用

go run main.go -ip <设备IP> -id <安卓云机ID> -cmd list

导出 APK

go run main.go -ip <设备IP> -id <安卓云机ID> -cmd download -pkg <包名> [-o <输出目录>]

参数说明

参数说明示例
-ip设备IP地址10.10.11.3
-id安卓云机ID3992400d18962a021424e22a02ac95bbc2e6cd6b406d49c865389837754f0209
-cmd命令类型:listdownloadlist
-pkg应用包名(download命令需要)com.android.chrome
-o输出目录(可选,默认为当前目录)./apks

示例

# 列出应用 go run main.go -ip 10.10.11.3 -id 3992400d18962a021424e22a02ac95bbc2e6cd6b406d49c865389837754f0209 -cmd list # 下载APK到当前目录 go run main.go -ip 10.10.11.3 -id 3992400d18962a021424e22a02ac95bbc2e6cd6b406d49c865389837754f0209 -cmd download -pkg com.android.chrome # 下载APK到指定目录 go run main.go -ip 10.10.11.3 -id 3992400d18962a021424e22a02ac95bbc2e6cd6b406d49c865389837754f0209 -cmd download -pkg com.android.chrome -o ./apks

输出示例

列出应用

包名 状态 ----------------------------------------------------------------- com.android.chrome 启用 com.tencent.mm 启用 com.gibb.easyclick 禁用 ... 共 156 个包

导出 APK

正在导出 com.android.chrome 的APK... 成功导出 1 个APK文件到 ./apks: [1] /data/app/com.android.chrome/base.apk

代码说明

列出应用

package main import ( "context" "flag" "fmt" "strings" "atomgit.com/mytsdk/adrctl-go/pkg" ) func main() { // 解析命令行参数 ip := flag.String("ip", "", "设备IP地址") id := flag.String("id", "", "安卓云机ID") flag.Parse() // 创建 pkg 客户端 client := pkg.New(*ip, *id) // 列出用户应用 res, err := client.ListPackage(context.Background(), &pkg.ListPackageReq{ Type: pkg.PackageTypeUser, // 只列出用户应用 }) // 打印结果 for _, p := range res.Packages { fmt.Printf("%-50s %-10s\n", p.PackageName, status) } }

导出 APK

// 导出应用 APK res, err := client.Export(ctx, &pkg.ExportReq{ PackageName: "com.example.app", SaveTo: "./apks", // 指定输出目录 }) if err != nil { fmt.Printf("导出失败: %v\n", err) return } for _, path := range res.APKPaths { fmt.Printf("APK路径: %s\n", path) }

扩展功能

如需更多功能,可参考 pkg 包的其他接口:

// 禁用应用 client.SetEnabled(ctx, &pkg.SetEnabledReq{ PackageName: "com.example.app", Enabled: false, }) // 清除应用数据 client.ClearData(ctx, &pkg.ClearDataReq{ PackageName: "com.example.app", }) // 卸载应用 client.Uninstall(ctx, &pkg.UninstallReq{ PackageName: "com.example.app", })

相关链接