The Go Mobile project is a framework and toolchain that enables Go developers to build native mobile applications for Android and iOS entirely in Go, or to compile Go packages into shared libraries that can be called from existing native mobile apps. It provides a complete set of libraries for handling mobile app lifecycle events, rendering 2D and 3D graphics through OpenGL ES, accessing device sensors like accelerometers and gyroscopes, processing touch and keyboard input, playing audio via OpenAL Soft, and reading bundled application assets.
The project distinguishes itself by offering two complementary approaches to mobile development with Go. Developers can create standalone native mobile apps written completely in Go, with the framework managing platform-specific lifecycle callbacks and resource management. Alternatively, the binding tool generates Java and Objective-C wrappers around Go functions, allowing teams to reuse existing Go code within traditional Android or iOS projects built with platform-native languages.
Beyond these core capabilities, the framework includes a 2D scene graph renderer for efficient sprite-based graphics, an event-driven architecture that dispatches start, stop, pause, and resume events to Go code, and a sensor polling loop for real-time access to motion data. The project compiles Go source into platform-specific shared libraries with generated C bindings, bridging Go code with Java and Objective-C runtimes on mobile devices.