2015-11-02 82 views
0

你好,你在這個偉大的城市稱爲stackoverflow所有聰明的人。 我來找你有一個問題,我似乎無法弄清楚。PCLStorage/ZipArchive調試和發佈之間的差異

我的問題是,我正在開發一個在vs2015中使用xamarin表單的應用程序。 在這個應用程序中,我從網絡服務下載了一些壓縮數據(圖像/音頻),並使用nuget PCLStorage將它保存到我的手機中,並在需要時解壓縮文件以顯示/播放。

使用「調試」模式時,應用程序工作正常,但當我將應用程序打包爲apk並將其安裝在手機上時,我試圖打開zip文件時引發「對象引用未設置爲對象的實例」帶有壓縮文件的文件 CheckExistsaAsync告訴我文件存在,並且等待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 
     } 
    } 
    } 

,關於我failes該生產線是拋出異常

回答

0

這是相當辛苦的使用(ZipArchive郵編= .....)行說,但我會推測文件權限問題。它在哪裏下載文件並且Android應用程序是否具有訪問該文件位置的適當權限。

+0

我沒有權限,因爲它的使用FileSystem.Current.LocalStorage至極似乎並不需要任何(沒有,我在文件中已經找到了反正xamarin)此設置。我確實已經在Android清單中讀取和寫入外部存儲權限,因爲它們用於應用程序的其他部分 –

+0

您是否還有關於異常的更多信息?你可以在你的問題中發佈堆棧跟蹤嗎?那裏可能有另一個提示。 –