2017-02-08 13 views
0

Я использую firebase для Unity, и я знаю, что он все еще экспериментальный.Unity Firebase Storage Mscorlib Stripping

При построении 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 

Но когда установлено значение Отключен это ОК. Но мне нужно это, чтобы уменьшить размер файла. Я использовал linker.xml для сохранения «System.Net.HttpRequestCreator», но я считаю, что это работает только для iOS?

Вопрос в том, действительно ли необходимо установить уровень зачистки, чтобы отключить хранилище firebase для работы в Unity?

ответ

0

Вы должны использовать IL2CPP с iOS, который всегда включает разрядку уровня байтов. На самом деле нет способа отключить удаление байтов с помощью IL2CPP. См. https://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html. Ширина байтового уровня должна Работа с хранилищем для пожарной базы.

Если вы не используете IL2CPP по какой-либо причине, то, чтобы ответить на ваш вопрос напрямую, вы не можете использовать micro-mscorlib с Firebase Storage, потому что для хранения Firebase требуются некоторые функции .Net. Вы должны иметь возможность использовать другие параметры (байт или уровень модуля).

При использовании разрядки уровня байтов (с использованием 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>