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

如何解决Buildozer打包的Kivy应用在安卓端启动后闪退问题

问题原因和解决方案

核心触发原因

  • pywhatkit是面向桌面端开发的第三方库,内部依赖大量桌面端专属的系统API(比如默认浏览器调用、键鼠控制组件等),没有适配安卓运行环境,即便在spec中添加了依赖,运行时调用对应接口也会直接触发崩溃。
  • 你将kit.playonyt()方法直接写在了Kivy的UI主线程回调on_touch_down中,该方法会先发起网络请求查询YouTube资源链接,安卓系统不允许主线程执行耗时操作,哪怕网络请求没超时,后续尝试调用系统打开链接的逻辑也和桌面端完全不兼容,直接触发闪退。

修复步骤

  1. 先注释掉main.py中所有和pywhatkit相关的导入、调用代码,重新打包测试,确认应用可以正常运行,排除其他配置问题。
  2. 替换playonyt功能的实现:安卓端要打开YouTube链接,不要用pywhatkit,改用pyjnius调用安卓原生Intent实现,修改示例如下:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Ellipse, Line
# 导入pyjnius相关组件
from jnius import autoclass

Intent = autoclass('android.content.Intent')
Uri = autoclass('android.net.Uri')
PythonActivity = autoclass('org.kivy.android.PythonActivity')

def playonyt_android(keyword):
    # 构造打开YouTube搜索结果的Intent
    intent = Intent(Intent.ACTION_VIEW, Uri.parse(f"https://www.youtube.com/results?search_query={keyword}"))
    PythonActivity.mActivity.startActivity(intent)

class MyPaintWidget(Widget):
    def on_touch_down(self, touch):
        with self.canvas:
            Color(1, 1, 0)
            d = 30.
            Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
            touch.ud['line'] = Line(points=(touch.x, touch.y))
            # 替换为适配安卓的调用
            playonyt_android("O Re Piya")
    def on_touch_move(self, touch):
        touch.ud['line'].points += [touch.x, touch.y]

class MyPaintApp(App):
    def build(self):
        return MyPaintWidget()

if __name__ == '__main__':
    MyPaintApp().run()
  1. 修改Buildozer.spec的requirements配置,添加pyjnius依赖:
requirements = python3,kivy,pyjnius,requests,Pillow,urllib3
  1. 如果你需要排查其他第三方库的兼容性问题,可以通过adb查看运行日志:开启手机USB调试后连接电脑,执行adb logcat -s python:D即可看到应用运行时的Python报错信息,精准定位崩溃点。
  2. 注意:不是所有PyPI上的Python库都可以直接打包到安卓应用中,仅纯Python实现、无桌面端系统API依赖的库可以直接引入;带有C扩展的库需要python-for-android存在对应的编译配方才能正常打包使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:00:03