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

Python3环境下Kivy Buildozer Android端UrlRequest请求失败排查

问题排查与解决方案

1. 确认AndroidManifest权限配置

Buildozer需要在buildozer.spec中声明INTERNET权限,仅添加运行时请求不足以让应用访问网络。在spec文件中找到android.permissions项,确保配置如下:

android.permissions = INTERNET

修改后执行buildozer android clean && buildozer android debug deploy run重新构建生效。

2. 定位DNS解析问题

方法一:用IP替代域名测试

将请求中的域名替换为目标服务器的公网IP(比如用https://8.8.8.8测试Google DNS),如果请求成功,说明是设备DNS解析故障。此时可:

  • 检查设备Wi-Fi/移动网络的DNS设置,切换为公共DNS(如8.8.8.8或1.1.1.1)
  • 在应用中通过第三方库(如dnspython,需添加到Buildozer依赖)手动指定DNS服务器

方法二:通过日志验证DNS行为

使用adb logcat过滤DNS相关日志,确认设备是否能正常解析目标域名:

adb logcat | grep -i dns

如果没有对应域名的解析记录,说明设备网络环境存在DNS劫持或配置错误。

3. 修正Kivy UI更新逻辑

网络请求在后台线程执行,不能直接操作UI控件,必须通过Clock.schedule_once切换到主线程更新:

from kivy.clock import Clock

def on_request_success(req, result):
    Clock.schedule_once(lambda dt: self.label.text = "请求成功")

def on_request_failure(req, error):
    Clock.schedule_once(lambda dt: self.label.text = f"错误: {error}")

4. 验证Buildozer依赖配置

如果使用requests库,确保buildozer.spec的requirements包含:

requirements = python3,kivy,requests

同时确认构建环境已安装libssl-dev,避免HTTPS证书验证环节出现间接错误。

5. 检查设备网络环境

  • 确认设备已连接有效网络(Wi-Fi/移动数据),且能正常访问其他外部网站
  • 若处于企业/校园网络,可能存在防火墙或代理拦截,切换到个人网络测试

最简测试代码

用以下代码排除其他UI逻辑干扰,验证网络请求基础功能:

from kivy.app import App
from kivy.uix.label import Label
from kivy.network.urlrequest import UrlRequest
from kivy.clock import Clock

class TestApp(App):
    def build(self):
        self.label = Label(text="测试中...")
        UrlRequest(
            "https://www.google.com",
            on_success=self.on_success,
            on_failure=self.on_failure
        )
        return self.label

    def on_success(self, req, result):
        Clock.schedule_once(lambda dt: setattr(self.label, "text", "请求成功!"))

    def on_failure(self, req, error):
        Clock.schedule_once(lambda dt: setattr(self.label, "text", f"错误: {error}"))

if __name__ == "__main__":
    TestApp().run()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:32:05