Estoy usando la máquina virtual Kivy/Buildozer de 64 bits para compilar e implementar una aplicación Kivy en Android Lollipop (armeabi-v7a arch de 32 bits).
La compilación de Buildozer es exitosa, pero al ejecutar la aplicación e importar el paquete pymssql (usado para conectarse a un servidor MS SQL remoto), aparece el siguiente error:
I/python ( 5335): File "/build/phytogp/android/app/main.py", line 4, in <module> I/python ( 5335): File "/build/phytogp/android/app/views/apps/phyto_app.py", line 45, in <module> I/python ( 5335): File "/build/phytogp/android/app/services/twilio_service.py", line 2, in <module> I/python ( 5335): ImportError: dlopen failed: "/data/data/com.phyto.phytogp/files/app/lib/python2.7/site-packages/pymssql.so" is 64-bit instead of 32-bit Según tengo entendido, la rueda pymssql-2.1.3-cp27-cp27mu-manylinux1_x86_64.whl para pymssql debería ser compatible con el arco de 64 y 32 bits.
¿Cómo puedo obtener un pymssql.so que admita 32 bits?
Hay 2 cosas para comprobar:
asegúrese de tener la versión de 32 bits empaquetada. Dijiste que la rueda debería ser compatible con 64 y 32 bits, pero hiciste referencia a la versión de la rueda x86_64 . En su página de pypi, tienen una versión i686 , esa es la versión de 32 bits que quieres.
incluso si es 32 o 64, debe estar compilado con ARM >= v7a. A menos que sus ruedas hayan sido compiladas específicamente para Android, existe una gran posibilidad de que simplemente no funcione, porque la libc no es la misma en Linux y Android. Así que te encontrarás con la incompatibilidad binaria.
Es por eso que para ese tipo de bibliotecas, debe escribir una receta en python-for-android para compilar la biblioteca para Android.