编译Kivy项目并在Android模拟器上运行

3

我正在考虑使用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个回答

1

我建议尝试在真实设备上安装应用程序,并将设备连接到您的计算机以调试模式,并使用adb logcat获取设备日志,以了解是代码还是仿真环境引起了错误。这样你就可以确定问题是来自你的代码还是仿真器环境。


我的意思是确实要避免在手机上运行(可能有问题的)代码 - 这有点像一个昂贵的测试床... 无论如何,该代码只是从Kivy的“Hello World”示例复制而来 - 我想这没问题。 - magiiique
@magiiique 看看这个吧 https://dev59.com/vWAf5IYBdhLWcg3wgy4Y - Juggernaut
Etasamian - 是的,那就是我的问题。但它没有解释在使用 buildozer 构建时如何解决它- 我无法看到低级配置文件。或者如果我能看到- 如何获取它? - magiiique
@magiiique 你试过在除了Nexus系列之外的设备上运行它吗? - Juggernaut
不过,如果问题是错误的架构/ABI,那样可以帮上忙吗? - magiiique
@magiiique 你可以试试看。 - Juggernaut

1

你的设置听起来不错,但是立即出现的问题完全是架构问题(尽管在ARM模拟器上崩溃表明你的应用程序存在错误,你可以通过检查logcat日志进行调试)。

python-for-android支持x86,并且可以在模拟器上使用。您可以使用--arch=x86实现此目的。然而,buildozer当前不支持此选项(它硬编码为armeabi-v7a)。这不难解决,请随意在buildozer github存储库中打开一个问题。

我要注意的是,如果您有可用的设备,则使用该设备进行调试与使用模拟器没有任何区别(也不会更慢/更快)。Buildozer / python-for-android可以自动推送apk并运行它,并且在两种情况下都可以查看logcat输出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接