Outils pour utilisateurs

Outils du site


archives:kivy_buildozer_pour_creer_une_application_android_avec_un_script_python

Ceci est une ancienne révision du document !


Kivy: Buildozer pour créer une application Android avec un script python

Cette page ne concerne que python 3.5 Pour python 2.7, voir la page Buildozer avec python 2.7

En décembre 2018, buildozer compile officiellement avec python 3, ne plus utiliser Crystax

Bigre: Impossible de compiler un Hello World ! en décembre 2018, en python 3.5 sur debian stretch !

Utiliser VirtualBox avec 2 systèmes invités différents si vous utilisez python3.5 et python2.7 pour divers projets.

Tout pour Debian Buster

sudo dpkg --add-architecture i386
sudo apt-get update

Logiciels

sudo apt-get install filezilla terminator caja-open-terminal grsync gparted geany geany-plugins ncdu git thunderbird blender inkscape vlc gimp audacity gdebi keepassxc geeqie blender simple-scan gnome-system-tools cups locales 

System

sudo apt-get install libsdl2-dev zlib1g-dev pkg-config autoconf automake cmake dkms libtool libsdl2-2.0-0 ccache openjdk-8-jdk unzip ffmpeg libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev libgstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good libncurses5:i386 libstdc++6:i386 libgtk2.0-0:i386 libpangox-1.0-0:i386 libidn11:i386 zlib1g:i386 openjdk-8-source libssl-dev openssl gcc libpangoxft-1.0-0:i386 adb libtool build-essential python3-pip python3-dev python3-six libpython3-all-dev python3-all python3-all-dev python3-virtualenv virtualenv

N'existe plus

libav-tools

Python 3.7

Successfully installed
MarkupSafe-1.1.0 appdirs-1.4.3 colorama-0.4.1 jinja2-2.10 sh-1.12.14

sudo pip3 install jinja2 appdirs sh colorama setuptools

cython3: 0.28.4-1

sudo apt-get install cython3 

Building wheels for collected packages:
pyyaml, bs4, twisted, kivy, pyjnius, Kivy-Garden Installing collected packages: pyyaml, soupsieve, beautifulsoup4, bs4, unidecode, lxml, attrs, Automat, PyHamcrest, constantly, hyperlink, incremental, zope.interface, twisted, numpy, opencv-python, Kivy-Garden, docutils, pygments, kivy, pygame, ptyprocess, pexpect, buildozer, pyjnius

Successfully installed

Automat-0.7.0 Kivy-Garden-0.1.4 PyHamcrest-1.9.0 attrs-18.2.0 beautifulsoup4-4.7.0 bs4-0.0.1 buildozer-0.37 constantly-15.1.0 docutils-0.14 hyperlink-18.0.0 incremental-17.5.0 kivy-1.10.1 lxml-4.2.6 numpy-1.15.4 opencv-python-3.4.5.20 pexpect-4.6.0 ptyprocess-0.6.0 pygame-1.9.4 pygments-2.3.1 pyjnius-1.1.4 pyyaml-3.13 soupsieve-1.6.1 twisted-18.9.0 unidecode-1.0.23 zope.interface-4.6.0

sudo pip3 install pyyaml bs4 unidecode lxml twisted numpy opencv-python kivy pygame buildozer pyjnius

Les dépendances en qq lignes provisoires Debian Stretch

sudo dpkg --add-architecture i386
sudo apt-get update

# Logiciels
sudo apt-get install filezilla terminator caja-open-terminal grsync gparted geany geany-plugins ncdu git thunderbird blender inkscape vlc gimp audacity gdebi keepassxc geeqie blender simple-scan gnome-system-tools cups locales 

# System
sudo apt-get install python-pip python-freenect libsdl2-dev zlib1g-dev pkg-config autoconf automake cmake libav-tools dkms libtool libsdl2-2.0-0 ccache openjdk-8-jdk unzip ffmpeg libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev libgstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good libncurses5:i386 libstdc++6:i386 libgtk2.0-0:i386 libpangox-1.0-0:i386 libidn11:i386 python2.7 python2.7-dev zlib1g:i386 openjdk-8-source libssl-dev openssl gcc libpangoxft-1.0-0:i386 adb libtool build-essential python-dev python3-pip python3-dev python3-six python-six libpython3-all-dev python3-all python3-all-dev python3-virtualenv virtualenv

# pip3
sudo pip3 install jinja2 appdirs sh colorama setuptools
sudo pip3 install pyyaml bs4 unidecode lxml twisted numpy opencv-python kivy pygame cython buildozer pyjnius pygame kivy buildozer cython
sudo pip3 install --upgrade cython==0.29
sudo pip3 install --upgrade pyjnius pygame kivy buildozer
sudo pip3 install https://github.com/kivy/buildozer/archive/master.zip

