我在 python 3 和 kivy 中编写了一个小程序。现在我想使用 buildozer 构建一个 .apk 并在我的 android 手机上测试该应用程序。一切正常,我能够在手机上安装该应用程序,但该应用程序在启动时崩溃了。
错误日志显示,apk 的 python 环境是 python 2.7 而不是 3。因此,我的问题是:是否可以在 android 上使用 python 3 环境构建带有 buildozer 的 apk?还是我必须在 python2 中重写应用程序?是否有可能强制buildozer使用python3?
编辑:我按照 inclement 建议的步骤操作并收到以下错误:
Traceback (most recent call last):
File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/micha/python/ZugGit/ZugAppFahrt/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 747, in <module>
main()
File "/home/micha/python/ZugGit/ZugAppFahrt/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 744, in main
ToolchainCL()
File "/home/micha/python/ZugGit/ZugAppFahrt/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 323, in __init__
getattr(self, args.command)(unknown)
File "/home/micha/python/ZugGit/ZugAppFahrt/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 105, in wrapper_func
build_dist_from_args(ctx, dist, dist_args)
File "/home/micha/python/ZugGit/ZugAppFahrt/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 142, in build_dist_from_args
build_recipes(build_order, python_modules, ctx)
File "pythonforandroid/build.py", line 560, in build_recipes
recipe.build_arch(arch)
File "pythonforandroid/recipe.py", line 910, in build_arch
self.build_cython_components(arch)
File "pythonforandroid/recipe.py", line 919, in build_cython_components
command = sh.Command('python{}'.format(self.ctx.python_recipe.version))
File "/usr/lib/python2.7/site-packages/sh.py", line 788, in __init__
raise CommandNotFound(path)
sh.CommandNotFound: python3.5
# Command failed: python -m pythonforandroid.toolchain create --dist_name=zugFart --bootstrap=sdl2 --requirements=kivy==1.9.1,python3crystax --arch armeabi-v7a --copy-libs
编辑2:这似乎是一个永无止境的故事。安装了 python3.5 后,我遇到了这个错误:
collect2: error: ld returned 1 exit status
error: command 'arm-linux-androideabi-gcc' failed with exit status 1
随着我过去从错误到错误的前进,将代码简单地更改为 python2.7 会更聪明,但现在我投入了这么多时间,我只想最终成功。:-)
那么有人知道如何解决这个问题吗?
最后编辑:我终于投降并更改了我的代码以使用 python 2.7。在此过程中,我监督了一个很好的建议:如果您使用期货,则必须将其添加到 buildozer 文件的要求中。否则,应用程序在启动时会崩溃并显示“空模块”错误消息。
现在我的应用程序可以在手机上运行,我终于高兴了 :-) 感谢我试图帮助我解决问题。