为android编译Python模块

为android编译Python模块,android,python,kivy,buildozer,Android,Python,Kivy,Buildozer,我有一个Python/Kivy应用程序,我正试图使用Buildozer为Android编译。它使用第三方模块(freeswitchESL),该模块在代码中导入,因此: from freeswitchESL import ESL 一切都可以编译,但应用程序一运行就会崩溃。通过设备返回的logcat查看,似乎在查找模块的内部名称时遇到了问题: I/python (11682): ImportError: No module named _ESL 我想不出怎么纠正这个问题。我在buildoze

我有一个Python/Kivy应用程序,我正试图使用Buildozer为Android编译。它使用第三方模块(freeswitchESL),该模块在代码中导入,因此:

from freeswitchESL import ESL
一切都可以编译,但应用程序一运行就会崩溃。通过设备返回的logcat查看,似乎在查找模块的内部名称时遇到了问题:

I/python  (11682):  ImportError: No module named _ESL
我想不出怎么纠正这个问题。我在buildozer.spec中尝试过这种方法:

source.include_patterns = freeswitchESL/*

但是没有用。谁能告诉我我做错了什么?这是我第一次尝试为移动设备编译,而且它肯定不像我希望的那样简单;)

buildozer.spec中的“需求”部分就是你要找的。buildozer.spec中的“需求”部分就是你要找的。

将附加文件放在文件夹中,然后在那里放一个
\u init\uuuuuuuuuuuuuuuuupy
就可以做到这一点。请查看此应用程序以获取线索 但是,如果应用程序是第三方的,而您没有这些应用程序的.py文件 也许你得换个角度思考。例如,numpy是受支持的,所以如果使用的话 在需求中,我们需要按照以下方式在buildozer.spec中添加numpy

requirements = kivy,numpy

但是,如果您使用pandas、scipy或scikit,则会发现它们不受支持,因此不能像这样添加。另一种方法是使用numpy或纯python实现该功能,或者创建一个配方。

将其他文件放入文件夹,并在其中放置
\uu init\uuuuuuuuuuuy.py
即可完成此操作。请查看此应用程序以获取线索 但是,如果应用程序是第三方的,而您没有这些应用程序的.py文件 也许你得换个角度思考。例如,numpy是受支持的,所以如果使用的话 在需求中,我们需要按照以下方式在buildozer.spec中添加numpy

requirements = kivy,numpy

但是如果您使用pandas、scipy或scikit,则会发现它们不受支持,因此不能像这样添加。另一种方法是使用numpy或纯python实现该函数,或者创建一个配方。

显而易见的猜测是它需要编译,在这种情况下,您需要为模块制作一个编译配方。显而易见的猜测是它需要编译,在这种情况下,您需要为模块制作一个编译配方。