我正在尝试编写我的第一个 go 程序来启动一个 android 模拟器而不启动 Android studio 和 avd 管理器。我先写了一个bat文件c:cd C:\Users\me\AppData\Local\Android\Sdk\emulatorstart /min "Android Emulator" emulator.exe -avd Pixel_3a_API_30哪个有效,但我希望终端被隐藏而不是最小化。因此,由于我想尝试使用 GO,我尝试使用 go 运行命令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) }}这不会产生错误,但也不会启动模拟器。我究竟做错了什么?这是输出$ go run .2020/09/05 17:14:02 exit status 1
2 回答
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
临摹微笑
TA贡献1982条经验 获得超2个赞
任何不为 0 的退出状态都是来自 shell 的错误。这不等于 golang 错误(执行的命令,但是该命令在内部引发了错误)。这通常是由于缺乏环境,例如路径等,这些路径等在由 golang 启动的 shell 中不存在以执行您的命令(这几乎适用于所有语言:当您在 shell 中启动命令时,确保它确实继承或初始化环境)。
然后,常见的解决方案是提供一个环境或确保所有调用都是绝对的(这在您的系统之外或像 docker 容器这样的专用环境中并不是真正可移植的)。
![?](http://img1.sycdn.imooc.com/533e51f30001edf702000200-100-100.jpg)
波斯汪
TA贡献1811条经验 获得超4个赞
答案是分裂论点。所以“-avd”和“Pixel_3a_API_30”现在是分开的
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)
}
}
- 2 回答
- 0 关注
- 133 浏览
添加回答
举报
0/150
提交
取消