文章目录
GO 编译打包AAR
最近在用go写高并发web接口,发现其强大的交叉编译功能可以编译成Android AAR,用go来做native层的工作简直不要太香,告别繁琐的JNI调用,效率瞬间提升上来。下面简单在Android应用中启用web服务。
GO、AndroidSDK、AndroidNDK安装与环境配置略过
一、gomobile
gomobile 可以让golang在移动设备中使用,这里我们用到的是bind 动态库方式native开发
下载安装gomobile
go get golang.org/x/mobile/cmd/gomobile
如果被墙了可以把gomobile项目clone到$GOPATH/src/golang.org/x下面
初始化
gomobile init
二、使用步骤
1.GO Code
代码如下(示例):
package test
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func Add(x int, y int) int {
fmt.Println(x, y)
return x + y
}
var r *gin.Engine
func Run() {
r = gin.Default()
r.GET("/hello", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"name": "zhangsan"})
})
r.Run(":8080")
}
2.编译GO Code 生成so到AAR
gomobile bind -target=android test
3.添加AAR到Android项目并开启web服务
Android调用代码,子线程中运行gin相关web接口
lifecycleScope.launch(Dispatchers.IO) {
Test.run()
}
val sum = Test.add(2,2)
Log.e("main","$sum")
运行结果
浏览器访问Android web接口
结尾
go真香