Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用go启动android模拟器?_Android_Go_Command - Fatal编程技术网

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

如何使用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

我正在尝试编写我的第一个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运行命令

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)
    }
}