【问题标题】:Errors when using buildozer to compile kivy/python 3.7 app into android apk on OSX - Silex & pypandoc在 OSX 上使用 buildozer 将 kivy/python 3.7 应用程序编译为 android apk 时出错 - Silex & pypandoc
【发布时间】:2019-09-05 20:27:17
【问题描述】:

我在 OSX 上使用 kivy 和 python 3.7 制作了一个应用程序。它在 PyCharm 环境中运行良好。但是,当我尝试使用 buildozer 编译应用程序时,buildozer 不断抛出错误。

我已经使用 pip3.7 命令安装了最新的 buildozer。我什至更新了 python-for-android 来测试它。我目前也在使用 Android NDK r19c,尽管我已经尝试使用 r17c 和 r20。两者都没有工作。

最初,我遇到了与使用 pip 而不是 pip3.7 相关的错误,因为 buildozer 会尝试在某些领域使用 python 2.7。这是通过卸载 buildozer 等并使用 pip3.7 重新安装来解决的。这些错误已经消失,但目前,我似乎遇到了与“Silex”和 pypandoc 相关的新错误,这很奇怪,因为我不相信 buildozer 甚至使用这些错误。

错误代码的字符太多,我无法直接在此处发布,因此请在我的网站上查看错误代码作为页面。链接如下:

https://apilotslens.com/buildozer-silex-error

然后我安装最新版本的 Silex,它可以阻止此错误的出现。但是,出现了一个与 pypandoc 相关的新错误:

https://apilotslens.com/buildozer-pypandoc-error

即使我安装了 pypandoc,错误仍然出现。

此时我很困惑。据说我已经按书完成了所有事情,因此 buildozer 将编译我的 APK。我真的希望有人能帮助我。据我所知,Buildozer 甚至不使用 Silex 或 pypandoc,那么它们为什么会出现呢?他们以前甚至没有被提及。我真的很想尽快解决这个问题。

提前致谢!

【问题讨论】:

  • 这很奇怪,能不能把文件Users/JGolding/Desktop/FlightPlanningApp/PythonCode/Drafts/Draft1/.buildozer/android/platform/python-for-android/pythonforandroid/的内容粘贴一下工具链.py ?
  • 当然。我现在在工作电脑上,但我一回到家,我会把它贴在这里,我会告诉你的。感谢您的宝贵时间!
  • 其实错误指出的第80行应该import shlex。如果你没有手动接触过这个文件,我猜它可能已经以某种方式损坏了,但我真的不知道这是怎么发生的。您是否尝试过清理构建并让下载再次运行?您可以通过删除 /Users/JGolding/Desktop/FlightPlanningApp/PythonCode/Drafts/Draft1/.buildozer 来做到这一点,即您的应用程序目录中的 .buildozer 目录。
  • 我很确定我根本没有手动接触过该文件。我唯一尝试过的是干净的:buildozer android clean,但这并没有奏效。我将通过删除文件并让下载再次运行来尝试。你永远都不会知道。这当然是一个不寻常的错误。我猜我自己根本不应该触摸文件的import shlex 区域?
  • 等等,你说的是shlex还是silex?

标签: android macos kivy apk buildozer


【解决方案1】:

我很确定我根本没有手动接触过该文件。我唯一尝试过的是 clean: buildozer android clean 但这并没有让它工作。

这只会清理构建,而不是完整的缓存。删除/Users/JGolding/Desktop/FlightPlanningApp/PythonCode/Drafts/Draft1/.buildozer,然后重试。

等等,你是说 shlex 还是 silex?

应该读作import shlex。你的文件是import silex

这是您提到的 toolchain.py 文件的链接:

这看起来不错,除了 shlex->silex 变化。

我想我会尝试卸载并重新安装 buildozer(pip3.7 卸载 buildozer),但有趣的是,它显示无法卸载“buildozer”。找不到要卸载的文件。

这与您针对错误目录或其他内容的 pip 调用无关。

然后我安装最新版本的 Silex,它会阻止此错误的出现。但是,出现了一个与 pypandoc 相关的新错误:

这也无关,只是silex模块不支持python 3。silex模块一直是个红鲱鱼,只是你的toolchain.py副本中的字母开关错了。

请注意,如果您阅读该错误,它并不是在抱怨 pypandoc,而是在抱怨 SyntaxError: Missing parentheses in call to 'print'.

【讨论】:

  • 非常感谢您的详细回复。在toolchain.py 文件中将silex 更改为shlex 解决了这个奇怪的silex 问题。我现在又回到了一个旧错误:[ERROR]: Build failed: Couldn't find executable for CC. This indicates a problem locating the arm-linux-androideabi-gcc executable in the Android NDK, not that you don't have a normal compiler installed. Exiting.我该如何解决这个问题?
  • 我看过一个论坛帖子,他们说“你不能用最新的ndk构建android版本,比如ndk 19c,因为最新的ndk编译器已经从gcc变成了clang。我构建成功了ndk r14b 的 android 版本”我尝试使用旧版本,但它不起作用,因为最低 NDK 版本是 17。你以前听说过这个错误吗?
  • 在当前 p4a 版本中使用 NDK 17c,或在当前 p4a 主版本中使用 ndk 20。
  • 我尝试了所有这些,但我总是遇到同样古老的错误。例如,对于 NDK 17c/p4a 当前版本组合,这是输出:apilotslens.com/buildozer-errors-with-p4a-release-2019-8-9。对于 NDK 20/开发版本组合,这是输出: buildozer-errors-with-p4a-master 。
  • 后一个(NDK 20 / p4a master)确实显着减少了错误输出代码,但就像另一个一样,它出现了错误:[ERROR]: Build failed: Couldn't find executable for CC. This indicates a problem locating the arm-linux-androideabi-gcc executable in the Android NDK, not that you don't have a normal compiler installed. Exiting.两者,在早期运行,仍然发出警告:[WARNING]: Cython for python3 missing. If you are building for a python 3 target (which is the default) then THINGS WILL BREAK. 这是问题的一部分吗?我该如何解决?
猜你喜欢
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
相关资源
最近更新 更多