> For the complete documentation index, see [llms.txt](https://docs.kivy.fun/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kivy.fun/packaging/packaging-android.md).

# Android

You can create a package for android using the [python-for-android](https://github.com/kivy/python-for-android) project. This page explains how to download and use it directly on your own machine (see `Packaging your application into APK`) or use the `buildozer` tool to automate the entire process. You can also see `Packaging your application for Kivy Launcher` to run kivy programs without compiling them.

For new users, we recommend using `Buildozer` as the easiest way to make a full APK. You can also run your Kivy app without a compilation step with the `Kivy Launcher <Packaging your application for Kivy launcher>` app.

Kivy applications can be `released on an Android market <release_on_the_market>` such as the Play store, with a few extra steps to create a fully signed APK.

The Kivy project includes tools for accessing Android APIs to accomplish vibration, sensor access, texting etc. These, along with information on debugging on the device, are documented at the `main Android page </guide/android>`.

Note

Python 3 support on Android is now available experimentally.

## Buildozer

Buildozer is a tool that automates the entire build process. It downloads and sets up all the prequisites for python-for-android, including the android SDK and NDK, then builds an apk that can be automatically pushed to the device.

Buildozer currently works only in Linux, and is an alpha release, but it already works well and can significantly simplify the apk build.

You can get buildozer at <https://github.com/kivy/buildozer>:

```
git clone https://github.com/kivy/buildozer.git
cd buildozer
sudo python2.7 setup.py install
```

This will install buildozer in your system. Afterwards, navigate to your project directory and run:

```
buildozer init
```

This creates a buildozer.spec file controlling your build configuration. You should edit it appropriately with your app name etc. You can set variables to control most or all of the parameters passed to python-for-android.

Install buildozer's [dependencies](https://buildozer.readthedocs.io/en/latest/installation.html#targeting-android).

Finally, plug in your android device and run:

```
buildozer android debug deploy run
```

to build, push and automatically run the apk on your device.

Buildozer has many available options and tools to help you, the steps above are just the simplest way to build and run your APK. The full documentation is available [here](http://buildozer.readthedocs.org/en/latest/). You can also check the Buildozer README at <https://github.com/kivy/buildozer>.

## Packaging with python-for-android

You can also package directly with python-for-android, which can give you more control but requires you to manually download parts of the Android toolchain.

See the [python-for-android documentation](https://python-for-android.readthedocs.io/en/latest/quickstart/) for full details.

## Packaging your application for the Kivy Launcher

The [Kivy launcher](https://play.google.com/store/apps/details?id=org.kivy.pygame\&hl=en) is an Android application that runs any Kivy examples stored on your SD Card. To install the Kivy launcher, you must:

1. Go to the [Kivy Launcher page](https://market.android.com/details?id=org.kivy.pygame) on the Google Play Store
2. Click on Install
3. Select your phone... And you're done!

If you don't have access to the Google Play Store on your phone/tablet, you can download and install the APK manually from <http://kivy.fun/#download>.

Once the Kivy launcher is installed, you can put your Kivy applications in the Kivy directory in your external storage directory (often available at `/sdcard` even in devices where this memory is internal), e.g. :

```
/sdcard/kivy/<yourapplication>
```

`<yourapplication>` should be a directory containing:

```
# Your main application file:
main.py
# Some info Kivy requires about your app on android:
android.txt
```

The file android.txt must contain:

```
title=<Application Title>
author=<Your Name>
orientation=<portrait|landscape>
```

These options are just a very basic configuration. If you create your own APK using the tools above, you can choose many other settings.

### Installation of Examples

Kivy comes with many examples, and these can be a great place to start trying the Kivy launcher. You can run them as below:

```
#. Download the `Kivy demos for Android <https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/kivy/kivydemo-for-android.zip>`_
#. Unzip the contents and go to the folder `kivydemo-for-android`
#. Copy all the the subfolders here to
```

> /sdcard/kivy

1. Run the launcher and select one of the Pictures, Showcase, Touchtracer, Cymunk or other demos...

## Release on the market

If you have built your own APK with Buildozer or with python-for-android, you can create a release version that may be released on the Play store or other Android markets.

To do this, you must run Buildozer with the `release` parameter (e.g. `buildozer android release`), or if using python-for-android use the `--release` option to build.py. This creates a release APK in the `bin` directory, which you must properly sign and zipalign. The procedure for doing this is described in the Android documentation at <https://developer.android.com/studio/publish/app-signing.html#signing-manually> -all the necessary tools come with the Android SDK.

## Targeting Android

Kivy is designed to operate identically across platforms and as a result, makes some clear design decisions. It includes its own set of widgets and by default, builds an APK with all the required core dependencies and libraries.

It is possible to target specific Android features, both directly and in a (somewhat) cross-platform way. See the Using Android APIs section of the `Kivy on Android documentation </guide/android>` for more details.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kivy.fun/packaging/packaging-android.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
