2017-02-08 4 views
0

Unity 용 firebase를 사용하고 있으며 아직 실험 중임을 알고 있습니다.Unity Firebase Storage 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 

는 그러나이 오류를하다에

APK를 구축하고 mscorlib에 설정되어 레벨을 제거 나오는 승인. 하지만 파일 크기를 줄이려면이 기능이 필요합니다. "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>