Start a new topic
Solved

Unity: Zip files not working correctly on iOS build

Working state: Zip file is generated from target images outside Unity (e.g. in terminal with command zip). The zip file is then placed into the StreamingAssets folder and used during runtime to create a runtime ImageTracker in the same way as in the docs.


Crashing state: Zip file is generated from images during runtime in the iOS device using SharpZipLib or SharpZipLibPortable. The zip works as a target collection when tested using Unite Remote 5 on iPhone 6s. When the project is built for iOS on Xcode it doesn't work anymore. Generation of the zip works but as soon as the ImageTracker is created the whole app freezes/crashes. 


On Android this works flawlessly without freezing.


TLDR; What zip compression methods etc. should be used to generate valid zip files for Wikitude on iOS? Zip Generation must be done within the app on the iOS device so the solution must be available for Unity just like the before mentioned SharpZipLib: https://github.com/icsharpcode/SharpZipLib

https://www.nuget.org/packages/SharpZipLib.Portable/



Steps to reproduce and about the test project:

1. Open the Unity project.

2. Switch to iOS platform if it's not chosen already.

3. Import Wikitude Unity SDK.

4. Build for iOS

5. Open the built project in Xcode.

6. Add Wikitude SDK to the embedded libraries like always.

7. Run

8. Once the app is running on your device press zip.

9. Next press build and then the app crashes.


Zip button creates the zip from the downloaded image trigger.

Build button creates the ImageTracker with the zip file as its target collection.



I attached debugger crashlog from Xcode and project Unity package.



txt
(5.33 KB)

Hi,


Could you please confirm that you're using the latest Unity SDK version (8.5) and share the Unity version.


Thx and greetings

Nicola

Hello Nicola,


The Wikitude Unity SDK version is indeed 8.5 and the Unity version is 2019.3.0a2.

The issue is now solved.


SharpZipLib requires the following line in the project's Zipper.cs script:

OutputStream.UseZip64 = UseZip64.Off;

E.g. this can be placed after OutputStream.SetLevel(CompressionLevel);


This allows the zip files to be read correctly on iOS devices that don't support 64bit zip files.



Hi Henri,


Great that the issue is solved and thx for posting the solution here. This might help others as well.


Greetings

Nicola

Login or Signup to post a comment