I have been using firebase for Unity and I know it is still experimental.
When building an APK and stripping level is set to Mscorlib, error comes out on logical that prevents uploading/downloading to storage
Here is the error
NotSupportedException: ..... etc.
System.Net.WebRequest.GetCreator (System.String prefix) [0x00000]in <filename unknown>:0
I/Unity (16919): at System.Net.WebRequest.Create (System.Uri requestUri) [0x00000] in <filename unknown>:0
I/Unity (16919): at Firebase.UnityHttpRequest+<SendUnityRequest>c__Iterator0.MoveNext () [0x00000] in <filename unknown>:0
But when set to Disabled it is ok. But I need this to lessen the file size. I used linker.xml to preserve "System.Net.HttpRequestCreator" but I believe this only works for iOS?
My question is, is it really necessary to set the stripping level to disable for firebase storage to work in Unity?
You should be using IL2CPP with iOS which always turns on byte level stripping. There is actually no way to turn off byte stripping with IL2CPP. See https://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html. Byte level stripping should work with Firebase Storage.
If you are not using IL2CPP for some reason, then to answer your question directly, you cannot use micro-mscorlib with Firebase Storage because Firebase Storage requires some features of .Net. You should be able to use the other options (byte or module level).
When using byte level stripping (with IL2CPP or not), you should not need to specify a link.xml file because unity should be able to infer usage of each class.
--EDIT-- In our upcoming release, we have a fix for byte and assembly level byte stripping. If you want to try a workaround, there are several additional link.xml entries that are required to prevent unity from stripping used classes. These entries are below and will automatically be added to our next SDK release.
<assembly fullname="mscorlib">
<namespace fullname="Mono.Security.Cryptography" preserve="all"/>
<namespace fullname="System.Security" preserve="all"/>
<namespace fullname="System.Security.Cryptography" preserve="all" />
<namespace fullname="System.Security.Cryptography.X509Certificates" preserve="all" />
</assembly>
<assembly fullname="Mono.Security">
<namespace fullname="Mono.Security.Protocol.Tls" preserve="all"/>
<namespace fullname="Mono.Security.X509" preserve="all"/>
</assembly>
<assembly fullname="System">
<namespace fullname="System" preserve="all"/>
<namespace fullname="System.ComponentModel" preserve="all"/>
<namespace fullname="System.ComponentModel.EnumConverter" preserve="all"/>
<namespace fullname="System.Configuration" preserve="all"/>
<namespace fullname="System.Net" preserve="all"/>
<namespace fullname="System.Net.Configuration" preserve="all"/>
<namespace fullname="System.Net.NetworkInformation" preserve="all"/>
<namespace fullname="System.Net.Sockets" preserve="all"/>
<namespace fullname="System.Net.Security" preserve="all"/>
<namespace fullname="System.Runtime.ConstrainedExecution" preserve="all"/>
<namespace fullname="System.Runtime.InteropServices" preserve="all"/>
<namespace fullname="System.Runtime.Serialization" preserve="all"/>
<namespace fullname="System.Security.Cryptography" preserve="all" />
<namespace fullname="System.Security.Cryptography.X509Certificates" preserve="all" />
</assembly>
<assembly fullname="System.Core">
<namespace fullname="System.Security.Cryptography" preserve="all" />
</assembly>
<assembly fullname="System.Configuration">
<namespace fullname="System.Configuration" preserve="all" />
</assembly>