You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Buildozer打包含aiofiles的APK编译成功但安装后闪退问题求助

解决方案

aiofiles可正常集成到Buildozer打包的APK中,你遇到的闪退为配置错误、事件循环冲突两类问题,可按以下步骤修复:

1. 清理Buildozer spec依赖配置

你当前的requirements字段混入了大量Python标准库(threading、datetime、os、sys、re、asyncio、concurrent.futures、ast、cython、pip、setuptools等),这类库是Python环境自带组件,无需手动声明,多余声明会触发python-for-android编译时的依赖冲突,直接删除上述标准库声明,仅保留第三方依赖即可:

requirements = python3,kivy,pyjnius,kivymd,certifi,kivyauth,openssl,ws4py,google-auth,oauth2,urllib3,oauth2client,firebase,pygame,jwcrypto,pycryptodome,sseclient,requests_toolbelt,python_jwt,gcloud,rsa,cryptography,httplib2,pyrebase,sdl2,sdl2_image,sdl2_mixer,sdl2_ttf,firebase-auth,cachetools,google-cloud,firebase-client,google-cloud-storage,jwt,PIL,chardet,aiofiles,plyer

额外提示:未用到的nodejs、google等冗余依赖也可删除,降低编译冲突概率。

2. 开启必要Android权限

取消spec中android.permissions字段的注释,根据你的业务场景补充权限:

# 基础网络权限+存储读写权限,按需调整
android.permissions = INTERNET,WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE

同时取消API版本相关配置的注释,使用稳定的API等级避免兼容问题:

android.api = 33
android.minapi = 21

aiofiles操作文件/发起网络请求时没有对应权限,会直接抛出未捕获异常导致闪退。

3. 适配Kivy与asyncio事件循环

Kivy本身有独立的事件循环,直接调用asyncio原生运行方法会和Kivy循环冲突导致闪退,需要在代码入口处做事件循环适配:

import asyncio
import platform
from kivy.app import App
from kivy.uix.widget import Widget
import aiofiles

# 安卓平台事件循环适配
if platform.system() == 'Android':
    asyncio.set_event_loop_policy(asyncio.DefaultEventLoopPolicy())

# 后续aiofiles异步操作需通过Kivy的异步调度器执行,不要单独启动新的asyncio事件循环

4. 清理缓存重新编译

修复配置后先执行buildozer android clean清除历史编译缓存,再重新执行打包命令,避免旧缓存导致异常。

5. 精准定位错误

如果修复后仍闪退,开启spec中android.logcat_filters = *:S python:D配置,打包debug版本APK安装后,通过adb logcat -s python命令即可查看具体的Python报错栈,可精准定位问题根源。


内容的提问来源于stack exchange,提问作者Foton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:57:01