【远古文章】用 Go 语言来看 Android! 出发, Android, 出发!
时间:2022-05-05
本文章向大家介绍【远古文章】用 Go 语言来看 Android! 出发, Android, 出发!,主要内容包括入门指南、分析跨平台开发的应用、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
文章翻译:Ivy 。
入门指南
让我们开始吧,首先你必须安装一个可运行的 go 1.5. 你可以从编译好的版本。我在写这篇博客的时候在一台 Linux 机器上使用的是 的 go 1.5 beta2. 我注意到在 Windows 上面使用的时候在 Go 语言源代码里面会有一些警告信息,因此如果你正在使用 Windows 开发,这可能不会起作用。
一旦你要安装 Go 语言,你可以通过下面的命令行来安装:
go get golang.org/x/mobile/cmd/gomobile
gomobile init
Android 平台:你需要安装 Android 例子 。为了简便起见我这里只安装 android 版本(主要原因是因为我没有 IOS 设备)。
接下来的命令就会安装示例应用:
gomobile install golang.org/x/mobile/example/basic
gomobile install golang.org/x/mobile/example/audio
gomobile install golang.org/x/mobile/example/sprite
虽然看起来不多,但是我觉得这相当酷。上面的应用使用纯 go 语言写的,并且使用 opengl 来做渲染。目前还有一些 api 限制,但是我相信不久就会改善。
分析跨平台开发的应用
好,我们可以编译他人的代码,但是它在干什么?让我们看看在这个基本的示例应用里面发生了什么。
//excerpt from golang.org/x/mobile/example/basic
func main() {
app.Main(func(a app.App) {
var c config.Event
for e := range a.Events() {
switch e := app.Filter(e).(type) {
case lifecycle.Event:
switch e.Crosses(lifecycle.StageVisible) {
case lifecycle.CrossOn:
onStart()
case lifecycle.CrossOff:
onStop()
}
case config.Event:
c = e
touchLoc = geom.Point{c.Width / 2, c.Height / 2}
case paint.Event:
onPaint(c)
a.EndPaint()
case touch.Event:
touchLoc = e.Loc
}
}
})
}
用 Go 语言写的应用会从 app 包里面调用主函数。在这里你可以定义应该发生什事件,你可以在<a rel="nofollow" href="https://github.com/golang/mobile" "="" style="box-sizing: border-box; background-color: transparent; color: rgb(45, 133, 202);">https://github.com/golang/mobile
- 谁说 Java 要过时?2017年Java 大事件一览及未来前瞻
- mongodb的用法
- silverlight中如何将string(字符串)写入Resource(资源)?
- Python练习环境搭建-引入预定义数据
- 振幅和成交量的关系
- silverlight中的几个冷门标记 {x:Null},d:DesignWidth,d:DesignHeight
- 用scikit-learn和pandas学习线性回归
- 自动驾驶玩出新花招,以后老司机们就要失业了
- silverlight.net官方网站图片切换源码
- 制作iis自动安装包
- 安装程序无法复制一个或多个文件。特定错误码是0x4b8。
- silverlight中"制作逐帧动画"/"播放gif"收集
- Android新手之旅(1) 开发环境的安装
- Python安装模块
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 如何探测内网存活主机
- Java汉字剪裁工具类
- Day20.python操作数据库
- python字典根据value排序
- Day17.String字符串处理库
- PHP安装配置(Windows和Linux)-一篇就够了
- JavaSE面试深度剖析 第一讲
- JavaSE面试深度剖析 第二讲
- JavaSE面试深度剖析 第三讲
- docker+consul+ nginx集成分布式的服务发现与注册架构
- CWFF:一款针对模糊测试的自定义字典工具
- HMM、信号、时序、降噪(附代码)
- 原创 | 图解git,用手绘图带你理解git中分支的原理和应用
- Android 天气APP(二十四)地图天气(上)自动定位和地图点击定位
- 3分钟短文:可能是Laravel模板最直白的用法了,没有之一