在你的 Android 上运行 Golang 程序

在我们日常开发中,运行一个服务,都是在 shell 或 cmd 下执行命令,像是使用 go run main.go 直接编译运行,或是 go build 编译生成可执行文件后,以 ./xxx 方式运行。

Go 支持交叉编译生成各平台的可执行文件。那有没有想过如何把你写的程序编译后跑在 Android 上呢。

废话少说,流程分解:

在你的 Android 上运行 Golang 程序

接下来逐一击破。

main.go 中创建了一个 http 服务,监听 8080 端口,访问 / 路由时,返回预设的 JSON 文本。

package main

import (
  "github.com/gin-gonic/gin"
  "log"
  "net/http"
)

func main() {
  r := gin.Default()
  r.GET("/", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
      "msg": "hello world",
    })
  })
  log.Fatalln(r.Run(":8080"))
}

第一步,编译,简单。Android 都是 linux arm64 (arm) 架构,如果不确定,可以进入 Android shell 里查看,下面再讲。

本文环境为 win10+cmd 。交叉编译生成适用于 linux arm64 的二进制文件待用。

set CGO_ENABLED=0
set GOOS=linux
set GOARCH=arm64
go build -o server main.go

第二步,把编译生成的 server 文件拷贝到 Android 的 /data/local/tmp/ 目录下。

第三步,进入到 Android 的 /data/local/tmp/ 目录,执行 ./server 启动服务。

完成结束。

在你的 Android 上运行 Golang 程序


???哈哈哈,别急。第二步和第三步其实需要借助一个工具。

那就是 Android 调试桥 (adb) ,adb 命令就可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。Android 开发者就对这玩意很熟了,因为装完 Android SDK 会默认集成了 adb 工具。但是我们没有的话,就得单独安装了。

可以到 http://adbdownload.com/ 进行下载

在你的 Android 上运行 Golang 程序

同样以 win10 为例,下载后解压到任意目录下,如:

在你的 Android 上运行 Golang 程序

加到环境变量中,方便我们随时随地使用。

在你的 Android 上运行 Golang 程序

验证是否安装成功:

在你的 Android 上运行 Golang 程序

安装完成 adb 后,还需要使用 adb 连接上我们的 Android 手机。连接前需要开启手机的开发者模式的 USB 调试选项,具体开启方式自行机型百度。

在你的 Android 上运行 Golang 程序

使用 USB 连接电脑和手机后,此时手机会提示是否允许 USB 调试

在你的 Android 上运行 Golang 程序

允许确定即可。回到电脑终端,使用 adb devices 可查看已连接的设备列表

在你的 Android 上运行 Golang 程序

回归我们的正题了。

继续第二步,借助 adb 拷贝 server 文件到 Android 内的 /data/local/tmp/ 目录下。

adb push server /data/local/tmp/
在你的 Android 上运行 Golang 程序

第三步,进入到 Android 的 shell 终端,到 /data/local/tmp/ 目录,执行 ./server 启动服务。

adb shell
# 以下命令在 Android shell中执行
cd /data/local/tmp
chmod 755 server
./server
在你的 Android 上运行 Golang 程序

到这,Android 就跑起了我们用 Go 编写的程序了。可以使用浏览器访问:

在你的 Android 上运行 Golang 程序

总结:

将 go 代码编译成 Android 平台的可执行文件(linux,arm64),可通过 adb shell getprop ro.product.cpu.abi 确定具体系统架构。利用 adb 工具将可执行文件拷贝到 Android 的 /data/local/tmp/ 下并赋予权限,最后进入到 shell 运行程序。

最后

欢迎关注我,获取更多分享。

在你的 Android 上运行 Golang 程序

在你的 Android 上运行 Golang 程序

上一篇:你绝不能错过的效率神器 —— Alfred


下一篇:iApp获取ANHK网页源码