build/androidtest.bash: script to run all tests in a repository on an
android device.

It assumes it runs in golang.org/x/mobile repository.

This script copies the repository source tree into the connected device
and invokes go test that runs using the binary compiled from
go_android_exec.go. go_android_exec arranges to push and run the test
binary to the right place in the android device.

Change-Id: I4ac24bcfd8e26e01cccd3d7c2dddaf6b3c14951e
Reviewed-on: https://go-review.googlesource.com/1680
Reviewed-by: David Crawshaw <crawshaw@golang.org>
3 files changed
tree: 628fc8c1d8e7b7ef3db5f40e8dc63d4aa37c29e5
  1. app/
  2. bind/
  3. build/
  4. cmd/
  5. event/
  6. example/
  7. f32/
  8. geom/
  9. gl/
  10. sprite/
  11. testdata/
  12. .gitignore
  13. AUTHORS
  14. CONTRIBUTORS
  15. Dockerfile
  16. LICENSE
  17. PATENTS
  18. README.md
README.md

Go support for Mobile devices

The Go mobile repository holds packages and build tools for using Go on Android.

This is early work and the build system is a bumpy ride. Building a binary for Android requires using a Go cross compiler and an external linker from the NDK.

For now, the easiest way to setup a build environment is using the provided Dockerfile:

go get -d golang.org/x/mobile/...
docker build -t mobile $GOPATH/src/golang.org/x/mobile

In your app directory under your $GOPATH, copy the following files from either the golang.org/x/mobile/basic or golang.org/x/mobile/libhello apps:

AndroidManifest.xml
all.bash
build.xml
jni/Android.mk
make.bash

Start with basic if you are writing an all-Go application (that is, an OpenGL game) or libhello if you are building a .so file for use from Java via gobind. Edit the files to change the name of your app.

To build, run:

docker run -v $GOPATH/src:/src mobile /bin/bash -c 'cd /src/your/project && ./make.bash'

When working with an all-Go application, this will produce a binary at $GOPATH/src/your/project/bin/name-debug.apk. You can use the adb tool to install and run this app. See all.bash for an example.


APIs are currently very limited, but under active development. Package documentation serves as a starting point:

Contributions to Go are appreciated. See https://golang.org/doc/contribute.html.