【问题标题】:building hostpython3 for armeabi-v7a -- RuntimeError: release unlocked lock为 armeabi-v7a 构建 hostpython3 -- RuntimeError: release unlocked lock
【发布时间】:2019-04-16 12:20:28
【问题描述】:

我正在尝试在我的其他问题上取得一些进展 --> Kivy Launcher - AttributeError: ‘MyInputs’ object has no attribute ‘get_focus_next’

我现在的意图是构建 Kivy Launcher(欢迎提出关于如何制作 android python 应用程序原型的替代建议,但无论如何我仍然想完成这个)。但是,我遇到了新的障碍。 Python-for-android 在构建过程中一直失败,具体如下所示。

构建命令:

p4a apk --requirements=python2,kivy --permission WRITE_EXTERNAL_STORAGE --name="R Kivy Launcher" --package=com.kivy.rkivylauncher --version=0.0.1 --android_api 28 --bootstrap=pygame --launcher --minsdk 13

错误内容(下面是我认为可能很重要的系统和配置内容):

    [INFO]:    Building hostpython3 for armeabi-v7a
[INFO]:    -> directory context /home/Me/.local/share/python-for-android/build/other_builds/hostpython3/desktop/hostpython3
[INFO]:    -> directory context /home/Me/.local/share/python-for-android/build/other_builds/hostpython3/desktop/hostpython3/native-build
[INFO]:    -> running configure
           working: checking for dup3... yes                                                                                                                                                                             raceback (most recent call last):
  File "/usr/lib/python3.7/queue.py", line 179, in get
    self.not_empty.wait(remaining)
  File "/usr/lib/python3.7/threading.py", line 288, in wait
    raise RuntimeError("cannot wait on un-acquired lock")
RuntimeError: cannot wait on un-acquired lock

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/p4a", line 10, in <module>
    sys.exit(main())
  File "/usr/lib/python3.7/site-packages/pythonforandroid/toolchain.py", line 1075, in main
    ToolchainCL()
  File "/usr/lib/python3.7/site-packages/pythonforandroid/toolchain.py", line 577, in __init__
    getattr(self, args.subparser_name.replace('-', '_'))(args)
  File "/usr/lib/python3.7/site-packages/pythonforandroid/toolchain.py", line 151, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/usr/lib/python3.7/site-packages/pythonforandroid/toolchain.py", line 200, in build_dist_from_args
    build_recipes(build_order, python_modules, ctx)
  File "/usr/lib/python3.7/site-packages/pythonforandroid/build.py", line 562, in build_recipes
    recipe.build_arch(arch)
  File "/usr/lib/python3.7/site-packages/pythonforandroid/python.py", line 417, in build_arch
    sh.Command(join(recipe_build_dir, 'configure')))
  File "/usr/lib/python3.7/site-packages/pythonforandroid/logger.py", line 178, in shprint
    for line in output:
  File "/usr/lib/python3.7/site-packages/sh.py", line 857, in next
    chunk = self.process._pipe_queue.get(True, 0.001)
  File "/usr/lib/python3.7/queue.py", line 182, in get
    return item
  File "/usr/lib/python3.7/threading.py", line 244, in __exit__
    return self._lock.__exit__(*args)
RuntimeError: release unlocked lock

系统: Cygwin 3.0.3

配置: - Python 3.7 -python-for-android 0.7.1 - 建造者 0.39 - sdk-tools-linux-4333796.zip - android-ndk-r19b-linux-x86_64.zip (是 有 AMD 特定的变体吗?到目前为止,谷歌拒绝...)

很高兴分享更多信息,只是不确定还有什么重要/可能相关。我有一些完全疯狂的怀疑(Cygwin 和线程/锁不兼容?),但这就是我所得到的。

帮助?

【问题讨论】:

  • 在上面回答我自己的问题(有点):虽然我现在知道有很多设置要求可以允许直接使用 p4a,但最后我总体上想出了以下内容:

标签: android python kivy


【解决方案1】:

上面回答我自己的问题(有点):虽然我现在知道有很多设置要求可以允许直接使用 p4a,但最后我总体上意识到以下几点:

  1. 我使用“Buildozer Android”的专用 Linux 机器(最终)对我来说是最快/最容易管理的选项。它只处理正确下载和对齐使构建正确发生所需的组件。新的 python3 版本的 Kivy Launcher 安装,并从可用的应用程序列表开始,就像 App Store 中的应用程序一样,但可惜它仍然崩溃(我仍在试图找出原因,但我更接近.. .)

在实现这一目标的路上,我发现:

  1. Cygwin 在创建 apk 时存在一些根深蒂固的问题 - 我仍然不确定我遇到的问题是否直接归因于 Cygwin 环境、我的 Cygwin 设置、我的测试应用程序以及我在其中的贬值的 ListView 内容,我的计算机病毒防护或上述强大且难以管理的组合。

  2. 我也挣扎了一段时间,试图让 MSYS2 和 Mingw-w64 64 位在本地和为 Android 构建 kivy 东西,但是整个 Windows 与 Unix 路径名混合、环境设置和其他一百件事证明太多了分散了我真正目标的注意力:构建一个可以在许多平台上本地运行的应用程序 --> Mingw 可能最终仍会在未来发挥作用,但它现在还在书架上。

  3. 我也试过 Termux。和日食。并研究了如何让新的 Android Studio 与 Python 一起工作。一切皆有可能(或没有),我真的看到了 Eclipse 和 Android Studio 用于创建可视化应用前端的想法的价值,所以随着项目的成熟,这些可能会在未来找到用途。

总而言之,我要感谢整个互联网上的数百人 - 我一次打开了近 80 个标签(加上保存了多标签书签!)到这一点:所有信息都可用Buildozer 以及为什么它在 Linux 机器上运行良好,我结束了我可能应该开始的地方。我的原型 kivy 应用程序可以在 Android 手机上运行,​​而且(我希望很快)Kivy Launcher 也可以。似乎重新启动的新 Kivy Launcher 失败的方式让我相信“ListView”折旧是它崩溃的原因(它构建,开始加载包含的示例应用程序,但随后崩溃并且日志没有我那么有用) d希望)。如果我能确认并重构它来解决这个问题,我将有一些真实的东西来回馈自己。

如果您更关心新的 Kivy 启动器而不是构建 apk 的工具,请继续关注我上面原始帖子中的第一个链接 - 如果我确实让 Kivy 启动器再次工作,我希望再添加一个条目拥有我需要的所有新的 kivy 和 python3 功能。现在我只需要弄清楚 RecycleView...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2012-08-26
    • 1970-01-01
    • 2019-11-25
    • 2016-09-09
    相关资源
    最近更新 更多