golang
跨平台, 性能强, 周边也算丰富
一直有一个想法, 把这东西写的代码编译成各个平台的库, 未来在 flutter
里用
开发环境和工具
- MacOS(其他的暂时不考虑)
- Go
- Go 1.14.6, 版本太低可能不能编译成 android 的
- Goland , 咱现在是正版用户, 用开源项目申请的
All products License
, 你也可以根据自己的情况选择别的 IDE 或使用文本编辑器(vscode 也不错)
- Android
- Android Studio
- Cmake
- Android SDK
- Android NDK
Go 部分
go 源码
add_library.go
package main
import "C"
//export add
func add(x, y int) int {
return x + y
}
//export remove_int
func remove_int(x, y int) int {
return x - y
}
func main() {
}
这里有几点要注意
- package 一定要是 main(强制规定)
- 一定要包含 main 函数(强制规定)
- import “C”, 不能少, 因为要编译出 c(c++)的头文件
- 每个方法前要加
//export 方法名
, 这里要注意//
和export
间不能有空格- 方法名和 go 的方法名必须完全一样
- 方法名不能是 c 内置的方法名, 比如
remove
就不行
编译
我在项目里内置了两个脚本, 一个是编译 android 的, 一个是编译 macOS 的, 因为篇幅和主题的原因, macOS 的就不单独拿出来了
看看编译成安卓的脚本吧
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/21.0.6113669
export GOARCH=arm
export GOOS=android
export CGO_ENABLED