#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.