如何修复Buildozer构建失败并出现cmake错误

时间:2019-04-02 07:13:33

标签: cmake buildozer

我正在尝试使用buildozer构建Kivy应用程序。我已经升级到buildozer 0.39。构建失败,并显示以下信息:

File "~/.local/lib/python2.7/site-packages/sh.py", line 672, in handle_command_exit_code
raise exc
sh.ErrorReturnCode_1: 


RAN: /bin/rm -f CMakeCache.txt CMakeFiles/

STDOUT:
/bin/rm: cannot remove 'CMakeFiles/': Is a directory

我已经安装了cmake版本3.5.1

编辑2019年4月18日

cython版本0.21已安装。

我已按照说明here卸载了cmake并重新安装了3.14.2版。

我已删除.buildozer目录。现在运行buildozer I时,出现问题:

RAN: ./autogen.sh

STDOUT:
./autogen.sh: 2: exec: autoreconf: not found

之后

sudo apt install autoconf libtool

我现在收到错误:

STDOUT:
File "setup.py", line 159
print "--- using Tcl/Tk libraries at", TCL_ROOT
                                    ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("--- using Tcl/Tk libraries at", TCL_ROOT)?

编辑2019年4月19日

如果我卸载buildozer,它似乎是python 2.7

/usr/local/lib/python2.7/dist-packages/buildozer-0.39.dist-info/*

我已经从python版本为2.7.12的目录中安装了buildozer

如何将buildozer定位于python 2.7?

如何找到目标?

我如何使用这些信息?

我曾尝试在带有Python 3的virtualenv中使用buildozer,但出现相同的错误。

我迷路了。我看过Docker,但不知道如何安装或使用它。它是否假定使用的是buildozer的工作版本?它是什么?能解决我的问题吗?

编辑2019年4月21日

我跑步时

docker run --volume "$HOME/.buildozer":/home/user/.buildozer --volume "$PWD":/home/user/hostcwd kivy/buildozer --version

“ Buildozer 0.40.dev0”。

但是,当我尝试运行

docker run --volume "$HOME/.buildozer":/home/user/.buildozer --volume "$PWD":/home/user/hostcwd kivy/buildozer android debug

我得到了错误:

将/home/user/.buildozer/android/platform/android-ndk-r17c重命名为/home/jeff/.buildozer/crystax-ndk/crystax-ndk-10.3.2失败,因为/home/jeff/.buildozer /crystax-ndk/crystax-ndk-10.3.2不是目录

编辑2019年4月22日

我现在已注释掉

#android.ndk_path 

来自buildozer.spec

我现在收到错误:

Cwd /home/user/hostcwd/.buildozer/android/platform/python-for-android

命令失败:/ usr / bin / python3 -m pythonforandroid.toolchain create --dist_name = bfgApp --bootstrap = sdl2 --requirements = python2,kivy,pil,docutils,pathlib,html2rest --arch armeabi-v7a- -copy-libs --color = always --storage-dir =“ / home / user / hostcwd / .buildozer / android / platform / build” --ndk-api = 21

2 个答案:

答案 0 :(得分:0)

问题与解答

  

如何将buildozer定位于python 2.7?

  • 安装:使用#captain-marvel{ display:grid; grid-template-columns: 1fr 1fr; } #captain-marvel-title{ grid-column:1; background: red; } #captain-marvel-trailer{ grid-column:2; background: blue; } sudo pip2 install buildozer,其中sudo pip install buildozer指向Python 2版本。
  • 编译:buildozer.spec文件必须具有pip
  

如何找到目标?

  • 安装:使用requirements = python2,kivypip2 freeze来确定安装是安装在Python 2还是Python 3中。滚动到顶部,寻找pip3 freeze
  • 编译:来自buildozer.spec中的buildozer==0.39

Docker Buildozer映像

  

它是否假定使用buildozer的工作版本?它是什么?会吗   解决我的问题?

Docker Buildozer映像正在使用requirements=...。我相信它将解决您的问题。

Docker concepts

  

Docker是供开发人员和系统管理员开发,部署,   并使用容器运行应用程序。使用Linux容器来   部署应用程序称为容器化。

安装Docker和Buildozer映像

  1. Get Docker CE for Ubuntu
  2. Manage Docker as a non-root user
  3. 从公共Docker集线器Buildozer 0.40.dev0中获取名为kivy/buildozer的映像
  4. 验证安装,docker pull kivy/buildozer

使用Docker Buildozer映像

  1. 将目录更改为您的项目文件夹
  2. 创建 buildozer.spec docker run --volume "$HOME/.buildozer":/home/user/.buildozer --volume "$PWD":/home/user/hostcwd kivy/buildozer --version
  3. 以调试模式docker run --volume "$HOME/.buildozer":/home/user/.buildozer --volume "$PWD":/home/user/hostcwd kivy/buildozer init
  4. 构建应用程序
  5. 将应用程序部署到设备docker run --volume "$HOME/.buildozer":/home/user/.buildozer --volume "$PWD":/home/user/hostcwd kivy/buildozer android debug

在本地计算机上安装Buildozer

您必须至少安装Cython,少量构建库和Java SDK。 Android SDK的某些二进制文件仍为32位,因此您只需要很少的32位库即可:

adb install bin/yourapp.apk

答案 1 :(得分:0)

我删除了此软件包的CMakeFiles目录,然后重新运行buildozer构建并通过了(在目录.buildozer / android / platform / build / build / other_builds / jpeg / armeabi-v7a__ndk_target_21 / jpeg中)