golang gomobile for Android or iOS 使用记录

[TOC]

环境

  • OSX 10.10.5
  • jdk1.8.0_92
  • golang 1.7
  • Android SDK 25.1.7
  • Andorid-NDK-r12b
  • Andorid Studio 1.5.1
  • xcode 7.2.1
  • swift 2.1.1

目前golang bind 支持的类型说明

https://godoc.org/golang.org/x/mobile/cmd/gobind

安装 gomobile

go get -u -v golang.org/x/mobile

会报告一个错误

package golang.org/x/mobile: no buildable Go source files in /Users/sinlov/go/src/golang.org/x/mobile

无视,这个是因为这不是一个可以build的项目,你以后也需要这些库,全down下来吧

遇到类似的问题可以使用 -d 参数来规避test代码导致的无法build问题,不过如果本来就不是一个可以build的目录,go get 命令会去尝试构建,仍然会警告你

  • 安装 go mobile
go get -v golang.org/x/mobile/cmd/gomobile

�然后,翻墙走起,运行

gomobile init

初始化会等几分钟,看网速,初始化后才可以正式使用!

gomobile 介绍

gomobile 可以让golang在移动设备中使用

  • bind 动态库方式native开发
  • build 直接生成移动应用
  • install 将生成的app,安装到设备或者模拟器
  • clean 清空缓存

一般使用bind方式开发,build方式还是试验性的

在移动设备中使用 golang 动态连接库

  • 准备

gomobile bind 查看帮助文档

gomobile bind -help

执行这个命令的时候注意 Go版本 GOPATH 等,这是go开发的基础,不属于这篇文章的内容

一个没有错误的golang项目文件包,注意文件包的包名,后面会用到

后面示例的golang伪代码为 package.go

package [GoPackageName]

func[GoFunction] (in tpye) type {
}

Android 使用

gomobile bind -target=android [packageName]
gomobile bind -target=android -o [output][packageName]

会在当前目录生成这个包名命名的一个 .arr文件

默认情况下输出支持平台是 armeabi-v7a arm64-v8a x86 x86_64

使用 Android Studio 导入这个 arr 文件后

Android 使用类似

import go.package.[GoPakcageName];
private void (){
  [GoPakcageName].[GoFunction]();
}

iOS 使用

gomobilebind-target=ios[packageName]
gomobilebind-target=ios-o [output][packageName]

会生成一个对应 [工程包名].framework 的 bundle,把这个 bundle 拖拽到 iOS 项目中

使用的时候类似

#import"hello/Hello.h"
Go[PackageName][GoFunction](@ type);

如果想使用 swift

swift 自动生成帮助文档

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

[package].Go[PackageName][GoFunction](type)

使用golang的意义

这个是最容易撕逼的地方,技术的意义就是自己闭嘴做,别管别人怎么说

golang for mobile 本质是让go build 的时候使用 arm 或者 x86 指令集进行编译,和移动的native开发没啥区

你可以使用

gomobile bind-target=android/arm,android/386 [pakcageName]

来指定对应的输出平台

  • 好处是可以共用代码,比开发native效率高不少
  • 坏处是go生成的本地包比较大2MB以上

在未来,这个so文件的大小不是问题,当前环境可能会让某些强迫症技术负责受不了

当年谣传,比尔盖茨说内存只需要640K,这个谣传真假不知道,只知道现在手机随便RAM都是2G,ROM起跑16G

利用strip 工具来减少Android 的 so的大小

strip 工具会去掉debug和符号信息

测试可以减少到原来的 60%左右工具在 android-ndk 的目录中

类似

cd android-ndk/android-ndk-r12b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/arm-linux-androideabi/bin
./strip [yourOSFile]

优化前需要备份,并测试一下是否优化后是否可以使用

golang运行效率问题,native bind效率问题

单独拉出来说的原因是,native bind肯定存在效率问题,没有争议的,看你的功能是否不在意效率

golang的运行效率问题,大兄弟,语言的运行效率肯定在程序员的手上,没有废材的语言,只有不努力的程序员

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,057评论 25 707
  • 希望这是一片画布,任你随意涂抹想象中的五颜六色;希望这是一片话埠,让你的思想与语言有个栖息的地方。——题记 .缘起...
    话埠阅读 209评论 0 1
  • 流浪.... 想要的孤单,想要的忧伤 沧桑 经历的种种, 不需要叹息, 不需要彷徨! 点燃一根烟, 抬起头, 路在...
    听风伴雪行阅读 338评论 0 0
  • 再糟糕的一段感情也是当初你自己做出的决定,不要把问题都推到对方身上。只有找到原因,你和他这段相处才有意义,等于你为...
    一瑾会发光阅读 207评论 0 2
  • 恺是一个受女生欢迎的男生。他爱玩、爱笑,具有天生的幽默细胞。 阿香是一个性格开朗,活泼可爱的女孩子。由于她和恺性格...
    佳的后花园阅读 358评论 0 0