如何使用 go 启动我的 android 模拟器?
How do I start my android emulator with go?
我正在尝试编写我的第一个启动 android 模拟器而不启动 Android 工作室和 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
任何非 0 的退出状态都是来自 shell 的错误。这不等于 golang 错误(命令已执行,但命令在内部抛出错误)。这通常是由于缺乏环境,例如 golang 启动的 shell 中不存在的路径等来执行您的命令(这几乎适用于所有语言:当您在 [=15 中启动命令时=],确保它确实继承或初始化了一个环境)。
然后,常见的解决方案是提供一个环境或确保所有调用都是绝对的(这在您的系统或专用环境(如 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)
}
}
我正在尝试编写我的第一个启动 android 模拟器而不启动 Android 工作室和 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
任何非 0 的退出状态都是来自 shell 的错误。这不等于 golang 错误(命令已执行,但命令在内部抛出错误)。这通常是由于缺乏环境,例如 golang 启动的 shell 中不存在的路径等来执行您的命令(这几乎适用于所有语言:当您在 [=15 中启动命令时=],确保它确实继承或初始化了一个环境)。
然后,常见的解决方案是提供一个环境或确保所有调用都是绝对的(这在您的系统或专用环境(如 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)
}
}