【问题标题】:PCLStorage/ZipArchive Difference between debug and releasePCLStorage/ZipArchive 调试和发布的区别
【发布时间】:2015-11-02 08:39:24
【问题描述】:

大家好,在这个名为 stackoverflow 的伟大城市中的聪明人。 我来找你有一个我似乎无法弄清楚的问题。

我的问题是我正在开发一个在 vs2015 中使用 xamarin 表单的应用程序。 在这个应用程序中,我从网络服务下载了一些压缩数据(图像/音频),并使用 nuget PCLStorage 将其保存到我的手机中,并(在需要时)解压缩文件以显示/播放。

应用程序在使用“调试”模式时运行良好,但是当我将应用程序打包为 apk 并将其安装在手机上时,当我尝试打开 zip 文件时抛出“对象引用未设置为对象实例”带压缩存档 CheckExistsaAsync 告诉我文件存在,await DisplayAlert 告诉我流的长度与保存文件时的长度相同。在调试模式下运行时,它也与文件长度相同。

这是我失败的代码:

 IFolder rootFolder = FileSystem.Current.LocalStorage;
  if(await rootFolder.CheckExistsAsync("SavedData.zip") == ExistenceCheckResult.FileExists)
  {
    IFile file = await rootFolder.GetFileAsync("SavedData.zip");
    using(Stream s = await file.OpenAsync(FileAccess.Read))
    {
      await DisplayAlert("blabla", s.Length.ToString(), "ok");
      using(ZipArchive zip = new ZipArchive(s, ZipArchiveMode.Read, false))
      {
        //Code
      }
    }
  }

我失败的那一行是 using(ZipArchive zip = .....) 抛出异常的那一行

【问题讨论】:

    标签: zip xamarin.forms


    【解决方案1】:

    这很难说,但我会推测文件权限问题。它在哪里下载文件,Android 应用程序是否具有访问该文件位置的适当权限。

    【讨论】:

    • 我没有为此设置权限,因为它使用 FileSystem.Current.LocalStorage 似乎不需要任何权限(无论如何我在 xamarin 的文档中都没有找到)。我确实在 android 清单中具有读写外部存储权限,因为这些权限用于应用程序的其他部分
    • 您有关于异常的更多信息吗?你可以在你的问题中发布堆栈跟踪吗?那里可能还有其他提示。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2011-07-13
    • 2012-10-07
    • 1970-01-01
    • 2016-12-16
    • 2010-09-16
    • 2010-09-26
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多