app: add RunOnJVM to allow Cgo access to the Android JVM and context

CL 122897 changed the visibility of the global JavaVM, JNIEnv and
android.context.Context variables to be internal to gomobile.
However, users of gomobile build programs used those internal
variables to access Java API through Cgo and JNI without Java code.

Make an exported version of mobileinit.RunOnJVM available. This is
quite possibly not the right API for this, but I don't have the
bandwidth to design a better solution. On the other hand, without
access to Java APIs, gomobile build programs are unfairly forced to
add Java code where before there were no need.

Fixes golang/go#26815

Change-Id: I655fb858ffff03a0d542aa9bf97eefc7a22dd5d0
Reviewed-by: Hyang-Ah Hana Kim <>
1 file changed
tree: ae102300e8d61c542b4f54f40f51196ec2f759a3
  1. .gitattributes
  2. .gitignore
  9. app/
  10. asset/
  11. bind/
  12. cmd/
  13. codereview.cfg
  14. doc/
  15. event/
  16. example/
  17. exp/
  18. geom/
  19. gl/
  20. internal/
  21. misc/
  22. testdata/

Go support for Mobile devices

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

Package documentation as a starting point:

Caution image

The Go Mobile project is experimental. Use this at your own risk. While we are working hard to improve it, neither Google nor the Go team can provide end-user support.

This is early work and installing the build system requires Go 1.5. Follow the instructions on to install the gomobile command, build the basic and the bind example apps.

Contributions to Go are appreciated. See