Diario de un experimento
Pues aquí me encuentro. Resulta que en mi trabajo ha surgido la necesidad de tratar de hacer algún pequeño juego, sencillito, al menos de momento, para que corra en unas tablets con Android que tenemos desde hace ya algún tiempo.
Tras darle vueltas al tema, me surgían tres vías para conseguir esto:
- Según información que he ido recopilando, la opción ideal habría sido Kotlin, pero a decir verdad, nunca he visto ni por encima este lenguaje.
- Meterme con Unity, de hecho lo tengo instalado y me llama bastante la atención, teniendo en cuenta que además trabaja con C# que si es un lenguaje, que al menos he visto por encima y con el cual he hecho algo, aunque sean pequeñas cosas.
- Y se me abría una tercera vía, que era buscar la forma de hacerlo con Python, porque es un lenguaje que me he empeñado en aprender.
Decisión final
Tras darle vueltas al tema, descarto empezar a ver un lenguaje nuevo como Kotlin. Me llamaba mucho la atención aprender las bases de Unity, cosa que no descarto, pero puesto que estoy haciendo algún cursillo de python, me parecía mejor opción intentar hacer el desarrollo con python utilizando Kivy.
Como no tengo ni idea y nunca he hecho ningún desarrollo de este tipo, tras unos días enredando con kivy, lo primero que me he planteado es si realmente es viable desarrollar el proyecto con esta herramienta. Así que tras hacer una especie de “Hello World”, me parecía indispensable tratar de compilar y ejecutar el código en las tablets de que disponemos, por un lado, por conseguir compilar, y por otro, por ver si corren en Android 5, que ya ha llovido.
Y hete aquí, que aparece el primer problema, y es que para generar el apk para Android dependo de Buildozer, que no corre en Windows, y tras descartar configurar una máquina virtual, dada mi poca experiencia con Linux, aquí me encuentro intentando solucionar mi problema con WSL, a ver si consigo hacer el desarrollo desde Windows.
Día n + 1: Instalación de wsl
Primer paso conseguido. Ya tengo instalado wsl y por tanto una máquina con Ubuntu en Windows 10. Los pasos y problemas con la instalación, los he dejado colgados aquí: Instalación de wsl ubuntu en Windows 10
Ahora toca tratar de configurar Visual Studio Code para trabajar sobre la máquina de utuntu, para lo cual seguiré el siguiente artículo de Microsoft Learn: Introducción al uso de VS Code con WSL
Una vez configurado VSCode, es posible conectarse como si de una unidad de red o entorno remoto se tratara, y desde la terminal de VSCode, es posible configurar todas las opciones para trabajar con Kivy.
Una vez instalado y configurado todo, creo una carpeta para generar un paquete HelloWorld, y por el momento, tengo que reconocer que desisto.
He conseguido lanzar buildozer
“correctamente”, aunque todo hay que decirlo, no ha sido fácil, puesto que faltaban varios componentes que he tenido que ir instalando, pero cuando finalmente parecía que se ponía manos a la obra, me he encontrado con un error de macros obsoletas.
Tengo que reconocer, que se empieza a minar moral. Supongo que es lo que tiene venir de entornos donde parece que está todo “engrasado” y rueda por sí solo. Así que aquí lo dejo, al menos de momento, y me plantearé si lo retomo, porque se me antoja demasiado complicado para lo que necesito en estos momentos.
Dejo copia del error, por si me diera por retomar.
configure.ac:41: error: possibly undefined macro: AC_PROG_LIBTOOL If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. configure:8529: error: possibly undefined macro: AC_PROG_LD autoreconf: error: /usr/bin/autoconf failed with exit status: 1 STDERR: # Command failed: /usr/bin/python3 -m pythonforandroid.toolchain create --dist_name=myapp --bootstrap=sdl2 --requirements=python3,kivy --arch arm64-v8a --arch armeabi-v7a --copy-libs --color=always --storage-dir="/home/juanjo/kivytest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a" --ndk-api=21 --ignore-setup-py --debug # ENVIRONMENT: # SHELL = '/bin/bash' # COLORTERM = 'truecolor' # WSL2_GUI_APPS_ENABLED = '1' # TERM_PROGRAM_VERSION = '1.73.1' # WSL_DISTRO_NAME = 'Ubuntu' # NAME = 'PC-JUANJO' # PWD = '/home/juanjo/kivytest' # LOGNAME = 'juanjo' # VSCODE_GIT_ASKPASS_NODE = '/home/juanjo/.vscode-server/bin/6261075646f055b99068d3688932416f2346dd3b/node' # HOME = '/home/juanjo' # LANG = 'C.UTF-8' # WSL_INTEROP = '/run/WSL/2618_interop' # LS_COLORS = 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:' # WAYLAND_DISPLAY = 'wayland-0' # GIT_ASKPASS = '/home/juanjo/.vscode-server/bin/6261075646f055b99068d3688932416f2346dd3b/extensions/git/dist/askpass.sh' # VSCODE_GIT_ASKPASS_EXTRA_ARGS = '' # LESSCLOSE = '/usr/bin/lesspipe %s %s' # TERM = 'xterm-256color' # LESSOPEN = '| /usr/bin/lesspipe %s' # USER = 'juanjo' # VSCODE_GIT_IPC_HANDLE = '/mnt/wslg/runtime-dir/vscode-git-c613173f4f.sock' # DISPLAY = ':0' # SHLVL = '1' # XDG_RUNTIME_DIR = '/mnt/wslg/runtime-dir' # WSLENV = 'VSCODE_WSL_EXT_LOCATION/up' # VSCODE_GIT_ASKPASS_MAIN = '/home/juanjo/.vscode-server/bin/6261075646f055b99068d3688932416f2346dd3b/extensions/git/dist/askpass-main.js' # XDG_DATA_DIRS = '/usr/local/share:/usr/share:/var/lib/snapd/desktop' # PATH = ('/home/juanjo/.buildozer/android/platform/apache-ant-1.9.4/bin:/home/juanjo/.vscode-server/bin/6261075646f055b99068d3688932416f2346dd3b/bin/remote-cli:/home/juanjo/.local/bin:/home/juanjo/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program ' 'Files (x86)/ActiveState Komodo Edit 12/:/mnt/c/Program Files (x86)/Common ' 'Files/Intel/Shared Libraries/redist/intel64/compiler:/mnt/c/Program ' 'Files/Common Files/Oracle/Java/javapath:/mnt/c/Program Files (x86)/Common ' 'Files/Oracle/Java/javapath:/mnt/c/Program Files/Microsoft ' 'MPI/Bin/:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program ' 'Files/dotnet/:/mnt/c/Program Files/Microsoft SQL ' 'Server/130/Tools/Binn/:/mnt/c/Program ' 'Files/AutoFirma/AutoFirma:/mnt/c/Program ' 'Files/Zulu/zulu-13/bin/:/mnt/c/Program Files/Java/jdk-14.0.1:/mnt/c/Program ' 'Files/Java/jdk-14.0.1/bin:/mnt/c/ProgramData/chocolatey/bin:/mnt/c/Program ' 'Files (x86)/Microsoft SQL Server/80/Tools/BINN:/mnt/c/Program Files ' '(x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA ' 'Corporation/NVIDIA NvDLISR:/mnt/c/Program Files/Calibre2/:/mnt/c/Program ' 'Files/nodejs/:/mnt/c/Program ' 'Files/Git/cmd:/mnt/c/python/Python310/Scripts/:/mnt/c/python/Python310/:/mnt/c/Users/JUANJO/AppData/Local/Microsoft/WindowsApps:/mnt/c/Program ' 'Files/Java/jdk-14.0.1/bin:/mnt/c/Users/jjcar/AppData/Local/atom/bin:/mnt/c/Program ' 'Files/Salesforce CLI/bin:/mnt/c/Program ' 'Files/Java/jdk-11.0.8/bin:/mnt/c/tools/dart-sdk/bin:/mnt/c/Users/JUANJO/AppData/Roaming/Pub/Cache/bin:/mnt/c/Users/JUANJO/.dotnet/tools:/mnt/c/flutter/bin:/mnt/c/Users/JUANJO/AppData/Local/atom/bin:/mnt/c/ProgramData/JUANJO/atom/bin:/mnt/c/Users/JUANJO/AppData/Roaming/npm:/mnt/c/Users/JUANJO/AppData/Local/Programs/Microsoft ' 'VS Code/bin:/mnt/c/Program Files (x86)/Brackets/:/mnt/c/Program ' 'Files/sfdx/bin:/snap/bin') # HOSTTYPE = 'x86_64' # PULSE_SERVER = '/mnt/wslg/PulseServer' # TERM_PROGRAM = 'vscode' # VSCODE_IPC_HOOK_CLI = '/mnt/wslg/runtime-dir/vscode-ipc-45ed9d71-2a6b-42a8-810a-eda62a9f9d22.sock' # _ = '/home/juanjo/.local/bin/buildozer' # OLDPWD = '/home/juanjo' # PACKAGES_PATH = '/home/juanjo/.buildozer/android/packages' # ANDROIDSDK = '/home/juanjo/.buildozer/android/platform/android-sdk' # ANDROIDNDK = '/home/juanjo/.buildozer/android/platform/android-ndk-r23b' # ANDROIDAPI = '27' # ANDROIDMINAPI = '21' # # Buildozer failed to execute the last command # The error might be hidden in the log above this error # Please read the full log, and search for it before # raising an issue with buildozer itself. # In case of a bug report, please add a full log with log_level = 2