在Unity中构建apk应用程序中包括文件 [英] Including files in building apk application in Unity

查看:203
本文介绍了在Unity中构建apk应用程序中包括文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

统一构建时如何向apk文件添加文件和文件夹.

How to add files and folders to the apk file when building it in unity.

在Android上安装后,我需要在应用程序的父目录(android/data/com.company.product/files)中包含一些文件和文件夹.

What I need is to have some files and a folder to be present in the parent directory of the application ( android/data/com.company.product/files) after installing it on Android.

推荐答案

这是我的代码,用于将文件从流媒体资源复制到android持久路径:

This is my code for copying files from streaming assets into android persist path:

using System.IO;
using UnityEngine;
public static class FileManager
{
    public static string RereadFile(string fileName)
    {  //copies and unpacks file from apk to persistentDataPath where it can be accessed
        string destinationPath = Path.Combine(Application.persistentDataPath, fileName);
#if UNITY_EDITOR
        string sourcePath = Path.Combine(Application.streamingAssetsPath, fileName);
#else
        string sourcePath = "jar:file://" + Application.dataPath + "!/assets/" + fileName;
#endif

        //UnityEngine.Debug.Log(string.Format("{0}-{1}-{2}-{3}", sourcePath,  File.GetLastWriteTimeUtc(sourcePath), File.GetLastWriteTimeUtc(destinationPath)));

        //copy whatsoever

        //if DB does not exist in persistent data folder (folder "Documents" on iOS) or source DB is newer then copy it
        //if (!File.Exists(destinationPath) || (File.GetLastWriteTimeUtc(sourcePath) > File.GetLastWriteTimeUtc(destinationPath)))
        {
            if (sourcePath.Contains("://"))
            {
                // Android  
                WWW www = new WWW(sourcePath);
                while (!www.isDone) {; }                // Wait for download to complete - not pretty at all but easy hack for now 
                if (string.IsNullOrEmpty(www.error))
                {
                    File.WriteAllBytes(destinationPath, www.bytes);
                }
                else
                {
                    Debug.Log("ERROR: the file DB named " + fileName + " doesn't exist in the StreamingAssets Folder, please copy it there.");
                }
            }
            else
            {
                // Mac, Windows, Iphone                
                //validate the existens of the DB in the original folder (folder "streamingAssets")
                if (File.Exists(sourcePath))
                {
                    //copy file - alle systems except Android
                    File.Copy(sourcePath, destinationPath, true);
                }
                else
                {
                    Debug.Log("ERROR: the file DB named " + fileName + " doesn't exist in the StreamingAssets Folder, please copy it there.");
                }
            }
        }

        StreamReader reader = new StreamReader(destinationPath);
        var jsonString = reader.ReadToEnd();
        reader.Close();


        return jsonString;
    }
}

希望对您有帮助.

这篇关于在Unity中构建apk应用程序中包括文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