Я использую и внедряю несколько разных пакетов в мое приложение 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 драйвер, но я не смог, так что вот я, открыт для ваших предложений и советов, скажите, если вам нужна дополнительная информация.