Kivy is awesome library for developing GUI applications in Python.
It’s possible to build same application for desktop, Android or iOS. It’s something like Cordova/PhoneGap for JavaScript.
I was following Kivy crash course 2: Building an android apk tutorial recorded by Alexander Taylor.
I was trying to build application on Linux Debian for Android:
buildozer android debug
Build failed with quite strange message:
[mergemanifest] Manifest merger disabled. Using project manifest only.
[echo] Handling aidl files...
[aidl] Found 1 AIDL files.
[aidl] Compiling 1 AIDL files.
[aidl] /home/georgik/.buildozer/android/platform/android-sdk-21/platform-tools/aidl: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
BUILD FAILED
assets/private.mp3: /home/georgik/idea/kivytest/.buildozer/android/app/sitecustomize.pyo
Traceback (most recent call last):
File "build.py", line 431, in
make_package(args)
File "build.py", line 346, in make_package
subprocess.check_call([ANT, arg])
File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ant', 'debug']' returned non-zero exit status 1
The reason of this problem is not so obvious.
My operating system is 64bit, but Android build system requires 32 bit version of stdc++ library.
Fix is very easy. Just install lib32stdc++6 package :-)
apt-get install lib32stdc++6
If build is still failing, because of other missing libraries, then you can use online Debian package search to find missing dependencies: https://www.debian.org/distrib/packages
Other missing 32bit libraries are often libz, libncurses5:
apt-get install lib32z1 lib32ncurses5