ADB Client in pure Golang.
go get github.com/electricbubble/gadb
package main
import (
"github.com/electricbubble/gadb"
"log"
"os"
"strings"
)
func main() {
adbClient, err := gadb.NewClient()
checkErr(err, "fail to connect adb server")
devices, err := adbClient.DeviceList()
checkErr(err)
if len(devices) == 0 {
log.Fatalln("list of devices is empty")
}
dev := devices[0]
userHomeDir, _ := os.UserHomeDir()
apk, err := os.Open(userHomeDir + "/Desktop/xuexi_android_10002068.apk")
checkErr(err)
log.Println("starting to push apk")
remotePath := "/data/local/tmp/xuexi_android_10002068.apk"
err = dev.PushFile(apk, remotePath)
checkErr(err, "adb push")
log.Println("push completed")
log.Println("starting to install apk")
shellOutput, err := dev.RunShellCommand("pm install", remotePath)
checkErr(err, "pm install")
if !strings.Contains(shellOutput, "Success") {
log.Fatalln("fail to install: ", shellOutput)
}
log.Println("install completed")
}
func checkErr(err error, msg ...string) {
if err == nil {
return
}
var output string
if len(msg) != 0 {
output = msg[0] + " "
}
output += err.Error()
log.Fatalln(output)
}
Thank you JetBrains for providing free open source licenses
Repository | Description |
---|---|
zach-klippenstein/goadb | A Golang library for interacting with adb. |
vidstige/jadb | ADB Client in pure Java. |
Swind/pure-python-adb | This is pure-python implementation of the ADB client. |
codeskyblue/fa | FA(fast adb) helps you win at ADB(Android Debug Bridge). |