如何使用go启动android模拟器?
我正在尝试编写我的第一个go程序,它可以在不启动android studio和avd管理器的情况下启动android模拟器 我先写了一个bat文件如何使用go启动android模拟器?,android,go,command,Android,Go,Command,我正在尝试编写我的第一个go程序,它可以在不启动android studio和avd管理器的情况下启动android模拟器 我先写了一个bat文件 c: cd C:\Users\me\AppData\Local\Android\Sdk\emulator start /min "Android Emulator" emulator.exe -avd Pixel_3a_API_30 这是可行的,但我希望终端是隐藏的,而不是最小化。既然我想用GO做实验,我就试着用GO运行命令 p
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
任何非0的退出状态都是来自shell的错误。这不等于golang错误(执行的命令,但是命令内部抛出了一个错误)。由于缺少环境(例如路径等),golang启动的shell中不存在执行命令的路径(这几乎适用于所有语言:在shell中启动命令时,请确保它确实继承或初始化了环境)
然后,常见的解决方案是提供一个环境或确保所有调用都是绝对的(这在您的系统或docker容器等专用环境之外是不可移植的)。答案是拆分参数。所以“-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)
}
}