安卓使用gomobile混合开发流程(Windows)
使用Golang做移动应用混合开发,Go在Android中的作用,就相当于NDK中的C/C++,gomobile就是封装了JNI调用的工具。
这里记录一下在Windows10电脑上配置Golang混合开发环境的流程(很多步骤需要通过科学上网下载)。
下载并安装go
下载地址:https://golang.org/dl/,下载最新版本(当前最新版本是1.12.5)
安装go的msi文件,安装完成后在命令提示符(cmd)中输入”go version”校验是否安装成功(go安装时会自动配置到环境变量:$GOROOT、$GOPATH、$Path)
下载安装 gomobile
在命令提示符(cmd)中输入命令:”go get golang.org/x/mobile/cmd/gomobile”,等待gomobile下载完成
输入命令:”gomobile init” (build OpenAL for Android)
安装完成后输入”gomobile version”校验是否安装成功
配置Android SDK/NDK的环境变量
使用gomobile工具前需要先配置好Android SDK/NDK的环境变量。
配置ANDROID_HOME环境变量到电脑上的Android SDK目录(会自动使用SDK目录下的ndk-bundle目录作为NDK目录,使用最新的NDK版本)
配置ANDROID_NDK_HOME环境变量到NDK目录($ANDROID_HOME和$ANDROID_NDK_HOME同时配置时,编译器会优先使用SDK/ndk-bundle目录下的NDK)
- 未配置环境变量提示:gomobile: no Android NDK found in $ANDROID_HOME/ndk-bundle nor in $ANDROID_NDK_HOME
- NDK版本过低提示:gomobile: No compiler for arm was found in the NDK (tried C:\Users\13927\AppData\Local\Android\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\armv7a-linux-androideabi16-clang). Make sure your NDK version is >= r19c. Use
sdkmanager --update
to update it.
gomobile命令
生成apk:”gomobile build -target=android 打包相对目录”
生成aar包:”gomobile bind -target=android 打包相对目录”
Golang开发手机应用demo
Golang开发手机应用有两种方式:原生应用开发、混合绑定开发。
Golang原生应用开发示例(gomobile build命令)
(使用gomobile bind前,需要先配置Android SDK/NDK的环境变量)
在命令提示符(cmd)中输入命令:”go get -d golang.org/x/mobile/example/basic”,等待示例下载完成(下载到$GOPATH/src目录中)
生成apk安装包:”gomobile build -target=android golang.org/x/mobile/example/basic”,此命令会生成名为basic(目录名)的apk安装包(apk文件生成到命令提示符操作的目录中)
安装apk包到已连接的android设备:”gomobile install golang.org/x/mobile/example/basic” (类似于使用adb工具安装apk)
混合开发Android应用示例(gomobile bind命令)
(使用gomobile bind前,需要先配置Android SDK/NDK的环境变量)
在命令提示符(cmd)中输入命令:”go get -d golang.org/x/mobile/example/bind/…”,等待示例下载完成(下载到$GOPATH/src目录中)
生成aar包:”gomobile bind -target=android golang.org/x/mobile/example/bind/hello”,此命令会生成hello-sources.jar和hello.aar(文件生成到命令提示符操作的目录中)
导入aar包到Android工程中即可使用go中定义的相关方法
- 打开android studio,在项目中选择菜单file/new/new Module,选择要导入的jar/aar,选中刚才创建的aar文件,项目中自动生成’:hello’ Module
- 在需要引用Native方法的Module/build.gradle/dependencies中配置:implementation project(‘:hello’)
gomobile使用注意事项
1.目录结构:配置环境变量中GOPATH变量,go代码的工作目录是$GOPATH/src
- go项目代码应放在$GOPATH/src目录下,并且代码中import包结构需和目录结构一致,包结构不一致则无法编译
- gomobile build/bind 命令中的打包目录需使用相对目录(相对于$GOPATH/src),目录地址分隔符需使用”/“(不能用”\”)
- 例如一般开源项目的包结构:$GOAPTH/src/github.com/yourname/projectname/…
- 打包生成的文件在命令提示符(cmd)中的操作目录下
2.Go语言混合开发时要注意下,函数必须首字母大写的才能导出,否则无法导出给移动端使用