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

Unity打包安卓后StreamingAssets下JSON文件未出现在Android/data对应目录如何解决

Unity安卓打包后StreamingAssets目录JSON文件找不到排查

核心问题原因

  • 安卓平台下,StreamingAssets目录下的所有文件会被直接打包进APK安装包的assets压缩分区,不会解压到可读写的外部存储目录
  • 你访问的/storage/emulated/0/Android/data/[包名]/files是Unity的Application.persistentDataPath对应的路径,仅用于存放应用运行时生成的可读写文件,和StreamingAssets属于完全独立的两个分区,自然找不到对应的JSON文件

正确读取方案

安卓端无法直接通过系统IO接口读取StreamingAssets内的文件,必须使用Unity封装的网络请求接口读取APK内的压缩资源,示例代码如下:

using System.Collections;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;

public class JsonLoader : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(LoadDataJson());
    }

    IEnumerator LoadDataJson()
    {
        string jsonPath = Path.Combine(Application.streamingAssetsPath, "data.json");
        using (UnityWebRequest req = UnityWebRequest.Get(jsonPath))
        {
            yield return req.SendWebRequest();
            if (req.result == UnityWebRequest.Result.Success)
            {
                // 读取成功,直接处理JSON字符串即可
                string jsonText = req.downloadHandler.text;
                Debug.Log("JSON内容:" + jsonText);
            }
            else
            {
                Debug.LogError("读取失败:" + req.error);
            }
        }
    }
}

注意事项

  • 不要使用File.ReadAllText这类系统IO接口直接读取安卓端StreamingAssets内的文件,系统IO无法识别APK压缩包内的资源路径
  • 打包前确认data.json文件的Asset Bundle属性为None,避免被归类到自定义资源包导致未打进基础APK资源分区
  • 如果需要修改JSON内容,可在首次读取成功后将内容写入Application.persistentDataPath目录,后续直接从该路径读取修改即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:39:03