In this comprehensive guide, our primary goal is to provide a detailed, step-by-step process for building a simple Android application with Go and the gomobile toolset. Whether you’re keen on designing a calculator or a notes app, this tutorial will serve as your essential walkthrough.

We assume that our readers possess a fundamental understanding of Go, so we’ll dive straight into how you can leverage this robust language for mobile application development, focusing specifically on the Android platform. This guide will help you harness the power of Go in a mobile environment and give you practical experience in creating an Android application using Go.

Tools we are going to use

To streamline the process of building an Android application, we’ll utilize a variety of tools, each fulfilling a specific purpose in our development journey.

Our primary tool will be Go, a statically-typed, compiled programming language renowned for its simplicity, efficiency, and strong support for concurrent programming. Given its performance comparable to C++, and easier syntax and memory safety, Go has rapidly gained popularity and found its application in various projects, including mobile app development.

Next, we’ll use gomobile, a powerful toolset that makes it possible to write mobile applications in Go. The gomobile toolset opens up an array of opportunities to write more efficient and robust code, especially when we need to take advantage of Go’s speed and simplicity on a mobile platform.

We’ll be working with the Android SDK, the software development kit that provides the API libraries and developer tools necessary to build, test, and debug Android applications.

Also, we’ll use Go Modules for our package dependency management. Introduced in Go 1.11, Go modules are the standard for dependency management in Go and offer better version tracking and package distribution.

Finally, we’ll be creating our user interface and implementing Java bindings generated by gomobile using Android Studio, the official Integrated Development Environment (IDE) for Android development.

By following this guide, you will grasp the essentials of Go mobile development, acquiring practical skills that will aid your journey as a mobile developer using Go and gomobile.


Before we begin, there are a few preparatory steps we need to complete. Ensuring the correct Go and gomobile setup and verifying the Android SDK setup are crucial prerequisites for smooth sailing ahead in your Go mobile development journey.

Ensuring correct Go and gomobile setup

First, we need to ensure that we have the correct Go and gomobile setup. As we are focusing on building an Android application with Go, these tools are going to be our foundation.

You need to have the latest version of Go installed on your system. You can verify the installation by opening a terminal and running the following command:

go version

This should display the version of Go installed on your system. If you have Go installed properly, the next step is to install gomobile. You can install it using the go get command:

go get -u

After installing gomobile, initialise it with the following command:

gomobile init

This command might take a while to run because it compiles the standard library for mobile platforms.

Verifying the Android SDK setup

The second prerequisite is to verify the Android SDK setup. As we are building an Android application, we need to ensure that the Android SDK and the Android build tools are properly installed.

For this guide, we are assuming that you have Android Studio installed, which should come with the necessary Android SDK. If not, you can download it from the official Android developer site. Once installed, verify your SDK tools setup. The Android SDK Build-Tools, SDK Platform-Tools, and SDK Tools should be up to date.

To ensure your Android environment is correctly set up, you can navigate to the SDK Manager in Android Studio and check your installed packages. The Android SDK location should be available at the top of the SDK Manager.

By fulfilling these prerequisites, we can proceed confidently with our Go mobile development, knowing that our tools are correctly set up for building an Android application using Go and gomobile. In the upcoming sections, we’ll delve into setting up the project, understanding the gomobile toolset, and more. Stay tuned!

Setting up Your Project

Now that we have verified our Go, gomobile, and Android SDK setups, it’s time to start building our Android application with Go. The initial step involves setting up the project, which includes creating a new Go module and building a basic Go package.

Creating a new Go Module

In Go, modules are collections of Go packages stored in a file tree with a go.mod file at its root. The go.mod file defines the module’s module path, which is its import path prefix, and its dependency requirements.

To create a new Go module, navigate to your workspace and initiate a new module by running:

go mod init <module-name>

Replace <module-name> with the name you want for your module. For instance, if we are building a calculator application, you might name your module calculator. The command would look like this:

go mod init calculator

This command will create a go.mod file in your project directory which will house all your dependencies as you add them.

Building a basic Go Package

Once we’ve initialized our Go module, the next step in Go mobile development is creating a basic Go package. In Go, a package is a collection of source files in the same directory that are compiled together.

Create a new directory for your package and create a new .go file. You might name it main.go. Here’s an example of a basic Go package with a simple “Hello, World!” function:

package main

import "fmt"

