Skip to content

Turn your Python application into an Android APK - Build your own python and extension

License

MIT, LGPL-2.1 licenses found

Licenses found

MIT
LICENSE
LGPL-2.1
COPYING
Notifications You must be signed in to change notification settings

alex-python/python-for-android

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python for Android

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.

Global overview

  1. Download Android NDK, SDK
  1. Launch "android", and download latest Android platform, here API 14, which would be Android 4.0

  2. 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)
  1. Clone python-for-android:

    git clone git://github.com/kivy/python-for-android
    
  2. Build a distribution with OpenSSL module, PIL and Kivy:

    cd python-for-android
    ./distribute.sh -m "openssl pil kivy"
    
  3. 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
    
  4. Install the debug apk to your device:

    adb install bin/touchtracer-1.0-debug.apk
    
  5. Enjoy.

Bootstraps

We call bootstraps the part of the toolchain/code that will start your Python code. For example, Kivy currently require lot of code to start the Activity, setup the OpenGL ES 2 context, initialize the native environment, extract your application code, and boot on it. This bootstrap is called "legacy".

Another bootstrap currently in experimentation is "minimal". It use a Native activity, extract only one file and boot on it, and will start your main.py directly from the APK. This can be a place to others experimentation such as pure-python / android applications.

You can select a bootstrap with:

./distribute -b "minimal" -m "python"

The minimal bootstrap can be used with:

./build.py --package org.test.minimal --name __minimal --version 1 \
           --private ~/code/testmininal/ --minsdk 9 --sdk 14 \
           --asset \
           debug

Here is a minimal example of main.py for the minimal bootstrap:

import androidembed
print "Hello world, we are entering in a loop!"
while androidembed.poll(1000):
    print "Plop"
print "We leaved our hello world!"

Each bootstrap have recommendations and limitations. More informations can be found at each bootstrap/NAME/README.

Troubleshooting

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

About

Turn your Python application into an Android APK - Build your own python and extension

Resources

License

MIT, LGPL-2.1 licenses found

Licenses found

MIT
LICENSE
LGPL-2.1
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 84.1%
  • Shell 4.4%
  • C++ 4.3%
  • Python 3.9%
  • Java 1.0%
  • Objective-C 0.9%
  • Other 1.4%