使用Buildozer构建APK时遇nest-asyncio模块未找到崩溃问题
nest_asyncio模块找不到的问题 以下是针对你遇到的ModuleNotFoundError: No module named 'nest_asyncio'问题的具体解决步骤:
1. 检查buildozer.spec的requirements配置
打开项目根目录下的buildozer.spec文件,找到requirements行,确保已正确添加所有依赖,格式应为:
requirements = python3,kivy,nest_asyncio,aiofiles
注意模块名拼写必须完全正确,不要加多余空格或符号;如果指定版本号,要确认该版本在PyPI上有适配Android的轮子包,否则可能导致构建失败或模块无法正常打包。
2. 清理Buildozer缓存后重新构建
旧构建缓存可能导致新依赖未被正确打包,执行以下命令清理缓存并重新构建:
buildozer android clean buildozer android debug deploy run
3. 验证Python环境一致性
确保本地开发环境和Buildozer使用的Python环境一致,避免出现本地安装了模块但Buildozer构建时使用的虚拟环境未同步的情况。如果用了虚拟环境,先激活环境再执行构建命令。
4. 手动指定模块源码包(可选)
如果默认PyPI源无法正确获取nest_asyncio模块,可在requirements中直接指定源码包链接,例如:
requirements = python3,kivy,nest_asyncio@https://pypi.org/packages/source/n/nest_asyncio/nest_asyncio-1.5.6.tar.gz,aiofiles
替换链接中的版本号为最新稳定版即可。
原代码
import kivy from random import random from kivy.app import App from kivy.uix.widget import Widget from kivy.uix.button import Button from kivy.graphics import Color, Ellipse, Line import ast import datetime import asyncio #from concurrent.futures import ProcessPoolExecutor import aiofiles #from kivy.app import async_runTouchApp import nest_asyncio class MyPaintWidget(Widget): def on_touch_down(self, touch): color = (random(), 1, 1) with self.canvas: Color(*color, mode='hsv') d = 30. Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d)) touch.ud['line'] = Line(points=(touch.x, touch.y)) def on_touch_move(self, touch): touch.ud['line'].points += [touch.x, touch.y] class MyPaintApp(App): def build(self): parent = Widget() self.painter = MyPaintWidget() clearbtn = Button(text='Clear') clearbtn.bind(on_release=self.clear_canvas) parent.add_widget(self.painter) parent.add_widget(clearbtn) return parent def clear_canvas(self, obj): self.painter.canvas.clear() if __name__ == '__main__': MyPaintApp().run()
错误日志
###logcat error###
04-13 14:54:44.522 19120 19145 I python : [INFO ] [Text ] Provider: sdl2
04-13 14:54:44.546 19120 19145 I python : Traceback (most recent call last):
04-13 14:54:44.546 19120 19145 I python : File "/home/mat/Desktop/new39/.buildozer/android/app/main.py", line 14, in
04-13 14:54:44.546 19120 19145 I python : ModuleNotFoundError: No module named 'nest_asyncio'
04-13 14:54:44.546 19120 19145 I python : Python for android ended.
04-13 14:54:44.634 1138 1138 I sensors-hal: batch:242, android.sensor.accelerometer/11, period=200000000, max_latency=0
04-13 14:54:44.635 1138 1138 I sensors-hal: set_config:63, sample_period_ns is adjusted to 200000000 based on min/max delay_ns
04-13 14:54:44.635 1750 3336 I ActivityManager: appDiedLocked: app=ProcessRecord{1ef0121 19120:org.test.myapp/u0a340}
thread=android.os.BinderProxy@1cfb156 fromBinderDied=true
isKilledByAm=false reason=null
04-13 14:54:44.635 1750 3336 I ActivityManager: Process org.test.myapp (pid 19120) has died: fg TOP
04-13 14:54:44.635 1138 1138 I sensors-hal: send_sync_sensor_request:359, send sync request
04-13 14:54:44.635 1750 6698 I WindowManager: WIN DEATH: Window{87fc8cd u0 org.test.myapp/org.kivy.android.PythonActivity}
04-13 14:54:44.635 1138 1138 I sensors-hal: send_sync_sensor_request:385, wait for notification of response
04-13 14:54:44.635 1750 6698 W InputManager-JNI: Input channel object '87fc8cd org.test.myapp/org.kivy.android.PythonActivity
(client)' was disposed without first being removed with the input
manager!
04-13 14:54:44.635 1043 1043 I Zygote : Process 19120 exited cleanly (255)
04-13 14:54:44.635 1750 2122 I libprocessgroup: Successfully killed process cgroup uid 10340 pid 19120 in 0ms
04-13 14:54:44.635 1138 18852 I sensors-hal: ssc_conn_resp_cb:666, resp_value = 0
04-13 14:54:44.636 1138 1138 I sensors-hal: send_sync_sensor_request:391, takes 0 ms to receive the response with
0
04-13 14:54:44.636 1138 1138 I sensors-hal: batch:251, android.sensor.accelerometer/11, period=200000000, max_latency=0
request completed
04-13 14:54:44.639 1750 6698 V WindowManager: Changing focus of displayId=0 to null from Window{87fc8cd u0
org.test.myapp/org.kivy.android.PythonActivity}
04-13 14:54:44.641 1750 3336 W ActivityTaskManager: Force removing ActivityRecord{51f499c u0
org.test.myapp/org.kivy.android.PythonActivity t2053}: app died, no
saved state
内容的提问来源于stack exchange,提问作者Foton

