猿问

如何使用 go 启动我的 android 模拟器?

我正在尝试编写我的第一个 go 程序来启动一个 android 模拟器而不启动 Android studio 和 avd 管理器。


我先写了一个bat文件


c:

cd C:\Users\me\AppData\Local\Android\Sdk\emulator

start /min "Android Emulator" emulator.exe -avd Pixel_3a_API_30

哪个有效,但我希望终端被隐藏而不是最小化。因此,由于我想尝试使用 GO,我尝试使用 go 运行命令


package main


import (

    "log"

    "os/exec"

)


func main() {

    cmd := exec.Command(`C:\Users\me\AppData\Local\Android\Sdk\emulator\emulator.exe`, "-avd Pixel_3a_API_30")

    err := cmd.Run()

    if err != nil {

        log.Printf("%v", err)

    }

}

这不会产生错误,但也不会启动模拟器。我究竟做错了什么?


这是输出


$ go run .

2020/09/05 17:14:02 exit status 1


梵蒂冈之花
浏览 134回答 2
2回答

临摹微笑

任何不为 0 的退出状态都是来自 shell 的错误。这不等于 golang 错误(执行的命令,但是该命令在内部引发了错误)。这通常是由于缺乏环境,例如路径等,这些路径等在由 golang 启动的 shell 中不存在以执行您的命令(这几乎适用于所有语言:当您在 shell 中启动命令时,确保它确实继承或初始化环境)。然后,常见的解决方案是提供一个环境或确保所有调用都是绝对的(这在您的系统之外或像 docker 容器这样的专用环境中并不是真正可移植的)。

波斯汪

答案是分裂论点。所以“-avd”和“Pixel_3a_API_30”现在是分开的package mainimport (    "log"    "os/exec")func main() {    cmd := exec.Command(`C:\Users\me\AppData\Local\Android\Sdk\emulator\emulator.exe`, "-avd", "Pixel_3a_API_30")    err := cmd.Run()    if err != nil {        log.Printf("%v", err)    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答