【发布时间】:2018-08-13 19:52:28
【问题描述】:
我正在使用 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 的预构建 pymssql-2.1.3-cp27-cp27mu-manylinux1_x86_64.whl 轮应支持 64 位和 32 位拱形。
如何获得支持 32 位的pymssql.so?
【问题讨论】:
-
x86_64 仅与 intel/amd 架构相关,正如您所提到的,您的目标是 armeabi-v7a,所以即使它支持 32 位 intel,这个轮子也没有任何用处,它与 32 位不同位臂(甚至比 x86 与 amd64 不同),它可以帮助以详细模式重建您的 p4a 发行版,并粘贴构建 pymssql 库的构建日志的相关部分,以了解发生了什么。我在github.com/kivy/python-for-android/tree/master/pythonforandroid/… 中没有看到 pymssql 配方,但由于 lib 需要编译,所以你当然需要一个。
-
如果可以的话,我当然建议您不要让您的应用直接连接到您的 sql 数据库,而是与服务器上的 rest api 对话,该 API 将连接到数据库,通常更容易以这种方式确保安全,因为您只公开应用程序需要的 api。
标签: python python-2.7 kivy buildozer