Installation procedure for Buildozer

102 views
Skip to first unread message

Olivier Moreau

unread,
Dec 9, 2025, 10:43:16 AM12/9/25
to Kivy users support
Hi Kivy Team,
When I discovered the Kivy platform using Pyton to develop apps for Android and IOS, I was very pleased. I tested the modified Python with the KV language and all was fine with me.
BUT
Before going further, I wanted to send my test app to my Andoid phone using the Kivy addon Buildozer. No need to get too fancy in my app before checking the entire process.

I tried to install it on Raspberry : Error, not supporting ARM!
I tried to install it on Github : Many errors, I gave up
I tried to install it on a brand new Linux computer : Still many errors.

I searched solutions in Buildozer documentation, on forums, on many sites and even with an IA. Still no luck.

SO
If by any chance someone has a complete procedure or, even better, a Docker image, please help me (and help other people in the same situation).
Please don't ask me the numerous error messages or the logs. It would be a waste of time, I better start a new installation from scratch.

I start with this :
OVHcloud instance with :
Linux version 6.14.0-34-generic (buildd@lcy02-amd64-017) (x86_64-linux-gnu-gcc-14 (Ubuntu 14.2.0-19ubuntu2) 14.2.0,

I follow this procedure :
followed by :

Alternatively, does someone sell a proper cloud/web service to just upload main.py and form.kv and dowload the resulting apk ? 

A last word; I just cannot believe this introduction to the installation procedure :
Depending the platform you want to target, you might need more tools installed. Buildozer tries to give you hints or tries to install few things for you, but it doesn’t cover every situation.
This is clearly not a very good incitation to use this software...

Thanks in advance for your support.

Luis Angel Maya Galván

unread,
Dec 9, 2025, 4:58:35 PM12/9/25
to kivy-...@googlegroups.com
Send me message, maybe   i can help You to build the APK from .py file an kv file 

El mar, 9 de dic de 2025, 10:45 a.m., Luis Angel Maya Galván <luisgal...@gmail.com> escribió:
Hello, maybelline o can help You, send messenge and i tell step by step how to build the APK from .py file

--
You received this message because you are subscribed to the Google Groups "Kivy users support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kivy-users+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/kivy-users/9893ba31-0ac7-4b16-bae4-21a65281b478n%40googlegroups.com.

Kenechukwu Akubue

unread,
Dec 10, 2025, 2:16:12 AM12/10/25
to Kivy users support
Please post the error you are getting

pedro h

unread,
Dec 30, 2025, 3:32:17 PM (12 days ago) 12/30/25
to Kivy users support
I’ve also experimented with GitHub Actions and Google Colab in the past. They can work for simple cases, but I often ran into issues that were hard to reproduce or that suddenly appeared again on the next build because the environment changed in the background. What has been the most reliable setup for me is using a local Windows machine with WSL2. If you happen to have access to Windows, this allows you to create a clean and consistent environment where all required components (Python, Buildozer, SDK/NDK, etc.) stay stable across builds. If you want, I can walk you through setting up such an environment or help you get your project building reliably. Just send me a private message so we don’t overload the thread with long logs and configuration details.

Lan Le-Dinh

unread,
Jan 2, 2026, 10:57:23 AM (9 days ago) Jan 2
to kivy-...@googlegroups.com
Hi Pedo h
Please send me your documents.
Thanks
Lan

pedro h

unread,
Jan 5, 2026, 10:45:20 PM (6 days ago) Jan 5
to Kivy users support

Hi Lan,

To see if my setup can help you, I need to know a bit more: Are you working on a Windows machine and which KivyMD version are you using?

I’ve developed a small automation that sets up the entire environment (WSL, Android SDK, NDK, etc.) automatically. It’s a GUI-based setup designed to handle the process without terminal commands, which might be easier than following manual documents.

If you are on Windows, I can share the access with you so you can check if it works for your specific project. Let me know your specs!

Lan Le-Dinh

unread,
Jan 5, 2026, 11:01:51 PM (6 days ago) Jan 5
to kivy-...@googlegroups.com
Hi Pedo H
Thanks for your feedback.
I can set up WSL if that is necessary for using your procedures.
I use Windows 11. I can also set up a new environment with versions for different components you are using to avoid mismatching versions which is usually a comman problem.
Best regards
Lan

pedro h

unread,
Jan 6, 2026, 2:15:25 AM (6 days ago) Jan 6
to Kivy users support

"Hi Lan,

I have built a tool that handles the WSL installation and the specific NDK/SDK versions automatically. Since you are on Windows 11, it should work fine and you don't have to set up everything manually to avoid the version mismatches.

You can check it out here, everything is explained on how to get an APK build running: 🔗 https://github.com/PedroHSA0802/apk-builder-studio

Let me know if it works for you."

KXJ YEG

unread,
Jan 6, 2026, 12:50:10 PM (5 days ago) Jan 6
to kivy-...@googlegroups.com
WSL is no doubt an effective tool for Linux build env in Windows, gets the job done most times. 

If you ever feel like you want to use a Linux Virtual Environment under Windows  (I use Oracle Virtualbox) because of specific WSL issues,  this video can help:


Thanks

pedro h

unread,
Jan 6, 2026, 3:16:01 PM (5 days ago) Jan 6
to Kivy users support

Setting up a full virtual machine is definitely a valid path, but as I found out when I started, it’s often more complicated than it looks.

I personally moved away from that because I didn't want to manage gigabytes of VM images and deal with the manual setup every time. That’s exactly why I focused on developing a way to build APKs directly on Windows using WSL—it gives you a clean Linux environment without the overhead of heavy third-party virtualization software.

In my experience, this automated WSL method has led to consistent and reproducible builds. Of course, a full VM remains a solid alternative for those who prefer the manual installation and configuration process.

Whichever way one chooses, the ultimate goal is to get that APK running!

Lan Le-Dinh

unread,
Jan 6, 2026, 4:01:17 PM (5 days ago) Jan 6
to kivy-...@googlegroups.com
Hi Pedo
Thanks for your quick reply and great work.
I definitely will try it out.
Best regards
Lan


KXJ YEG

unread,
Jan 6, 2026, 4:05:41 PM (5 days ago) Jan 6
to kivy-...@googlegroups.com
Great inputs.

On the other hand I moved closer to virtual environments because it allowed greater flexibility to bind older, working versions of libraries rather than the more recent WSL/OS bindings that were automatically enforced but failed unexpectedly. You might ask why anyone would want older versions at all. Well, the peculiar thing with Kivy apps I've see is that sometimes the more recent combo of libraries/cython etc. or the latest python version would crash with hard to debug issues. This points to insufficient testing in the community w.r.t. C or cython support for the underlying android hardware, which did not keep up with libraries or python evolution. Sometimes your build can stumble because there is no wheel for your apk and then you need to go back to an older version that works. 

Managing strategic virtual machines helped me work around these issues. In fact, since 2023 I've built 100% of my working APKs in the virtual machine described in that video only, as other options didn't work.

Anyway, great exchange of notes. I guess the method that'll work for op will depend on their specific needs. WSL is definitely worth trying. 


pedro h

unread,
Jan 6, 2026, 7:29:28 PM (5 days ago) Jan 6
to Kivy users support

I completely agree, kxj—the version mismatch between Cython and Python is the number one reason builds fail. However, that’s exactly why I didn't go the 'global install' route. My tool uses a Template-based Environment Strategy:

  • Environment Pre-Configuration: Before even touching Buildozer, my app uses a 'Config Editor' to set up the WSL environment. You can literally copy-paste the entire configuration from a text file or any specific requirements into this editor window.

  • Isolated Setup: The tool then builds a fresh, isolated virtual environment based on that 'recipe'. This ensures the 'workshop' is perfectly prepared before the actual build starts.

  • Reproducibility: You can share these 1KB config files. If someone has a working setup for an old Kivy project, they just share the text, and my tool recreates that exact environment on any Windows machine.

Here is the environment 'recipe' (Pre-Build Config) I use for a stable KivyMD 2.0.1 setup. You can simply paste this into the App's Config Editor:



# APK Builder Configuration (KivyMD 2.0.1)
# Edit this file for custom builds

[python]
version = 3.11

[system-packages]
# Ubuntu/WSL system packages, including JDK 17
software-properties-common
openjdk-17-jdk
git
zip
unzip
build-essential
libffi-dev
libssl-dev
python3-dev
cmake
ninja-build
pkg-config
autoconf
automake
libtool
patch
ant
python3.11
python3.11-venv
python3.11-dev

[python-packages]
# Python/Pip packages for the build environment
pip==23.0.1
wheel==0.40.0
setuptools==67.6.1
cython==0.29.33
buildozer==1.5.0
pybind11==2.11.1

[buildozer-requirements]
# Essential requirements for KivyMD 2.x (not project-specific)
python3
kivy==2.3.1
https://github.com/kivymd/KivyMD/archive/master.zip
materialyoucolor
asynckivy
asyncgui
numpy
pyjnius

[android-sdk]
# Evaluated by the "Install Android SDK" button
install = true
api = 33
build_tools = 33.0.2

[java]
# JDK version for Gradle/AGP (AGP 8.x requires >= 11; 17 is recommended)
jdk = 17

[gradle]
# Gradle version (p4a/Buildozer generates the wrapper; pinning stable here)
version = 8.0.2

[agp]
# Android Gradle Plugin version (compatible with Gradle 8.0.2, requires JDK >= 11)
version = 8.1.1

[android]
# 64-bit ARM only for faster and resource-efficient builds
archs = arm64-v8a

[build-flags]
# Memory-saving flags (can be increased if needed)
makeflags = -j1
ninjaflags = -j1
gradle_xmx = 1024m

Tebogo Christopher

unread,
Jan 7, 2026, 11:14:00 AM (4 days ago) Jan 7
to kivy-...@googlegroups.com
Install linux ubuntu virtual use your command promp to configure the bulldozer it will work 

KXJ YEG

unread,
Jan 7, 2026, 11:25:22 AM (4 days ago) Jan 7
to kivy-...@googlegroups.com
Just for clarification, I don't recommend a 'global install' whether you go virtual machine or WSL. The proper way is to create python venvs (virtual envs) as per your build's need. A virtual machine allows me to backup snapshots of each venv. This helps with version control especially when we have multiple production builds. I'm sure WSL allows something similar.


pedro h

unread,
Jan 7, 2026, 4:38:38 PM (4 days ago) Jan 7
to Kivy users support

Hi kxj,

Thank you for the clarification. I completely understand that as an experienced developer, you wouldn't use a global installation and that you rely on python venvs for proper version control. My tool actually follows that same principle: it creates isolated environments within WSL to keep everything clean.

My approach follows the same logic of stability as yours, but with a much leaner way of managing it: Text files instead of Gigabytes. Instead of saving an entire environment or venv as a heavy image file or snapshot, I use simple TXT files. The app features a built-in editor where you can paste your requirements (Python version, packages, SDK specs). Once saved, the tool builds the complete WSL environment and the necessary venvs strictly according to this recipe at the push of a button.

The major advantage is the portability: If a user creates a perfect configuration for a specific KivyMD version, they can simply share this recipe as a text file with someone else. That person just copies the text into their app's editor, clicks install, and gets the exact same build environment on their PC—without ever typing a single command into a terminal. You can keep a folder full of these tiny recipes for different projects and bring them back to life anytime via copy-paste. It’s the same result as your VM snapshots, but we’re talking about kilobytes instead of gigabytes.

Of course, I am still in the testing phase and haven't had the chance to personally verify the transfer of a config file to a different PC yet to see if it creates the exact same environment there. However, since the app installs strictly according to these instructions, I am very confident that it works. That is exactly the goal of my work—to make the process as portable and simple as possible.

Lastly, I want to emphasize that I am fully convinced of your approach as well. I know that working with virtual machines is a proven and effective method. In the end, your way is just as right as any way someone finds that works best for them.

Reply all
Reply to author
Forward
0 new messages