{namespace buck.install}

/***/
{template .soyweb}
  {call buck.page}
    {param title: 'Downloading and Installing Buck' /}
    {param prettify: true /}
    {param description}
      How to download, install, and setup Buck for your project.
    {/param}
    {param content}

{call buck.platformWarning /}

Buck requires that the following tools are already installed:
<ul>
  <li>Oracle JDK 7
  <li>Ant 1.8
  <li>Python 2.6
  <li>Git
  <li>Android SDK
</ul>

Once you have the above tools installed, you can install Buck as follows:
{call buck.installationInstructions /}

If everything worked correctly, you should see something like:

{literal}<pre>
buck build tool
usage:
  buck [options]
  buck command --help
  buck command [command-options]
available commands:
  audit      lists the inputs for the specified target
  build      builds the specified target
  clean      deletes any generated files
  install    builds and installs an APK
  project    generates project configuration files for an IDE
  targets    prints the list of buildable targets
  test       builds and runs the tests for the specified target
  uninstall  uninstalls an APK
options:
 --help         : Shows this screen and exits.
 --version (-V) : Show version number.
{/literal}</pre>

Because you will likely be running <code>./bin/buck</code> often, you should
add it to your <code>$PATH</code> so that you can simply
run <code>buck</code> from the command line. One of the easiest ways to do this
is to create a symlink to Buck from a directory that is likely already on
your <code>$PATH</code>, such as <code>/usr/bin/</code>:

<pre>sudo ln -s ${lb}PWD{rb}/bin/buck /usr/bin/buck</pre>

To verify that this worked, run <code>which buck</code> to confirm
that it maps to <code>/usr/bin/buck</code>.

<h2 id="locate-android-sdk">Tell Buck where to find your Android SDK and NDK</h2>

Assuming you are using Buck to build Android code, you need to tell Buck where to find your Android
SDK (and Android NDK, if you are building native code). You have two options:

<h3>Create a local.properties File</h3>

The preferred option is to create a <code>local.properties</code> file in the root of your project.
It should define <code>sdk.dir</code> to identify the path to your Android SDK
and <code>ndk.dir</code> to identify the path to your Android NDK.
Be sure to specify an absolute path.

// This is not actually Python code, but lang-py results in the desired effect.
<pre class="prettyprint lang-py">
sdk.dir=/home/username/android-sdk-linux<br>
{\n}
# This is necessary only if you are building native code<br>
# using build rules such as ndk_library().<br>
ndk.dir=/home/username/android-ndk-r8b
</pre>

<h3>Define environment variables</h3>

If Buck cannot find the necessary paths in a <code>local.properties</code> file, then it will fall
back on environment variables. The location of the Android SDK can be specified by either an
{sp}<code>ANDROID_SDK</code> or <code>ANDROID_HOME</code> environment variable. (If both are
specified, then <code>ANDROID_SDK</code> takes precedence.)
The location of the Android NDK can be specified by an <code>ANDROID_NDK</code> environment
variable.

<pre>
export ANDROID_SDK=/home/username/android-sdk-linux<br>
export ANDROID_HOME=/home/username/android-sdk-linux<br>
export ANDROID_NDK=/home/username/android-ndk-r8b
</pre>

If you choose to go this route, you likely want to add these definitions to your
{sp}<code>~/.bash_profile</code> on OS X or <code>~/.bashrc</code> on Linux.

    {/param}
  {/call}
{/template}
