Go on Android

GothamGo
15 Nov 2014

David Crawshaw
Google
@davidcrawshaw

* Go on Mobile

The goal is to bring Go to Android and iOS,
starting with Android.

This is new territory for Go and a well-established
ecosystem. A lot of experimentation is necessary.

* Today

* Go 1.4 Status

The coming 1.4 release can build binaries for Android OS.

With the `mobile` subrepository and the Android SDK/NDK, it can:

- Build `.so` files for linking into Android Apps
- Build apps based on NativeActivity ("All Go")

* What's there

- Go standard library tests running on Android OS

- JDK / runtime hooks

- The `gobind` tool, for calling Go from Java: [[http://golang.org/s/gobind]]

Packages for cross-device apps:

- [[https://godoc.org/golang.org/x/mobile/app][App control]]

- [[https://godoc.org/golang.org/x/mobile/gl][OpenGL ES 2]]

- [[https://godoc.org/golang.org/x/mobile/event][Touch events]]

- [[https://godoc.org/golang.org/x/mobile/geom][Screen geometry]]

* What's missing — a good build system

There's more than one way to build an Android App.

None of them

- fit well with what go programmers expect (the go tool)
- work for cross-device development

We are working on this for Go 1.5.

Until it is done, using Go on Android requires some bravery.

* What it's for — the two kinds of apps

*SDK* *Apps*

Write your Android UI in Java.
Write your iOS UI in Objective-C/Swift.
Write your logic in Go.

Share the Go using interfaces generated by `gobind`.

*NDK* *Apps*

Games.

Use OpenGL or the coming 2D [[http://godoc.org/golang.org/x/mobile/sprite][sprite]] package to write to the screen.
Everything is written in Go.

* Hello, World!

Portable APIs, just Go. This is a complete app:

.play gothamgo-android/red.go

* Write anywhere

Developing with portable APIs means starting from very little.
It is a lot of work to get going and limits access to device features.

But it also frees us from device-specific build systems.

The app package includes Mac/X11 shims for starting as normal programs.
We can write Apps anywhere we can write Go.

(Windows coming soon.)

* Touch events

.play gothamgo-android/touch.go

* Package sprite

We are building a 2D rendering and compositing package.

It renders a scene graph. A scene starts with a root
`*sprite.Node`, which can have child nodes.

Each node may have an affine transform and texture.

Rendering is done in a depth-first traversal of the scene,
with transforms applied relative to the parent.

Composition is done in OpenGL.

* Sprite — affine transform

.image gothamgo-android/sprite_affine.svg

* Sprite — depth first traversal, applying parent's transforms

.image gothamgo-android/sprite_subtex.svg

* Sprite Demo

* Sprite — what's next

- Rasterizer, CPU-based for now

- Text, based on freetype-go

- Simple UI elements, focused on game menu needs

- Debugging tools

- Performance

* Go 1.5 Plans (July 2015)

- A build system

- OpenAL bindings for sound

- Very basic UI building blocks for game-like apps

- iOS experimental support
