2017-02-08 5 views
0

J'ai utilisé firebase pour Unity et je sais qu'il est encore expérimental.Unity Firebase Storage Mscorlib Stripping

Lors de la construction d'un APK et le niveau de décapage est réglé sur mscorlib, l'erreur vient sur logique qui empêche télétransmettre/télécharger au stockage

Voici l'erreur

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 

Mais lorsqu'il est réglé sur Désactivé, il est D'accord. Mais j'ai besoin de cela pour réduire la taille du fichier. J'ai utilisé linker.xml pour conserver "System.Net.HttpRequestCreator" mais je crois que cela ne fonctionne que pour iOS?

Ma question est, est-il vraiment nécessaire de définir le niveau de décapage à désactiver pour que le stockage Firebase fonctionne dans Unity?

Répondre

0

Vous devez utiliser IL2CPP avec iOS, qui active toujours l'effacement des octets. Il n'y a en fait aucun moyen de désactiver l'effacement des octets avec IL2CPP. Voir https://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html. Niveau d'arrachement devrait travailler avec Firebase Storage.

Si vous n'utilisez pas IL2CPP pour une raison quelconque, alors pour répondre directement à votre question, vous ne pouvez pas utiliser micro-mscorlib avec Firebase Storage car Firebase Storage requiert certaines fonctionnalités de .Net. Vous devriez être capable d'utiliser les autres options (octets ou niveau de module). Lorsque vous utilisez l'effacement de niveau octet (avec IL2CPP ou non), vous ne devriez pas avoir besoin de spécifier un fichier link.xml car l'unité devrait pouvoir déduire l'utilisation de chaque classe.

--EDIT-- Dans notre prochaine version, nous avons un correctif pour l'octet et le dépouillement des octets au niveau de l'assemblage. Si vous souhaitez essayer une solution de contournement, plusieurs entrées link.xml supplémentaires sont requises pour empêcher l'unité de supprimer les classes utilisées. Ces entrées sont ci-dessous et seront automatiquement ajoutées à notre prochaine version du SDK.

<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>