# Tutorial - Introduction

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.
