Ceci est une ancienne révision du document !
Table des matières
Kivy Comment créer une application android en python
Buildozer
Buildozer Generic Python packager for Android and iOS
Buildozer est un des projets de kivy. Quand ça marche, c'est super pratique. Cela permet de créer une application Andoid à partir de script python utilisant Kivy. Mais apprendre Kivy, c'est dur !
Les problèmes avec buildozer
Qu'en disent les internets ?
- Buildozer gives error upon building pong app Je ne suis pas le seul !
- Buildozer on kivy example fails to build apk Buildozer semble n'être qu'une perte de temps !
- Essayer Python for Android or QPython BuilDozer est obsolète !
- I cann't create apk with buildozer L'auteur dit avoir essayé différentes méthodes mais que tout se fini sur une erreur: comme moi !
- Buildozer issue 774 La documentation est très imprécise
- Vu de loin sur reddit.com Mais ce ne sera pas sans peine
Cython
- cython ou cython3 et quelle version ?
- buildozer avec pip ou pip3 et quelle version ?
Version de SDK et NDK ANDROID API
Dans le wiki Kivy, pages non indexées par les moteurs de recherches
Ressources
- Buildozer sur GitHub avce les isues, kivy, p4a
Kivy Virtual Machine (for Android/buildozer) avec python 2.7.13
La bonne solution en janvier 2019 !
- Kivy dans Virtualbox En bas de page, au paragraphe Virtual Machine (for Android/buildozer) télécharger le fichier kivy-buildozer-vm-2.0.zip, mais pas avec votre navigateur:
wget -c kivy-buildozer-vm-2.0.zip
Installation
Il faut apprendre VirtualBox, c'est particulier mais pas compliqué, ce n'est pas skizophrène, juste du dédoublement de personnalité !
VirtualBox
sudo apt-get install virtualbox virtualbox-guest-additions-iso
Je code sur ma cession hôte et je compile sur une session invitée: dossier projets partagé et bi-directif.
A priori, buildozer ne supporte pas les liens symboliques, pour ne pas rajouter de problèmes, copier votre dossier de projet dans le home de la VM.
Compilation
Un hello world
- main.py
#! /usr/bin/env python # -*- coding: utf-8 -*- import kivy print(kivy.__version__) kivy.require('1.10.1') from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text='Hello world') if __name__ == '__main__': MyApp().run()
- builddozer.spec
[app] title = My Application package.name = myapp package.domain = org.test source.dir = . build_dir = /build/myapp source.include_exts = py,png,jpg,kv,atlas version = 0.02 requirements = python2,kivy orientation = portrait fullscreen = 0 android.arch = armeabi-v7a [buildozer] log_level = 2 warn_on_root = 1
Ne pas télécharger de SDK et NDK, buildozer le fait. cela va créer un gros dossier .buildozer (1 Go) dans chacun de vos projets mais au moins ça marche et c'est vraiment du boulot parfait pour un fainéant: c'est ordi qui bosse pas vous !
En janvier 2019:
- ANDROIDAPI=19
- ANDROIDSDK=/home/kivy/.buildozer/android/platform/android-sdk-20
- ANDROIDNDKVER=r9c
- SDK located at /home/kivy/.buildozer/android/platform/android-sdk-20
- NDK located at /home/kivy/.buildozer/android/platform/android-ndk-r9c
- NDK version is r9c
- API level set to 19
# Search for Cython (cython) # → found at /usr/local/bin/cython
Writing /home/kivy/hello-world/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/site-packages/Kivy-1.10.1-py2.7.egg-info
Kivy Virtual Machine (for Android/buildozer) avec python 3.5
Python-for-Android : sans intérêt !
Cela fait partie du projet Kivy, la doc sur les SDK et NDK est nulle à souhait, et il y a autant de problèmes qu'avec buildozer et par exemple pas de support de openssl en python3 donc pas de requête https !
Sur Github dans le projet Kivy
Python-for-Android est un emballeur pour les applications Python sur Android. Vous pouvez créer votre propre distribution Python, y compris les modules et dépendances de votre choix, et la regrouper dans un APK avec votre propre code.
Les fonctionnalités incluent:
- Prise en charge de la construction avec Python 2 et Python 3.
- Différents moteurs d'applications, notamment Kivy, PySDL2 et un serveur Web View avec Python.
- Prise en charge automatique de la plupart des modules Python purs et prise en charge intégrée de nombreux autres, notamment les dépendances courantes telles que numpy et sqlalchemy.
- Cibles d'architecture multiples, pour les APK optimisés sur n'importe quel appareil.
Pour la documentation et le support, voir:
- Site Web: http://python-for-android.readthedocs.io
En 2015, ces outils ont été réécrits pour fournir une nouvelle interface, plus facile à utiliser et à étendre.