func Hello() string {
    return "Hello, World!"

func main() {

In this code snippet, we’ve created a simple Go package with a Hello function that returns a “Hello, World!” string.

By following these steps, you’ll have a Go module and a basic Go package as the starting point for your Android application using Go and gomobile. In the following sections, we’ll explore the gomobile toolset and begin building our simple Android application.

Understanding the gomobile toolset

One of the most important aspects of building an Android application with Go is understanding the gomobile toolset. As we proceed with our Go mobile development, gaining insights into the gomobile toolset’s role in Android app development and learning to use gomobile bind will prove indispensable.

The role of gomobile in Android App Development

The gomobile toolset is a powerful collection of tools that streamline mobile application development using Go. It helps bridge the gap between the Go programming language and the mobile environment, allowing developers to harness Go’s simplicity and efficiency in their Android applications.

A significant feature of gomobile is that it allows developers to create mobile apps that call Go code through bindings. These bindings are a way to use Go functions in Android and iOS environments, effectively expanding Go’s reach beyond the backend server-side development it is commonly known for.

Moreover, gomobile also assists in the generation of language bindings that make it possible for the Go package to be called from Java in Android. This capability is critical as it allows developers to leverage Go’s performance and simplicity in their Android applications seamlessly.

Using gomobile bind

Among the several commands provided by the gomobile toolset, one of the most significant is gomobile bind. The gomobile bind command is used to generate language bindings for Go packages to be invoked in Java.

Let’s take a look at an example. We’ll use the simple Hello function we created in the earlier section:

package main

import "fmt"

func Hello() string {
    return "Hello, World!"

To generate Java bindings for this Go package, navigate to the directory of your package and run the following command:

gomobile bind -target=android

This command will generate a .aar file, which is a binary distribution of an Android Library Project. The .aar file includes the Java classes, manifest and the compiled Go code as a native .so library. This can be added to an Android Studio project, where the Go functions can be invoked in Java.

Understanding how to use gomobile bind is a fundamental part of Go mobile development and crucial for building an Android application with Go and gomobile. As we proceed, we’ll learn how to integrate these Java bindings in our Android application and make full use of the Go package we created.

Building Your Simple Android Application

After gaining an understanding of the gomobile toolset, the exciting part begins – we are now going to start building our Android application with Go. In this section, we’ll cover designing the application interface and implementing the application logic in Go.

Designing the Application Interface

Designing the application interface is the first step towards bringing our Android application to life. For the purpose of this guide, we’ll be using Android Studio’s layout editor to design our application’s interface.

Open Android Studio and start a new Android Studio project. Select Empty Activity as your template for simplicity. In the layout editor, you can drag and drop various UI elements onto the canvas to design your application’s interface.

For a calculator application, you might need a TextView to display the operation and the result, and several Buttons for the digits and the arithmetic operations. You can customize the properties of each UI element in the Attributes panel on the right-hand side.

Once you’re satisfied with your interface, remember to give each UI element an ID, as we will need these IDs to interact with the elements in our code.

Implementing the Application Logic in Go

With the interface designed, it’s now time to delve deeper into the Go mobile development and implement our application logic in Go.

Let’s say we’re developing a simple calculator. We might want a Go function for each arithmetic operation. Here’s how we might define a Go package for our calculator logic:

package calculator

func Add(x, y float64) float64 {
    return x + y

func Subtract(x, y float64) float64 {
    return x - y

func Multiply(x, y float64) float64 {
    return x * y

func Divide(x, y float64) float64 {
    if y != 0 {
        return x / y
    return 0

In this package, we define functions for addition, subtraction, multiplication, and division. Each function takes two float64 arguments and returns a float64 result. Note that we’re handling the potential division by zero error in the Divide function.

After defining our package, we generate the Java bindings with gomobile bind -target=android as previously explained.

This phase of building our Android application using Go and gomobile blends creativity and logic. As we design our app’s interface and build out the logic, we begin to see our simple Android application come to life. In the next sections, we’ll tie it all together, integrating our Go logic with our Android application and performing the final steps to bring our app to completion.

Integrating Go and Android

At this stage of building our Android application with Go, we’ve designed our app’s interface and implemented the app logic in Go. The next step is integrating our Go code with our Android application, which involves generating Java bindings with gomobile and using the Go functions in our Android application.

Using gomobile to Generate Java Bindings

As we’ve covered before, gomobile bind is a powerful command that generates Java bindings for our Go package. By doing this, we can call our Go functions directly in our Android Java code.

Navigate to the directory containing your Go package and run the following command:

gomobile bind -target=android -o calculator.aar

This will create a calculator.aar file, which includes the compiled Go code and the Java bindings that allow us to interact with it.

Next, we need to add this .aar file to our Android Studio project. Here are the steps:

  1. In Android Studio, go to File > New > New Module.
  2. Choose Import .JAR/.AAR Package and click Next.
  3. Locate your .aar file and click Finish.

Now your Go package is included in your Android Studio project and you can use it in your Android code.

Using the Go functions in your Android application

With the Go package added to our project, we can start using the Go functions in our Android application. Open the main activity file of your Android project, and you can now import your Go package as follows:

import calculator.*;

You can then call the Go functions as you would with any other Java function. If you’re building a calculator application, you might call the Add function when the “+” button is pressed. Here’s how you can do it:

Button addButton = findViewById(;
addButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Retrieve numbers from the input fields
        EditText firstNumber = findViewById(;
        EditText secondNumber = findViewById(;

        // Convert the numbers to double
        double x = Double.parseDouble(firstNumber.getText().toString());
        double y = Double.parseDouble(secondNumber.getText().toString());

        // Call the Add function from our Go package
        double result = Calculator.Add(x, y);

        // Display the result
        TextView resultTextView = findViewById(;

This section is a crucial part of Go mobile development and will enable you to seamlessly integrate Go with Android. As you continue to build your Android application using Go and gomobile, you’ll find that the power of Go is a great asset in mobile development. In the next section, we’ll cover testing and debugging, wrapping up your application for its grand debut!

Building and Testing your Application

Having integrated our Go code with our Android application, we’re nearing the end of our journey of building an Android application with Go. Now, we need to build and test our application, which are critical steps to ensure the performance and correctness of our application.

Building your Android application

Building your Android application in Android Studio is a straightforward process. You can simply go to Build > Make Project or use the keyboard shortcut Ctrl+F9.

This will compile your code and create an APK (Android Package Kit) that can be installed on an Android device. You will see the build output in the Build window at the bottom of the Android Studio interface. If your build is successful, you will see a BUILD SUCCESSFUL message.

If you want to distribute your app, you might want to generate a signed APK or a signed app bundle. You can do this by going to Build > Generate Signed Bundle / APK... and following the prompts.

Running and Testing your Application

Running your Android application can be done in two ways: on a physical Android device or on an emulator. To run your application, click on the green arrow in the toolbar, or go to Run > Run 'app'.

If you’ve connected an Android device to your computer and enabled USB debugging on the device, it will show up in the Select Deployment Target window. Alternatively, you can create a new virtual device by clicking on Create New Virtual Device... and following the prompts.

Once your application is running, you should test it thoroughly. Make sure to test all the functionality and edge cases to ensure the application behaves as expected. In the case of our calculator app, you should test the operations with various numbers, including edge cases such as division by zero.

Remember, testing is a crucial part of Go mobile development. Taking the time to thoroughly test your application will ensure a smooth and enjoyable user experience.

And with that, congratulations are in order! You’ve successfully built an Android application using Go and gomobile. With these skills and tools at your disposal, you’re ready to tackle even more ambitious projects and bring your innovative ideas to life.

Conclusion and Next Steps

We’ve come a long way in our journey of building an Android application with Go and gomobile. Now, it’s time to look back at what we’ve accomplished, and more importantly, look forward to what’s next in our journey of Go mobile development.

Recap of the Process

Our journey started with ensuring the correct setup of Go and gomobile, vital tools for building an Android application with Go. We then proceeded to create a new Go module and built a basic Go package, leveraging the simplicity and efficiency of Go in mobile app development.

Understanding the gomobile toolset was our next milestone, where we explored the significant role of gomobile in Android app development and learned to use gomobile bind, a powerful command that generates language bindings.

We then dove into the practical aspects of Android app development, designing our app interface and implementing our application logic using Go. The integration of Go and Android marked a critical point in our project, as we used gomobile to generate Java bindings and called the Go functions in our Android application.

Finally, we built, ran, and tested our application, ensuring its functionality and performance. Each step of this journey equipped us with knowledge and experience in Go mobile development, enabling us to effectively build Android applications using Go.

Further Learning Opportunities in Go Mobile Development

With the basics of building an Android application with Go and gomobile under your belt, you’re ready to tackle more complex projects and deepen your knowledge.

You might want to explore more advanced topics in Go mobile development, such as handling user inputs, building complex interfaces, managing state, or working with databases. These skills will allow you to build more complex and robust Android applications.

You could also consider learning how to build iOS applications with Go and gomobile, expanding your mobile development skills to another platform.

Furthermore, contributing to open-source projects or building your own projects is an excellent way to apply and expand your knowledge. The Go community is active and welcoming, with plenty of opportunities to learn from and contribute to.

In conclusion, building an Android application with Go and gomobile is a rewarding journey that opens up numerous opportunities. As you continue learning and building, you’re sure to find that the power and simplicity of Go make it an excellent choice for mobile development. The road of Go mobile development is full of opportunities for growth and innovation, and we can’t wait to see what you’ll build next.

Comments to: Building a Simple Android Application with Go (Golang) and Gomobile

    Your email address will not be published. Required fields are marked *

    Attach images - Only PNG, JPG, JPEG and GIF are supported.