buildozer docker container не может скомпилировать sdl2 (cpufeatures)

#python #docker #android-ndk #kivy

#python #docker #android-ndk #kivy

Вопрос:

Итак, это довольно длинная история, но я пытаюсь заставить OpenCV работать с Android. После некоторых исследований я обнаружил этот Dockerfile (https://github.com/tom333/mycamerai/blob/master/Dockerfile ), который предположительно обеспечивает обходной путь к проблеме с фактическим официальным файлом Dockerfile. после запуска с помощью следующей команды docker run -it -v "C:UsersgrassOneDriveDesktopOpenceevee":/buildozer -w /buildozer fe5e50d6a65f android debug deploy run

он начал выдавать ошибки из-за версий SDK. Подозревая, что у меня неправильный файл .spec, я изменил файл .spec из того же репозитория Github, что и этот файл docker, который я использовал. однако теперь он выдает ошибку при сборке sdl2, особенно в отношении функций процессора.

  python3 said it is already built, skipping
[INFO]:    Building sdl2 for armeabi-v7a
[INFO]:    -> directory context /buildozer/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/sdl2/jni
[INFO]:    -> running ndk-build V=1 NDK_DEBUG=1
           working: make: *** No rule to make target `/root/.buildozer/android/platform/android-ndk-r19c/sources/android/cpufeatures/cpu-features.c', needed by `/buildozer/.buildozer/android/platform/build-armeabi-v7a/...(and 96 more)  Exception in thread background thread for pid 434:
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.7/site-packages/sh.py", line 1633, in wrap
    fn(*rgs, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/sh.py", line 2557, in background_thread
    handle_exit_code(exit_code)
  File "/usr/local/lib/python3.7/site-packages/sh.py", line 2261, in fn
    return self.command.handle_command_exit_code(exit_code)
  File "/usr/local/lib/python3.7/site-packages/sh.py", line 861, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_2:

  RAN: /opt/android-ndk/ndk-build V=1 NDK_DEBUG=1
  

Следующий бит из стандартного вывода показался мне интересным:

   STDOUT:
Android NDK: WARNING:/buildozer/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/sdl2/jni/application/src/Android.mk:main: non-system libraries in linker flags: -lpython3.8m
Android NDK:     This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK:     or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK:     current module
/opt/android-ndk/build/core/build-binary.mk:672: Android NDK: Module main depends on undefined modules: python_shared
rm -f /buildozer/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/sdl2/libs/armeabi-v7a/*
rm -f /buildozer/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/sdl2/libs/armeabi-v7a/gdbserver
rm -f /buildozer/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/sdl2/libs/armeabi-v7a/gdb.setup
  

поскольку он содержал предупреждения о версии python. Однако запуск официального образа docker buildozer не вызывает такой же проблемы и работает нормально. Я добавляю тег NDK в этот вопрос, но так же, как это кажется актуальным. На самом деле я ничего не знаю о NDK.