2017-02-08 8 views
0

私はFirebaseをUnityに使用していましたが、まだ実験中です。Unity Firebase Storage Mscorlibストリッピング

APKを構築し、ストリッピングレベルがMscorlibに設定されている場合は、エラーがここストレージ

へのダウンロード/アップロードを防止し、その論理に出てくるが、エラー

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 

である。しかしDisabledに設定したときにそれがありますOK。しかし、私はファイルサイズを小さくするためにこれが必要です。 "System.Net.HttpRequestCreator"を保持するためにlinker.xmlを使用しましたが、これはiOSでのみ機能すると思いますか?

私の質問は、ファイアベースストレージがUnityで動作するようにするために、剥ぎ取りレベルを設定することが本当に必要なのでしょうか?

答えて

0

iOSでIL2CPPを使用して、常にバイトレベルのストリッピングを有効にする必要があります。実際にIL2CPPでバイトストリッピングをオフにする方法はありません。 https://docs.unity3d.com/Manual/iphone-playerSizeOptimization.htmlを参照してください。バイトレベルストリッピングはFirebase Storageで動作するはずです。

何らかの理由でIL2CPPを使用していない場合、Firebase Storageに.Netのいくつかの機能が必要なため、直接質問に答えるために、Firebase Storageでmicro-mscorlibを使用することはできません。他のオプション(バイトまたはモジュールレベル)を使用できるはずです。

バイトレベルのストリッピング(IL2CPPを使用しているかどうかにかかわらず)を使用する場合は、各クラスの使用を統一できなければならないため、link.xmlファイルを指定する必要はありません。

- EDIT-- 今後のリリースでは、バイトおよびアセンブリレベルのバイトストリッピングに関する修正があります。回避策を試したい場合は、使用されたクラスを削除するのを防ぐために必要なlink.xmlエントリがいくつか追加されています。これらのエントリは、次の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> 
関連する問題