解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题

这篇具有很好参考价值的文章主要介绍了解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

问题:

尝试

问题得到解决

我的解释


问题:


         最近游戏要上线,发现一个现象,部分机型在启动的时候闪退或者黑屏,概率是5%左右,通过Bugly只有个别机型才有这个现象,其实真实情况比这严重的多,bugly有时候并不能捕捉到这种情况,我们各种怀疑和查找,最终发现问题的根源。

问题日志如下:

2-18 15:04:10.924 28696 30223 E Unity : Unable to open archive file for writing: '/storage/emulated/0/Android/data/com.xfp.hnsz.ks.xwdxy.cs/files/UnityCache/Temp/0b2da51ac602117b08efce711b40391f/__data'
12-18 15:04:10.924 28696 30144 E Unity : Error while downloading Asset Bundle: Failed to decompress data for the AssetBundle 'jar:file:///data/app/~~mqBnkrTVeHx0R5PQj6Zlhw==/com.xfp.hnsz.ks.xwdxy.cs-ujHBQxE6h_IEHhAMfYKUNA==/base.apk!/assets/assets-art-atlas-achievement.spriteatlasv2_assets_all_fb282f19f9eb9a06452ff40988043469.bundle'.
12-18 15:04:10.927 28696 30148 E Unity : Unable to move cache file '/storage/emulated/0/Android/data/com.xfp.hnsz.ks.xwdxy.cs/files/UnityCache/Temp/1678b268885c708b6b23968c60116b1a' to '/storage/emulated/0/Android/data/com.xfp.hnsz.ks.xwdxy.cs/files/UnityCache/Shared/c145b22e3c49b6b6064231a90d5e684c/48c0472eecd6b114bfc238bd99e509c4': error code - 1
12-18 15:04:10.927 28696 30148 E Unity : Error while downloading Asset Bundle: Couldn't move cache data '/storage/emulated/0/Android/data/com.xfp.hnsz.ks.xwdxy.cs/files/UnityCache/Temp/1678b268885c708b6b23968c60116b1a' into place '/storage/emulated/0/Android/data/com.xfp.hnsz.ks.xwdxy.cs/files/UnityCache/Shared/c145b22e3c49b6b6064231a90d5e684c/48c0472eecd6b114bfc238bd99e509c4' when caching AssetBundle 'jar:file:///data/app/~~mqBnkrTVeHx0R5PQj6Zlhw==/com.xfp.hnsz.ks.xwdxy.cs-ujHBQxE6h_IEHhAMfYKUNA==/base.apk!/assets/icon_fr_eye.png_48c0472eecd6b114bfc238bd99e509c4.bundle'.
12-18 15:04:10.927 28696 30149 E Unity : Unable to move cache file '/storage/emulated/0/Android/data/com.xfp.hnsz.ks.xwdxy.cs/files/UnityCache/Temp/eda9c7b7cbb31ddf2be58ac700e478d6' to '/storage/emulated/0/Android/data/com.xfp.hnsz.ks.xwdxy.cs/files/UnityCache/Shared/c64d4e8d8e84733e1a9638e93f484830/1627a372980ad47ae64c100b39449f60': error code - 1
12-18 15:04:10.927 28696 30149 E Unity : Error while downloading Asset Bundle: Couldn't move cache data '/storage/emulated/0/Android/data/com.xfp.hnsz.ks.xwdxy.cs/files/UnityCache/Temp/eda9c7b7cbb31ddf2be58ac700e478d6' into place '/storage/emulated/0/Android/data/com.xfp.hnsz.ks.xwdxy.cs/files/UnityCache/Shared/c64d4e8d8e84733e1a9638e93f484830/1627a372980ad47ae64c100b39449f60' when caching AssetBundle 'jar:file:///data/app/~~mqBnkrTVeHx0R5PQj6Zlhw==/com.xfp.hnsz.ks.xwdxy.cs-ujHBQxE6h_IEHhAMfYKUNA==/base.apk!/assets/icon_mca_up.png_1627a372980ad47ae64c100b39449f60.bundle'.
12-18 15:04:11.222 28696 30025 E Unity : UnityWebRequestException: Data Processing Error, see Download Handler error
12-18 15:04:11.222 28696 30025 E Unity : at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <00000000000000000000000000000000>:0
12-18 15:04:11.222 28696 30025 E Unity : at Cysharp.Threading.Tasks.UnityAsyncExtensions+UnityWebRequestAsyncOperationConfiguredSource.GetResult (System.Int16 token) [0x00000] in <00000000000000000000000000000000>:0

 通过日志我们发现,在unityActivity一启动的时候,我们就启动下载更新文件(也就是在awake函数中调用UnityWebRequest函数将StreamingAssets的初始包的assetbundle拷贝到可写的沙盒目录下),小概率爆出如上问题。       

尝试

        我们怀疑是unity的storage的存储权限问题,所以我们将安装目录放到 external(SDCard)扩展卡中,默认情况是internal(沙盒目录):

解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题,工作笔记,bug,unity,unity,游戏引擎

        

