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

Android平台Kivy应用缓存目录查看及目录不可见问题求助

问题描述

我想查看以下目录中的文件:
/storage/emulated/0/Android/data/[应用名称]/cache

我用以下代码获取该目录路径并显示:

from android import mActivity

以及

context = mActivity.getApplicationContext()
result =  context.getExternalCacheDir()
App.get_running_app().root.pathlabel.text = str(result.toString())

将手机连接到电脑后,能看到/storage/emulated/0/Android/data/目录下有很多应用的文件夹,但找不到我的应用org.test.kivycamerafive的文件夹。请问该目录是否被隐藏?还是函数返回的路径对应的目录实际不存在?我想知道在调试时如何轻松查看该目录。

我的存储权限配置如下:
main.py:

from android.permissions import request_permissions, Permission

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

buildozer.spec:

android.permissions = android.permission.INTERNET,android.permission.CAMERA,android.permission.WRITE_EXTERNAL_STORAGE,android.permission.READ_EXTERNAL_STORAGE

问题解答

目录无法被电脑查看的原因

从Android 11(API 30)开始,系统启用分区存储机制,/Android/data/和/Android/obb/目录被设为应用私有目录,第三方工具(包括电脑通过MTP连接的文件管理器)默认无法直接访问其他应用的私有子目录。你的应用文件夹真实存在,getExternalCacheDir()返回的路径也有效,应用自身可以正常读写该目录,只是外部被系统限制了访问权限。

调试时查看该目录的方法

  1. 用Android Studio的Device File Explorer

    • 连接测试设备到电脑,打开Android Studio
    • 点击View > Tool Windows > Device File Explorer
    • 直接导航到storage/emulated/0/Android/data/org.test.kivycamerafive/cache,即可查看、下载或上传目录内的文件
  2. 在应用内添加文件列表展示
    编写代码遍历缓存目录,在应用界面显示文件信息:

    import os
    from kivy.uix.label import Label
    
    def show_cache_files():
        cache_dir = context.getExternalCacheDir()
        if cache_dir and os.path.exists(cache_dir):
            file_list = os.listdir(cache_dir)
            # 假设root下有一个用于展示的容器widget(如BoxLayout)
            for filename in file_list:
                self.root.file_container.add_widget(Label(text=filename))
    
  3. 通过adb命令提取文件
    在电脑终端执行adb命令,直接将缓存目录的文件拉取到本地:

    adb pull /storage/emulated/0/Android/data/org.test.kivycamerafive/cache/ ./local_cache/
    
  4. 临时关闭分区存储(仅调试用)
    在buildozer.spec中添加配置,让应用兼容旧版存储模式,电脑就能通过MTP看到应用文件夹:

    android.extra_manifest_application_args = android:requestLegacyExternalStorage="true"
    

    注:该方法仅适合调试,正式发布的应用不建议使用,会违反Google Play的存储政策。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:35:05