Empaquetage d'un jeu Pygame en APK Android et EXE sous WSL2 avec Ubuntu 22.04

Configuration de l'environnement WSL2 et Ubuntu 22.04

Pour initialiser un environnement d'empaquetage, configurez d'abord WSL2 sous Windows. Lancez PowerShell en mode administrateur et exécutez les commandes suivantes pour mettre à jour le noyau WSL, définir la version 2 par défaut et installer Ubuntu 22.04. Après l'installation, créez un utilisateur et vérifiez la version avec wsl -l -v.

wsl --update
wsl --set-default-version 2
wsl --install -d Ubuntu-22.04

Installation des dépendances système

Dans la distribution Ubuntu, mettez à jour les paquets et installez les outils nécessaires, y compris Java Development Kit version 17 pour la compilasion Android. Assurez-vous que JDK 17 est bien installé en vérifiant avec java -version.

sudo apt update && sudo apt upgrade -y
sudo apt install -y git zip unzip openjdk-17-jdk autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev

Configuration de Python 3.11 dans un environnement virtuel

Ubuntu 22.04 inclut Python 3.10 par défaut. Ajoutez le dépôt deadsnakes pour installer Python 3.11, puis créez un environnement virtuel dédié pour l'empaquetage. Dans le répertoire de votre projet, initialisez l'environnement et activez-le. Vérifiez que Python 3.11 est bien actif avec python --version.

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11 python3.11-venv python3.11-dev
cd ~/monjeu/
python3.11 -m venv env
source env/bin/activate

Les commandes utiles pour gérer l'environnement incluent l'activation (source env/bin/activate), la désactivation (deactivate), et les opérations Buildozer comme buildozer init, buildozer android clean, et buildozer -v android debug.

Vérification de la connectivité réseau

Avant de procéder, testez l'accès aux sites dépendants comme Google et GitHub pour éviter des interruptions pendant l'empaquetage. Utilisez les commandes suivantes pour valider la connectivité.

curl -v https://www.google.com
git ls-remote https://github.com/libsdl-org/jpeg.git

Installation de Cython et Kivy

Dans l'environnement virtuel, mettez à jour pip, puis installez Cython version inférieure à 3.0 pour la compatibilité avec Pygame, suivi de Kivy version 2.3.1.

pip install --upgrade pip
pip install "cython<3.0.0"
pip install kivy==2.3.1

Installation de Buildozer et configuration du fichier spec

Installez Buildozer via pip, puis initialisez-le pour générer un fichier de configuraton buildozer.spec. Modifiez ce fichier en fonction de votre projet. Voici un exemple adapté pour un jeu Pygame, avec des paramètres critiques pour la compatibilité Android.

pip install buildozer
buildozer init

Extrait du fichier buildozer.spec :

[app]
title = JeuSpatial
package.name = monjeu
package.domain = org.exemple
source.dir = .
source.include_exts = py,png,jpg,wav,ico,ttf,txt
source.include_patterns = assets/images/*,assets/sounds/*,fonts/*
version = 1.0.0
requirements = python3==3.10.12,kivy==2.3.1,pyjnius==1.7.0,hostpython3==3.10.12,pygame,requests==2.32.5
presplash.filename = %(source.dir)s/assets/images/ecran_chargement.png
icon.filename = %(source.dir)s/assets/images/icone.png
orientation = portrait
fullscreen = 1
android.permissions = INTERNET
android.archs = arm64-v8a, armeabi-v7a
android.allow_backup = True
[buildozer]
log_level = 2
warn_on_root = 1

La ligne des requirements est essentielle pour la compatibilité Pygame ; évitez de la modifier sans tester.

Lancement de l'empaquetage Android

Assurez-vous que le script principal Python est nommé main.py et que les chemins dans buildozer.spec sont corrects. Lancez l'empaquetage avec les logs détaillés. Le processus peut prendre plus d'une heure pour le premier essai, surtout avec un téléchargement de dépendances. Un APK sera généré dans le dossier bin.

buildozer -v android debug

Résolution des problèmes courants

En cas d'erreurs, nettoyez d'abord la compilation avec buildozer android clean ou supprimez manuellement le répertoire ~/.buildozer/android/platform/. Les erreurs réseau fréquentes peuvent nécessiter un proxy ou un token GitHub pour éviter les limitations. Pour les problèmes de chemins dans le code, utilisez des chemins absolus ou des chemins relatifs au répertoire de l'application, car le répertoire de travail sur Android est la racine.

buildozer android clean
rm -rf ~/.buildozer/android/platform/

Création d'un exécutable EXE pour Windows

Pour empaqueter le jeu en EXE sous Windows, installez PyInstaller dans un environnement Python standard. Utilisez les options pour créer un fichier unique, sans console, et inclure les ressources. Adaptez les chemins d'ajout de données en conséquence.

pip install pyinstaller
pyinstaller --onefile --windowed --name=MonJeuSpatial --add-data "assets/images;assets/images" --add-data "assets/sounds;assets/sounds" --add-data "fonts;fonts" --add-data "data;data" --icon=assets/images/icone.ico main.py

Les paramètres --onefile et --windowed permettent de créer un exécutable autonome sans fenêtre de commande, similaire à une application native.

Étiquettes: WSL2 Ubuntu 22.04 Pygame Buildozer PyInstaller

Publié le 22 juin à 01h36