Пользовательский рецепт Kivy buildozer ImportError grpc

#python #kivy #buildozer

#python #kivy #buildozer

Вопрос:

Я получаю следующую ошибку при попытке упаковать мое приложение с помощью buildozer (виртуальная машина с Ubuntu):

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

По-видимому, это потому, что мне нужно написать собственный рецепт для grpcio, поэтому я это сделал:

 class GrpcioRecipe(CythonRecipe):
    version = 'master'
    url = 'https://github.com/grpc/grpc/archive/{version}.zip'
    name = 'grpcio'

    depends = ['six', 'futures', 'enum34']

recipe = GrpcioRecipe()
  

Я сохранил рецепт как grcpio_recipes.sh , поместил его в папку с именем recipes и изменил файл buildozer.spec на # (str) The directory in which python-for-android should look for your own build recipes (if any) p4a.local_recipes = .buildozer/python-for-android/recipes

Тем не менее, я все еще получаю ту же ошибку, что и раньше. Добавил ли я рецепт в нужную область — похоже, он не использует мой пользовательский рецепт.

Требования в buildozer.spec

Папки

Папки 2

Конец трассировки

Обратная трассировка

Ответ №1:

Вам нужно добавить этот код внутрь recipes/grpcio/__init__.py и не забудьте добавить его в требования, а также добавить его в качестве рецепта

Комментарии:

1. Я уже сделал это, код здесь: ~/buildozer/my_app/p4a-recipes/grpcio/__init__.py я вставил несколько операторов печати в приведенный выше код, чтобы проверить, выполняется ли он, но ничего не печатается. Возможно, я не говорю buildozer искать в нужном месте. Что я должен изменить в этом разделе buildozer.spec файла на основе указанного выше ПУТИ? В настоящее время для него установлено это: # (str) The directory in which python-for-android should look for your own build recipes (if any) p4a.local_recipes = .buildozer/python-for-android/recipes

2. Я только что заметил, что каталог в моем файле buildozer.spec был неправильным, поэтому я обновил его до следующего # (str) The directory in which python-for-android should look for your own build recipes (if any) p4a.local_recipes = .buildozer/p4a-recipes , но все равно получил ту же ошибку

3. @CallumPurcell Вы уверены, что добавили grpcio и в требования? Также может быть полезно показывать журналы.

4. Да, grpcio является частью требований. Я отредактировал приведенное выше, чтобы включить изображения обратной трассировки, структуры папок и раздела требований. Поскольку я запускаю его на виртуальной машине Ubuntu, я не смог скопировать и вставить код из трассировки, поэтому использовал скриншоты, но дайте мне знать, если это необходимо, и я найду способ!