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

Android Kivy应用触发PermissionError: [Errno13] /data/.cache权限拒绝求助

解决Android上Kivy应用的PermissionError: /data/.cache权限拒绝问题

问题现象

在Android设备运行Kivy应用时触发错误:PermissionError: [Errno 13] Permission denied: '/data/.cache'。从日志追踪可知,是fake_user_agent库尝试创建/data/.cache/fakeua目录时失败——Android系统禁止普通应用写入/data/.cache这类系统级目录。

环境信息

  • Python版本:3.6.9
  • Kivy:2.0.0
  • Kivy-Garden:0.1.5
  • buildozer:1.5.1.dev0
  • Cython:0.29.34
  • 操作系统:XUbuntu 18.04

Buildozer.spec配置

requirements = python3,kivy,fake_user_agent,beautifulsoup4,pyrogram,tgcrypto,pyQiwiP2P,requests,urllib3,chardet,certifi,idna,lxml,aiohttp,multidict,attr,yarl,async_timeout,attrs,Pillow,cchardet,charset-normalizer==2.1.1,aiosignal,frozenlist,android,libtool,pathlib2,pathlib

android.permissions = INTERNET,WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE,ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE

错误日志(Logcat)

04-23 14:41:12.798  3353  3392 I python  :  Traceback (most recent call last):
04-23 14:41:12.799  3353  3392 I python  :    File "/home/bodya/program_nastena/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_22/python3/Lib/pathlib.py", line 1323, in mkdir
04-23 14:41:12.799  3353  3392 I python  :  FileNotFoundError: [Errno 2] No such file or directory: '/data/.cache/fakeua'

04-23 14:41:12.799  3353  3392 I python  :  During handling of the above exception, another exception occurred:

04-23 14:41:12.799  3353  3392 I python  :  Traceback (most recent call last):
04-23 14:41:12.799  3353  3392 I python  :    File "/home/bodya/program_nastena/.buildozer/android/app/main.py", line 8, in <module>
04-23 14:41:12.800  3353  3392 I python  :    File "/home/bodya/program_nastena/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/armeabi-v7a/fake_user_agent/__init__.py", line 3, in <module>
04-23 14:41:12.800  3353  3392 I python  :    File "/home/bodya/program_nastena/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/armeabi-v7a/fake_user_agent/user_agent.py", line 30, in <module>
04-23 14:41:12.800  3353  3392 I python  :    File "/home/bodya/program_nastena/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/armeabi-v7a/fake_user_agent/settings.py", line 12, in <module>
04-23 14:41:12.800  3353  3392 I python  :    File "/home/bodya/program_nastena/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_22/python3/Lib/pathlib.py", line 1327, in mkdir
04-23 14:41:12.801  3353  3392 I python  :    File "/home/bodya/program_nastena/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_22/python3/Lib/pathlib.py", line 1323, in mkdir
04-23 14:41:12.801  3353  3392 I python  :  PermissionError: [Errno 13] Permission denied: '/data/.cache'
04-23 14:41:12.801  3353  3392 I python  : Python for android ended.

解决方案

方法1:修改fake_user_agent缓存路径到应用私有目录

Android应用仅能自由访问自身私有存储目录,将fake_user_agent的缓存路径替换为应用私有缓存目录即可解决权限问题。在main.py开头添加以下代码:

import os
from fake_user_agent import settings

# 获取应用私有缓存目录
cache_dir = os.path.join(os.environ.get('ANDROID_APP_PATH', '.'), 'cache')
os.makedirs(cache_dir, exist_ok=True)

# 覆盖fake_user_agent的默认缓存路径
settings.CACHE_PATH = os.path.join(cache_dir, 'fakeua')

方法2:禁用fake_user_agent的缓存功能

如果不需要缓存用户代理数据,可直接关闭缓存,避免创建目录的操作。在main.py开头添加:

from fake_user_agent import settings

settings.CACHE = False

额外注意事项

Android 6.0+需要动态请求权限,即便配置文件中声明了权限,仍需在代码中主动请求:

from android.permissions import request_permissions, Permission

request_permissions([Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_EXTERNAL_STORAGE])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 23:42:39