# pip
sudo pip install twisted numpy opencv-python pygame kivy colorama sh appdirs jinja2 six pyopenssl cython setuptools
sudo pip install buildozer
sudo pip install https://github.com/kivy/buildozer/archive/master.zip
sudo pip install -U --force-reinstall Cython

# locales
sudo dpkg-reconfigure locales

Installation de python 3.7 sur debian stretch

!!!!!!!!!!!!!!!! Ne surtout pas faire ça, ça va casser tous les programmes construit en python !!!!!!!!!!!!!!!!!!!!

sudo apt-get install build-essential checkinstall libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
sudo tar xzf Python-3.7.0.tgz
cd Python-3.7.0
sudo ./configure --enable-optimizations
sudo make altinstall
python3 -V

Installation de Kivy

Installation de Buildozer

Installation

Dépendances suffisantes mais peut-être pas nécessaires:

sudo apt-get install python3-dev zlib1g-dev pkg-config python3-colorama python3-sh python3-appdirs python3-jinja2 python3-six autoconf automake libtool build-essential cmake libav-tools dkms

Cython

Vérifier la version de cython à installer:

En décembre 2018, version = 0.29.1

sudo pip3 install cython 

Pour imposer une version:

sudo pip3 install --upgrade cython==0.23

Mais quelle version est nécessaire ?

Les lib32 pour un 64 bits

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential ccache git libncurses5:i386 libstdc++6:i386 libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 openjdk-8-jdk unzip zlib1g-dev zlib1g:i386

En décembre 2018 sur debian stretch

Version stable:

sudo pip3 install buildozer

retourne

Successfully installed buildozer-0.37 virtualenv-16.1.0

Doc github

# via pip (latest stable, recommended)
sudo pip install buildozer

# latest dev version
sudo pip install https://github.com/kivy/buildozer/archive/master.zip
# Successfully installed buildozer-0.38.dev0

# git clone, for working on buildozer
git clone https://github.com/kivy/buildozer
cd buildozer
python setup.py build
sudo pip install -e .

Ressources

Compilation d'un projet

Init

Ouvrir un terminal dans votre projet:

buildozer init

Edition de buildozer.spec

Points importants

# (str) Source code where the main.py live
source.dir = .
 
# (list) Source files to include (let empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas,ogg
 
# (list) List of inclusions using pattern matching
source.include_patterns = data/*.png, sound/*.ogg
 
# (list) Application requirements
# comma seperated e.g. requirements = sqlite3,kivy
requirements = python3,kivy,openssl
 
# (str) Presplash of the application
presplash.filename = %(source.dir)s/data/logo_labomedia.png
 
# (str) Icon of the application
icon.filename = %(source.dir)s/data/multipong.png
 
# (str) Supported orientation (one of landscape, portrait or all)
orientation = landscape
 
# (list) Permissions
android.permissions = INTERNET,CHANGE_WIFI_MULTICAST_STATE,ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE
 
# (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86
android.arch = armeabi-v7a

Version

Il faut définir une version pour l'application que vous compilez.

Version Méthode 1

Cette ligne doit être la première ligne de code du fichier main.py; les versions seront gérées dans ce fichier.

__version__ = '0.67'
# (str) Application versioning (method 1)
version.regex = __version__ = ['"](.*)['"]
version.filename = %(source.dir)s/main.py

# (str) Application versioning (method 2)
# version = 1.2.0

Version Méthode 2

La version est définie dans ce fichier buildozer.spec:

# (str) Application versioning (method 1)
#version.regex = __version__ = ['"](.*)['"]
#version.filename = %(source.dir)s/main.py

# (str) Application versioning (method 2)
version = 1.2.0

Exemple

Compilation du apk

buildozer -v android debug

Quand ça plante

  • buildozer android clean
  • Détruire /home/user/.local/share/python-for-android
  • .buildozer du home
  • .buildozer de votre dossier
  • .android du home

Debug de l'*.apk si l'application ne se lance pas

Kivy Launcher

Cette méthode n'exécute pas le apk, mais lance le main.py. Utilisez logcat.

Suivre tout ce qui se passe sur le téléphone avec logcat

sudo apt-get install adb
adb root
adb shell
kminilte:/sdcard/kivy/TapOSC $ logcat

Problème avec UTF-8 dans .kv

* A vérifier si c'est toujours actuel en 2019 avec python 3 par défaut !

Dans truc.kv:

    Label:
        id: Titre
        font_size:  root.width/28
        text: self.titre.text

Dans main.py:

class Machin(Screen):
    titre = ObjectProperty()
 
    # Dans le __init__() ou ailleurs
    self.titre.text = "éèàùê"

Un jeu qui marche

archives/kivy_buildozer_pour_creer_une_application_android_avec_un_script_python.1546539873.txt.gz · Dernière modification : 2019/01/03 18:24 de serge