并在导出android工程的清单文件(AndroidManifest.xml)下开扩展卡权限:

        READ_EXTERNAL_STORAGE(读取外部存储器 )

        WRITE_EXTERNAL_STORAGE(写外部存储器

但是由于发行方说,游戏已启动就申请扩展卡的存储权限,不合规;也不利于用户安装和导量的转化,最终我们将该办法摒弃掉了。

问题得到解决

从头再来,最终我们在官网发现Caching.ready

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

public class Example : MonoBehaviour
{
    IEnumerator IsCachingReadyExample(string uri)
    {
        //Using this conditional says we want to wait for our Caching system to be ready before trying to download bundles
        while (!Caching.ready)
        {
            yield return null;
        }
        //Download the bundle
        UnityWebRequest request = UnityWebRequest.GetAssetBundle(uri);
        yield return request.SendWebRequest();
        AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(request);

        //Do something with the AssetBundle...
    }
}

当我们在UnityWebRequest我们的assetbundle之前加上Caching.ready这句的时候,最终问题得到解决。

        其实日志已经告诉我们,在写文件的时候无法将文件写入到缓存中。由于unity对于cache的机制以及什么时候cache.ready准备好了并没有写的很清楚(或许官方写了,我并没有找到出处)

我的解释

        对于cache,unity应该unityActivity一启动的时候需要申请cache,但一定是异步或者在awake之后,而我们的下载更新就在awake第一行就启动下载并是异步的操纵,这时cache有一定概率并没有初始化完成。所有造成有一定概率爆出以上错误的原因。

        如果小伙伴找到cache的详细文档以及cache.ready=true的时机,请告知我,不胜感激!!!文章来源地址https://www.toymoban.com/news/detail-798129.html

到了这里,关于解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Keil5 报错:Error Flash Download Failed - “Cortex M3“解决方法

    自己做了一个开发板,在下载程序的时候遇到这个报错: 我开始以为是我的Jink出了问题,后来把开发板换了之后发现不是下载器的问题 我平时用的是STM32F103RCT6,但是这次画的开发板使用的是STM32F103C8T6,所以把单片机型号换成自己使用的单片机型号即可:点击魔术棒——点

    2024年02月11日
    浏览(56)
  • 已解决Error:Flash Download failed -“Cortex-M3”异常的正确解决方法,亲测有效!!!

    已解决Error:Flash Download failed -“Cortex-M3”异常的正确解决方法,亲测有效!!! Error:Flash Download failed -“Cortex-M3” 对于Flash Download failed - \\\"Cortex-M3\\\"错误,你可以尝试以下解决方法: 下滑查看解决方法 确保你的硬件连接正确:检查设备与电脑之间的连接是否牢固,确保使用

    2024年02月03日
    浏览(52)
  • 解决stm32芯片锁死 出现Error:Flash Download Failed-“Cortex-M3“

    打开MDK软件使用SW当时连接单片机发现能连接到板子 显示已经连接上 但是再下载的时候出现Error:Flash Download Failed-\\\"Cortex-M3\\\"下载错误 首先排除硬件连接问题,能够连接到stm32说明硬件连接没有问题,再排除软件编译错误,最后预估可能是硬件stm32芯片由于脉冲电平的干扰导致芯

    2024年02月15日
    浏览(89)
  • UNITY报错:An error occurred while resolving packages: Project has invalid dependencies: com.unit

    打开unity出现了这样的报错: An error occurred while resolving packages:   Project has invalid dependencies:     com.unity.render-pipelines.universal: Package [com.unity.render-pipelines.universal@12.1.2] cannot be found 这里在同站其他博主提供的方法中得到灵感,现已解决。原博主给出的解决思路是项目具有无效的

    2024年02月03日
    浏览(47)
  • Unity创建asset文件

    其中[CreateAssetMenu]属性可以在Create里点击对应名称创建asset文件。如下图 使用Resources Load类型为ChatConfig的对象就可以加载到所有数据,例如 代码创建

    2024年02月15日
    浏览(42)
  • Linux中error while loading shared libraries错误解决办法

    默认情况下,编译器只会使用 /lib 和 /usr/lib 这两个目录下的库文件,通常通过源码包进行安装时,如果不指定–prefix,会将库安装在 /usr/local/lib 目录下 当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说, /usr/local/lib 目录不在系统默认的库搜索目录中

    2024年01月17日
    浏览(48)
  • 打开项目出现报错:An error occurred while resolving packages: Project has invalid dependencies: com.unity.

    最近做unity项目,git pull别人的项目,打开后出现这样的报错: An error occurred while resolving packages: Project has invalid dependencies: com.unity.visualeffectgraph: Package [com.unity.visualeffectgraph@12.1.10] cannot be found A re-import of the project may be required to fix the issue or a manual modification of ... 翻译是: 解析

    2024年02月12日
    浏览(70)
  • Unity——资产包(Asset Bundles)

    对很多单机游戏来说,游戏的所有资源往往是与游戏本体一同发布的,资源不需要独立出来。但对于大型商业项目来说,游戏产品还需要再发布之后进行维护和更新,这就引出了Unity资产包的概念 其实一般来说,只要把资源放在合适的文件夹下,Unity就会妥善处理。但是,对

    2024年02月05日
    浏览(59)
  • 执行可执行程序时遇到error while loading shared libraries错误解决

    执行 ./provider -i test.conf 编译引用了第三方库zookeeper_mt.so的代码后,执行出现了以下错误 这就是 依赖的动态库找不到路径 导致的。 示例是我处理的过程如下,最后成功执行: 解决方法有3种: 如果 共享库文件安装到了/lib或/usr/lib目录 下, 执行一下 ldconfig 命令。 ldconfig命令

    2024年02月09日
    浏览(56)
  • 已解决Encountered error while trying to install package.> lxml

    已解决(pip安装第三方模块lxml模块报错)Building wheels for collected packages: lxml Building wheel for lxml (setup.py) … error error: subprocess-exited-with-error python setup.py bdist_wheel did not run successfully. note: This error originates from a subprocess,and is likely not a problem with pip. ERROR: Failed building wheel for lxml n

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包