Python for android is a project to create your own Python distribution including the modules you want, and create an apk including python, libs, and your application.
- Website: http://python-for-android.rtfd.org/
- Forum: https://groups.google.com/forum/?hl=fr#!forum/python-android
- Mailing list: [email protected]
- Download Android NDK, SDK
Launch "android", and download latest Android platform, here API 14, which would be Android 4.0
Export some environment variables:
export ANDROIDSDK="/path/to/android/android-sdk-linux_86" export ANDROIDNDK="/path/to/android/android-ndk-r8c" export ANDROIDNDKVER=r8c export ANDROIDAPI=14
(Of course correct the paths mentioned in ANDROIDSDK and ANDROIDNDK)
Clone python-for-android:
git clone git://github.com/kivy/python-for-android
Build a distribution with OpenSSL module, PIL and Kivy:
cd python-for-android ./distribute.sh -m "openssl pil kivy"
Go to your fresh distribution, build the APK of your application:
cd dist/default ./build.py --package org.test.touchtracer --name touchtracer \ --version 1.0 --dir ~/code/kivy/examples/demo/touchtracer debug
Install the debug apk to your device:
adb install bin/touchtracer-1.0-debug.apk
Enjoy.
You may end up with a very long build.py command-line invocation so to make things easier you can store the arguments in a configuration file like so:
package=net.mechanicalcat.match3 name=Match 3 version=1.3.3 numeric-version=133 dir=~/src/projects/games/match3 orientation=portrait icon=~/src/projects/games/match3/art/android-icon.png presplash=~/src/projects/games/match3/art/android-presplash.jpg blacklist=blacklist.txt sdk=14
and then use the configuration file as your only build argument:
python build.py -c match3_build.ini release
The parameters in the configuration file match the names in the command-line arguments. List parameters (permission, ignore_path) may have multiple items on new lines:
- permission=VIBRATE
- INTERNET
if you get the following message:
Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !
a solution is to remove the "awk" binary in the android ndk distribution
rm $ANDROIDNDK/prebuilt/linux-x86/bin/awk