这段时间公司有一个区块链虚拟币手机轻钱包的开发项目,类似于imtoken, 其中钱包的公私钥生成要放在手机端本地,看着开发人员纠结各自开发语言的特性,所以在想是不是能要给IOS和Android移动端提供一个统一可调用的工具或者功能类sdk,周末尝试了下gomobile编译go语言生成的方式,本人以下使用Mac操作为例。
准备环境
在这里只列出相关依赖的环境,具体安装步骤自行Google/百度
确保mac上安装了go,本地Golang版本:go version go1.10.2 darwin/amd64。配置好相关环境变量GOPATH,我本地配置:
1
GOPATH="/Users/daizhiqing/workspace_go"
安装Android sdk 和 Android NDK,做Android开发的同学电脑必备环境,以下是我本地SDK/NDK安装路径:
1
2ndk.dir="/Users/daizhiqing/Library/Android/sdk/ndk-bundle"
sdk.dir="/Users/daizhiqing/Library/Android/sdk"安装完毕后配置好环境变量:
1
export ANDROID_HOME=/Users/daizhiqing/Library/Android/sdk
Xcode,Mac下最好用的IDE(个人认为),保持更新最新版本即可
安装gomobile
网络允许的情况下,执行:1
go get golang.org/x/mobile/cmd/gomobile
不过国内一般无法进行下载,我们可以下载gomobile源码到本地:1
git clone git@github.com:golang/mobile.git
把github上的gomobile copy到$GOPATH/src/golang.org/x下面
单独执行gomobile init可能会报错:
可以执行以下指令初始化:1
gomobile init -ndk /Users/daizhiqing/Library/Android/sdk/ndk-bundle
后面NDK的路径根据自己的实际安装目录.
生成SDK
接下来我们编写Go并生成移动端使用的SDK
- Android SDK生成
以上面目录中的hello工程为例,执行以下:1
gomobile bind -target=android hello
可以看到在我们的工程当前目录下,生成了 hello.arr 和 hello-source.jar 到这里相信做Android开发的同学应该知道怎么导入了。接下来在我们的Android项目中去引用这个SDK
完美编译运行。,运行的结果如下:
- IOS Framework
这里我新建一个Swift的IOS项目,主要是对OC不是很了解,只好拿Swift来耍,不过对于做IOS的童鞋使用起来是差不多的O(∩_∩)O哈哈~
执行生成IOS Framework库1
gomobile bind -target=ios hello
如图所示将生成 Hello.framework 文件夹
接下来新建一个IOS项目:
在新项目中导入我们刚刚生成的framework,再顺便在 Main.stroyboard 新建了一个 Lable
然后拖出下实例化,进行Go编写SDK集成
编译运行结果:
总结
最近工作原因,很少有时间花在单独的学习上了,也是突然公司项目的启发决定尝试下,花了周末一天时间看了下相关技术,在今晚正式在本机上跑完。
其实本次最大的亮点无非就是一份代码可以在IOS和Android同时运行。虽然Golang从推出到目前还处于一直发展阶段,成熟度上,可以远远比不上发展了十几年的其他高级语言,但是我相信未来一定有它的一方天地。
最后,后面有时间可能会零零散散的在这更新一些技术文章,有些朋友邮件我说之前的bitcoinj怎么不更新了?首先挺感谢你的阅读的,顺便在这里说一声抱歉,由于也是业余时间,所以不能保证定时定量去更新一些技术文章,断断续续的可能各个方向栈都会有点吧,个人也觉得自己有时间的话自己兴趣也很杂,没办法,也可能是浪吧~_~,要时不时找点新东西调剂下