Xamarin Android: System.IO.Compression.ZipFile.ExtractToDirectory Error en el modo de liberación

Todo funciona bien en modo de depuración, pero cuando lo ejecutamos en el lanzamiento de la llamada ExtractToDirectory falla.

Aquí está la función de referencia. Sólo para asegurarnos de que no estamos haciendo nada raro.

private bool UnzipFiles() { bool toReturn = true; try { UpdateStatus("Almost done..."); string file = Path.Combine (DownloadFolder, "ZipFile.zip"); if(System.IO.Directory.Exists(UnzippingDestinationFolder)) { System.IO.Directory.Delete(UnzippingDestinationFolder, recursive:true); } System.IO.Compression.ZipFile.ExtractToDirectory(file, UnzippingDestinationFolder); UpdateStatus("Finished!"); var files = System.IO.Directory.GetFiles(UnzippingDestinationFolder); int m = 3; } catch (Exception e) { toReturn = false; } 

Finalmente, aquí está la excepción que tenemos.

 System.NullReferenceException: Object reference not set to an instance of an object at SharpCompress.Common.Zip.Headers.ZipFileEntry.DecodeString (System.Byte[] str) [0x00000] in <filename unknown>:0 at SharpCompress.Common.Zip.Headers.DirectoryEntryHeader.Read (System.IO.BinaryReader reader) [0x00000] in <filename unknown>:0 at SharpCompress.Common.Zip.ZipHeaderFactory.ReadHeader (UInt32 headerBytes, System.IO.BinaryReader reader) [0x00000] in <filename unknown>:0 at SharpCompress.Common.Zip.SeekableZipHeaderFactory+<ReadSeekableHeader>c__Iterator0.MoveNext () [0x00000] in <filename unknown>:0 at SharpCompress.Archive.Zip.ZipArchive+<LoadEntries>c__Iterator0.MoveNext () [0x00000] in <filename unknown>:0 at SharpCompress.LazyReadOnlyCollection`1+LazyLoader[SharpCompress.Archive.Zip.ZipArchiveEntry].MoveNext () [0x00000] in <filename unknown>:0 at System.IO.Compression.ZipArchive.CreateZip (System.IO.Stream stream, ZipArchiveMode mode) [0x00000] in <filename unknown>:0 at System.IO.Compression.ZipArchive..ctor (System.IO.Stream stream, ZipArchiveMode mode, Boolean leaveOpen, System.Text.Encoding entryNameEncoding) [0x00000] in <filename unknown>:0 at System.IO.Compression.ZipFile.Open (System.String archiveFileName, ZipArchiveMode mode, System.Text.Encoding entryNameEncoding) [0x00000] in <filename unknown>:0 at System.IO.Compression.ZipFile.ExtractToDirectory (System.String sourceArchiveFileName, System.String destinationDirectoryName, System.Text.Encoding entryNameEncoding) [0x00000] in <filename unknown>:0 at System.IO.Compression.ZipFile.ExtractToDirectory (System.String sourceArchiveFileName, System.String destinationDirectoryName) [0x00000] in <filename unknown>:0 at NewBaron.Screens.DownloadContentScreen.UnzipFiles () [0x00000] in <filename unknown>:0 

Un ligero cambio en la solución de Victor. No vincular los SDK generó un apk que fue 53MBs. Demasiado grande para el límite de tamaño apk de la tienda de juegos.

Establecer el comportamiento de enlace para vincular ensamblados de SDK sólo y que llevó el tamaño apk a 29MBs

Aquí está la ventana actualizada.

Introduzca aquí la descripción de la imagen

@ Mattewrobbinsdev sugerencia fue exactamente eso. Para los futuros lectores, aquí está el diálogo en Xamarin Studio:

Diálogo

  • ¿Cuál es la forma correcta de implementar Fragments en MvvmCross 3.5.1
  • Xamarin Android Crash en Inicio "Got a SIGSEGV"
  • "System.IO.FileNotFoundException: No se pudo cargar el ensamblado 'Xamarin.Android.Support.v13'" Después de reemplazar con la biblioteca de soporte v4
  • Enlace Xamarin.Android definiendo Getter / Setter Métodos usando EnumMethods.xml para la interfaz
  • cómo implementar el proyecto androide xamarin a Xamarin Android Player en VS 2015
  • BluetoothAdapter ActionDiscoveryFinished
  • Xamarin mediaPicker.TakePhotoAsync bloquea la aplicación
  • Xamarin.Forms: Proyecto Android Error de compilación - Archivos perdidos dentro de las carpetas AppData \ Local \ Xamarin
  • Xamarin.Android android: versionCode android: versionName - Desde Jenkins Build Server
  • Cómo utilizar controles Xamarin.Form y controles nativos En la misma página
  • Implementación de la interfaz View.IOnTouchListener
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.