我使用64位Kivy / Buildozer VM构建Kivy应用并将其部署到Android Lollipop(armeabi-v7a 32位拱门)。
Buildozer构建成功但是在执行应用程序并导入pymssql
包(用于连接到远程MS SQL服务器)时,我收到以下错误:
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
据我了解,pymssql-2.1.3-cp27-cp27mu-manylinux1_x86_64.whl
预先构建的pymssql
轮应支持64位和32位拱。
如何获得支持32位的pymssql.so
?
答案 0 :(得分:0)
有两件事要检查:
确保已打包32位版本。您说轮子应该支持64位和32位,但是您引用了x86_64
轮子版本。在他们的pypi页上,他们有一个i686
版本,即您想要的32位版本。
即使是32或64,也必须是ARM> = v7a编译的。除非您的轮子是专门为android编译的,否则很有可能它不起作用,因为libc在Linux和Android上并不相同。因此,您将遇到二进制不兼容的情况。
这就是为什么要使用这种库,您需要在python-for-android中编写一个配方来编译Android库的原因。