编译Kivy项目并使用Android emulator运行
我正在考虑用Python+Kivy编写一个简单的应用程序,主要是供我自己使用——没什么特别的。为了发展,我希望能够编译Kivy项目并使用Android emulator运行,android,android-emulator,kivy,buildozer,Android,Android Emulator,Kivy,Buildozer,我正在考虑用Python+Kivy编写一个简单的应用程序,主要是供我自己使用——没什么特别的。为了发展,我希望能够 将应用程序编译成一个包 在Android模拟器上运行它 可悲的是,目前我还不能很好地完成这个循环——谷歌搜索也帮不上忙 我相信我下载了所有相关的工具:Kivy、buildozer、Android SDK。我输入了Kivy“hello world”应用程序,它在没有Android仿真的情况下运行良好-不幸的是,在模拟器下运行它(使用建议的架构x86)时,我收到一个错误安装失败\u
- 将应用程序编译成一个包
- 在Android模拟器上运行它
安装失败\u NO \u匹配\u ABIS
。如果我用ARM架构制作一个模拟器设备(运行速度非常慢),我至少可以在模拟设备上安装这个应用程序,但一旦加载它就会崩溃。错误消息没有提供信息
我猜我需要为原生x86架构(?)构建包,这是Android emulator向导中推荐的默认仿真器-对吗?如果是这样,我如何使用buildozer
工具?或者我可以在ARM架构上运行它,而不会崩溃
一些更精细的细节:
- 我正在OSX上运行
- 我正在使用建议的命令
buildozer-v android debug
- 要安装该应用程序,我将其拖到emulator窗口(可能有更好的方法…)
- 模拟器是Android SDK附带的,我正在模拟默认的“Nexus 5X”手机
- Android SDK版本是23
adb logcat
获取设备日志,以了解导致错误的原因。通过这种方式,您可以确保问题是否源于您的代码或模拟器环境。您的设置听起来不错,直接的问题完全是架构(尽管ARM模拟器上的崩溃表明您的应用程序存在错误,您可以通过签出logcat日志来调试)
python for android支持x86,并将以这种方式在模拟器上工作。您可以将其与--arch=x86
一起使用。但是,buildozer目前没有公开此选项(它硬编码armeabi-v7a)。这并不难解决,可以在buildozer github存储库中随意打开一个关于它的问题
我会注意到,如果您有可用的设备,那么使用该设备进行调试与使用仿真器没有什么不同(或更慢/更快)。android版Buildozer/python可以推送apk并自动运行,查看logcat输出在这两种情况下的效果相同。我的观点确实是要避免在我的手机上运行(可能是坏的)代码-这是一个有点昂贵的测试平台。。。在任何情况下,代码都是从Kivy的“Hello World”示例中复制出来的-所以我想这很好。@magiiique检查一下这个Etasamian-是的,这是我的问题。但它并没有解释在使用
buildozer
构建时如何解决这个问题-我看不到低级配置文件。或者,如果我这样做了-你是如何得到它的?@magiique你试过用不同的设备而不是Nexus系列来运行它吗?没有-但是如果问题是错误的架构/ABI,这会有帮助吗?