编译Kivy项目并使用Android模拟器运行它

时间:2016-09-10 18:38:22

标签: android android-emulator kivy buildozer

我正在考虑用Python + Kivy编写一个简单的应用程序,主要是供我自己使用 - 没什么特别的。对于开发,我希望能够

  • 将应用程序编译到包中
  • 在Android模拟器上运行

可悲的是,目前我无法完全关闭循环 - 谷歌搜索并没有帮助。

我相信我下载了所有相关工具:Kivy,buildozer,Android SDK。我键入了Kivy'hello world'应用程序,它在没有Android模拟的情况下运行良好 - 不幸的是,当它在模拟器(使用建议的体系结构x86)下运行时,我收到错误INSTALL_FAILED_NO_MATCHING_ABIS。如果我使用ARM架构制作一个仿真器设备(运行速度很慢),我至少可以在仿真设备上安装该应用程序 - 但是一旦加载就会崩溃。错误消息不提供信息。

我猜我需要为本机x86架构(?)构建软件包,这是Android模拟器向导中推荐的默认模拟器 - 是吗?如果是这样,我如何使用buildozer工具执行此操作?或者也许我可以在ARM架构上运行它,而不会崩溃?

一些更精细的细节:

  • 我在OSX上运行
  • 我正在使用建议的命令buildozer -v android debug
  • 构建程序包
  • 要安装应用程序,我将其拖到模拟器窗口(可能有更好的方法......?)
  • 模拟器是搭载Android SDK的模拟器,我正在模仿默认的“Nexus 5X”手机
  • Android SDK版本为23

2 个答案:

答案 0 :(得分:1)

我建议尝试在真实设备上安装应用程序,并在调试模式下将设备连接到PC,然后使用adb logcat获取设备日志以了解导致错误的原因。这样,您可以确保问题是从代码还是模拟器环境中出现。

答案 1 :(得分:1)

您的设置听起来不错,最直接的问题完全在于体系结构(尽管ARM模拟器上的崩溃表明您的应用程序存在错误,您可以通过检查logcat日志来调试该错误。)

python-for-android支持x86,并且可以通过这种方式在模拟器上运行。您可以将其与--arch=x86一起使用。但是,buildozer目前不公开此选项(它硬编码armeabi-v7a)。这不难解决,随意在buildozer github存储库中打开一个关于它的问题。

我会注意到,如果你有一个可用的设备,使用它进行调试与使用模拟器没有任何不同(或更慢/更快)。 Buildozer / python-for-android可以推送apk并自动运行它,在这两种情况下查看logcat输出都是一样的。