pyodb c .so 64-битный вместо 32-битный - PullRequest
0 голосов
/ 24 апреля 2020

Я использую и внедряю несколько разных пакетов в мое приложение kivy без каких-либо проблем, до этого мне не приходилось беспокоиться об архитектуре Android, для которой она будет создаваться, и связанной с ней, если мое приложение будет 32 или 64 бита.

Это изменилось, когда был реализован модуль для работы с сервером Microsoft SQL, я использовал pyodb c, поэтому я следовал этому руководству: Microsoft ODB C драйвер для SQL Серверная инструкция , получая в результате установку этого драйвера: 'ODB C Драйвер 17 для SQL Сервер'.

Позже я добавил FreeTDS драйвер, следуя документации и изменяющий odbcinst.ini с этими строками.

[FreeTDS] 
Description = v0.91 with protocol v7.2 
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so

И создал DSN в obd c .ini , чтобы вызвать его позже в коде:

[dbserverdsn]
Driver = FreeTDS
Server = <Server IP>
Port = 1433
TDS_Version = 7.3
Database = <DB name>

Вот как создается соединение:

self._db_connection = pyodbc.connect('DSN=dbserverdsn;'
                                     'UID=Arn_Rojas;'
                                     'PWD=password_here')

Все отлично работало на моей машине LinuxLite с обоими драйверами, но когда я пытался развернуть его в android эта ошибка появляется:

ImportError: dlopen failed: "/data/data/org.test.myapp/files/app/_python_bundle/site-packages/pyodbc.so" is 64-bit instead of 32-bit

Я попытался изменить это в файле buildozer.spe c:

android.arch = armeabi-v7a
# TO
android.arch = arm64-v8a

Но это не сработало.

Я также попытался найти способ установить 32 бит pyodb c драйвер, но я не смог, так что вот я, открыт для ваших предложений и советов, скажите, если вам нужна дополнительная информация.

...