Есть ли способ предотвратить разборку сборки в Unity для компилятора IL2 CPP, чтобы использовать AWS Gamelift API? - PullRequest
0 голосов
/ 17 марта 2020

Очевидно, AWS Gamelift API использует отражение или какой-то механизм, который заставляет компиляторы Unity чрезмерно лишать требуемые сборки. В результате вы ограничены использованием Mono-компилятора, который позволяет отключать демонтаж. IL2 CPP не имеет аналогичной опции. Для IL2 CPP вы можете управлять разбором записей в ссылке. xml file (\ Assets \ link. xml). До сих пор я не имел успеха, используя ссылку. xml подход.

После использования приведенных ниже ссылок в ссылке. xml ряд исключений исключается, но это исключение сохраняется.

2020-03-16 12: 12: 14.622 13883- 13898 / com.company.app E / Unity: NotSupportedException: System.Configuration.ConfigurationManager :: get_AppSettings at System.Configuration.ConfigurationManager.get_AppSettings () [0x00000] в <00000000000000000000000000000000> Сетевом интерфейсе: 0: 0 имя) [0x00000] в <00000000000000000000000000000000>: 0 в Amazon.AWSConfigs..cctor () [0x00000] в <00000000000000000000000000000000>: 0 в Amazon.Runtime.ClientConfig..ctor () [0x00000] в <000000: в000000: в000000: в000000: в000000: в000000: в000000: в000000: в Amazon.GameLift.AmazonGameLiftConfig..ctor () [0x00000] в <00000000000000000000000000000000>: 0 в Amazon.GameLift.AmazonGameLiftClient..ctor (System.String awsAccessKeyId, System.String awsS00000000000000000000000000000000000000) >: 0 в GameLiftClient.GetConnectionIn fo (System.String & ip, System.Int32 & port, System.String & playerSessionId) [0x00000] в <00000000000000000000000000000000>: 0 в GameLift.GetConnectionInfo (System.String & ip, System.Int32 & port, System.String

* 1006 ссылка. xml
<linker>
  <assembly fullname="UnityEngine">
    <type fullname="UnityEngine.Networking.UnityWebRequest" preserve="all" />
    <type fullname="UnityEngine.Networking.UploadHandlerRaw" preserve="all" />
    <type fullname="UnityEngine.Networking.UploadHandler" preserve="all" />
    <type fullname="UnityEngine.Networking.DownloadHandler" preserve="all" />
    <type fullname="UnityEngine.Networking.DownloadHandlerBuffer" preserve="all" />
  </assembly>
  <assembly fullname="mscorlib">
      <namespace fullname="System.Security.Cryptography" preserve="all"/>
  </assembly>
  <assembly fullname="System">
      <namespace fullname="System.Security.Cryptography" preserve="all"/>
  </assembly>
  <assembly fullname="AWSSDK.Core" preserve="all"/>
  <assembly fullname="AWSSDK.CognitoIdentity" preserve="all"/>
  <assembly fullname="AWSSDK.CognitoSync" preserve="all"/>
  <assembly fullname="AWSSDK.DynamoDBv2" preserve="all"/>
  <assembly fullname="AWSSDK.Kinesis" preserve="all"/>
  <assembly fullname="AWSSDK.KinesisFirehose" preserve="all"/>
  <assembly fullname="AWSSDK.Lambda" preserve="all"/>
  <assembly fullname="AWSSDK.MobileAnalytics" preserve="all"/>
  <assembly fullname="AWSSDK.S3" preserve="all"/>
  <assembly fullname="AWSSDK.SecurityToken" preserve="all"/>
  <assembly fullname="AWSSDK.SimpleEmail" preserve="all"/>
  <assembly fullname="AWSSDK.SimpleNotificationService" preserve="all"/>
  <assembly fullname="AWSSDK.SQS" preserve="all"/>
  <assembly fullname="AWSSDK.IdentityManagement" preserve="all"/>
  <assembly fullname="AWSSDK.GameLift" preserve="all"/>
  <assembly fullname="System.Configuration" preserve="all"/>
  <assembly fullname="System.SecurityUtils" preserve="all"/>
  <assembly fullname="System.ComponentModel" preserve="all"/>
  <assembly fullname="System.Activator" preserve="all"/>
  <assembly fullname="System.RuntimeType" preserve="all"/>
</linker>

В любом случае, используя ссылку. xml или другой механизм, можно отключить разборку сборки в Unity, чтобы можно было использовать компилятор IL2 CPP?

Ответы [ 2 ]

1 голос
/ 19 марта 2020

Следуя ответу Джо sh Петерсона, решение состоит в том, чтобы использовать ссылку. xml файл для предотвращения разборки и использования модифицированных версий библиотек AWSSDK.Core и AWSSDK.GameLift, которые не включают System Configuration Manager.

Следующая разветвленная версия всей цели проекта AWSSDK GitHub состоит в решении проблемы компиляции с IL2 CPP и использования GameLift.

https://github.com/fixstu/aws-sdk-net

Сначала собрав AWSSDK.Core.Net45.csproj, затем собрав AWSSDK.GameLift.Net35.csproj, обе необходимые библиотеки будут выведены в каталог / sdk / src / Services / GameLift /.

Добавьте выходные двоичные файлы в каталог / Assets / Plugin проекта Unity и ссылку. xml в каталог / Assets ... и IL2 CPP скомпилирует и выполнит команды GameLift без исключений.

0 голосов
/ 17 марта 2020

Эта ошибка на самом деле не связана с удалением управляемого кода. Это происходит потому, что IL2 CPP не поддерживает System.Configuration.ConfigurationManager.

. Вам нужно будет узнать, возможно ли использовать AWS API Gamelift без доступа к API менеджера конфигурации.

...