logo
1
0
WeChat Login
wallbreaker<wallbreaker8@users.noreply.gitcode.com>
refactor: migrate module path from atomgit.com to cnb.cool

应用管理示例

展示如何使用 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"

    "cnb.cool/openmyt/myt-sdk-golang/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",
})

相关链接