---
layout: documentation
title: Build Mobile Application
---

# Build Mobile Application

You can use Bazel to build a variety of software outputs, including
Linux and Mac OS X applications written in Java, C++ and Objective-C. You can
also use Bazel to build software for other platforms or written in other
languages.

This tutorial shows how to use Bazel to build the following:

*   An Android app
*   An iOS app
*   A mobile backend server running on App Engine

In this tutorial, you'll learn how to:

*   Set up a Bazel workspace and create a `WORKSPACE` file
*   Create `BUILD` files that contain the instructions used by Bazel to build
    the software
*   Run builds using the Bazel command line tool

## Requirements

You can follow the steps in this tutorial on either a Linux or Mac OS X system.
However, you can only build the iOS app if you are running Bazel on OS X. If
you are using Linux, you can skip the iOS instructions and still complete
the rest of the tutorial steps.

## Sample project

You don't have to write your own mobile apps and backend server to use this
tutorial. Instead, you'll use a sample project hosted on GitHub. The sample
project is hosted at the following location:

[https://github.com/bazelbuild/examples/](https://github.com/bazelbuild/examples/)

You'll grab the sample project files in the next step in this tutorial.

## What's next

Let's start off by [setting up](environment.md) the tutorial environment.
