golang和adb
golang也能和安卓結合啦、分享一個基於golang和adb的安卓應用:
軟體包adbbot提供Android應用程式自動化的基本功能。 這個包基於Golang標準包和Android Debug Bridge(adb)的執行檔案。話不多說、直接看看例項:
package main
import (
"flag"
"log"
"runtime"
"time"
"./adbbot"
)
var verbosity = flag.Int("v", 2, "verbosity")
var ADB = flag.String("adb", "adb", "adb exec path")
var DEV = flag.String("dev", "", "select device")
var APP = flag.String("app", "com.android.vending", "app package name")
var TMPL = flag.String("tmpl", "tmpl.png", "app package name")
func main() {
log.SetFlags(log.Ldate|log.Ltime)
flag.Parse()
runtime.GOMAXPROCS(runtime.NumCPU())
adbbot.Verbosity = *verbosity
bot := adbbot.NewBot(*DEV, *ADB)
Vlogln(2, "[adb]", "wait-for-device")
_, err := bot.Run("wait-for-device")
if err != nil {
Vlogln(1, "adb err", err)
}
// press Home key
bot.KeyHome()
// start APP
bot.StartApp(*APP)
// create matching region between Point <100,635> and <9999,9999>
//reg := bot.NewRectAbs(100, 635, 9999, 9999)
// or All the screen (slow)
reg := bot.NewRectAll()
// create matching template
tmpl, err := bot.NewTmpl(*TMPL, reg)
if err != nil {
Vlogln(2, "load template image err", err)
} else {
// try to find target
// 10 times with 1000ms delay between each search
x, y, val := bot.FindExistReg(tmpl, 10, 1000)
if x == -1 && y == -1 {
Vlogln(2, "template not found", x, y, val)
} else {
Vlogln(2, "template found at", x, y, val)
}
}
infoname := time.Now().Format("20060102_150405")
err = bot.SaveScreen(infoname + ".png")
if err != nil {
Vlogln(2, "SaveScreen err", err)
} else {
Vlogln(2, "SaveScreen as file ", infoname + ".png")
}
// force-stop APP
bot.KillApp(*APP)
}
func Vlogln(level int, v ...interface{}) {
if level <= *verbosity {
log.Println(v...)
}
}
程式碼量不是很大、也比較容易理解、有興趣的同學可以深入研究一下
相關文章
- 常用adb 和 adb shell 命令
- golang和gRPCGolangRPC
- adb命令
- adb命令管理Linux 檔案和目錄Linux
- MAC Android Studio adb配置和連線MacAndroid
- Golang指南:頂級Golang框架、IDE和工具列表Golang框架IDE
- [mac Catalina 系統配置 adb] 配置 adb 環境後,執行 adb 報錯:zsh: bad CPU type in executable: adbMac
- 常用adb 命令
- 常用adb命令
- ADB簡介
- Android ADBAndroid
- adb devices: no permissionsdev
- adb命令使用
- golang 的 rune 和 byteGolang
- (二)golang陣列和切片Golang陣列
- golang類和結構體Golang結構體
- golang slice 和 string 重用Golang
- mac下配置JDK,SDK,NDK和ADB環境變數MacJDK變數
- 安卓自動化Tasker和Macrodroid(含ADB除錯)安卓Mac除錯
- 使用 adb shell dumpsys gfxinfo 和 adb shell dumpsys SurfaceFlinger --latency 都無法獲取到資料
- Golang 陣列和切片 Slice 和 Map 使用Golang陣列
- adb shell 命令整理
- adb命令總結
- Appium ADB命令APP
- adb shell 埠占用
- Mac下配置adbMac
- ADB命令使用技巧
- adb 用法總結
- adb Logcat用法GC
- 常用的ADB命令
- 【整理】adb命令、adb shell與Linux各種命令(busybox)Linux
- Golang —— goroutine(協程)和channel(管道)Golang
- Golang make和new的區別Golang
- golang自動生成setter和getterGolang
- golang拾遺:指標和介面Golang指標
- Git日常常用命令和ADB常用命令Git
- python3:巧用adb命令獲得PC username和devicelistPythondev
- ADB 實用筆記筆記