Xamarin Android MvvmCross Связанные проблемы - PullRequest
0 голосов
/ 23 мая 2018

Я создаю свою первую версию Xamarin для Android с помощью MvvmCross.Как и большинство других людей, у которых есть подобные проблемы, приложение работает нормально в режиме отладки, но не выпускается со связыванием.Я застрял и искал несколько дней, но все еще не мог решить это.Пожалуйста, помогите.

У меня установлена ​​последняя версия Visual Studio 2017 v15.7.2, .net 4.7.03056, Xamarin 4.10.0.48 и Android SDK 8.1.

Чтобы устранить проблему, я запускаюработает в режиме Debug со связью «Только сборки Sdk» и не использует Shared Runtime.Возникают следующие ошибки:

    05-24 02:21:52.490 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/mono/gac/System.Runtime/4.0.0.0__b03f5f7f11d50a3a/System.Runtime.dll'.
    05-24 02:21:52.490 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/System.Runtime.dll'.
    05-24 02:21:52.490 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/mono/gac/System.Runtime/4.0.0.0__b03f5f7f11d50a3a/System.Runtime.exe'.
    05-24 02:21:52.491 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/System.Runtime.exe'.
    05-24 02:21:52.491 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/mono/gac/System.Runtime/4.0.0.0__b03f5f7f11d50a3a/System.Runtime.dll'.
    05-24 02:21:52.491 D/Mono( 9114) : Assembly Loader probing location: '/storage/emulated/0/Android/data/.../files/.__override__/System.Runtime.dll'.
    05-24 02:21:52.491 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/System.Runtime.dll'.
    05-24 02:21:52.491 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/mono/gac/System.Runtime/4.0.0.0__b03f5f7f11d50a3a/System.Runtime.exe'.
    05-24 02:21:52.491 D/Mono( 9114) : Assembly Loader probing location: '/storage/emulated/0/Android/data/xxx.Droid/files/.__override__/System.Runtime.exe'.
    05-24 02:21:52.493 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/System.Runtime.exe'.
    05-24 02:21:52.493 W/Mono( 9114) : The following assembly referenced from /storage/emulated/0/Android/data/xxx.Droid/files/.__override__/MvvmCross.Platform.dll could not be loaded:
    05-24 02:21:52.493 W/Mono( 9114) :      Assembly:   System.Runtime(assemblyref_index=0)
    05-24 02:21:52.493 W/Mono( 9114) :      Version:    4.0.0.0
    05-24 02:21:52.493 W/Mono( 9114) :      Public Key: b03f5f7f11d50a3a
    05-24 02:21:52.493 W/Mono( 9114) : The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly(/storage/emulated/0/Android/data/xxx.Droid/files/.__override__/).
    05-24 02:21:52.493 D/Mono( 9114) : Failed to load assembly MvvmCross.Platform[0xe7ec5ea0].
    05-24 02:21:52.493 W/        ( 9114): Could not load signature of MvvmCross.Platform.Droid.Views.MvxEventSourceActivity:add_CreateWillBeCalled due to: Could not load file or assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.assembly:System.Runtime, Version= 4.0.0.0, Culture= neutral, PublicKeyToken= b03f5f7f11d50a3a type:<unknown type> member:(null) signature:<none>
    Unhandled Exception:

    System.TypeLoadException: Could not resolve the signature of a virtual method

    05-24 02:24:36.309 D/Mono( 9114) : Assembly Ref addref xxx.Droid[0xe7ec5240] -> MvvmCross.Plugins.ResxLocalization[0xe7ec6260]: 2
    05-24 02:24:36.310 D/Mono    ( 9114): Assembly Loader probing location: '/usr/local/lib/mono/gac/System.Runtime/4.0.0.0__b03f5f7f11d50a3a/System.Runtime.dll'.
    05-24 02:24:36.310 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/System.Runtime.dll'.
    05-24 02:24:36.310 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/mono/gac/System.Runtime/4.0.0.0__b03f5f7f11d50a3a/System.Runtime.exe'.
    05-24 02:24:36.310 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/System.Runtime.exe'.
    05-24 02:24:36.311 D/Mono( 9114) : Assembly Loader probing location: '/usr/local/lib/mono/gac/System.Runtime/4.0.0.0__b03f5f7f11d50a3a/System.Runtime.dll'.
    05-24 02:24:36.311 D/Mono( 9114) : Assembly Loader probing location: '/storage/emulated/0/Android/data/xxx.Droid/files/.__override__/System.Runtime.dll'.

Кажется, что он пытается найти более старую версию System.Runtime.Я добавил bindingRedirect в app.conig.Не повезло с этим: удаление всех зависимых сборок тоже не помогает.Моя версия System.Runtime: 4.3.0

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.2.2.0" newVersion="1.2.2.0" />
        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.3.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

При работе в режиме Release с «Sdk Assemblies Only» в журнале появилось следующее сообщение (извините за невозможность скопироватьэто как текст, но только снимок экрана):

enter image description here

Это больше похоже на связь со ссылками.У меня есть стандартный LinkerPleaseInclude со всеми свойствами и методами, которые были связаны в моем xml, указанном.Тем не менее, приложение падает на заставке, прежде чем достигнет моего собственного кода.Это код моего заставки, только один нетронутый клон из образца.

namespace xxx.Droid
{
    [Activity(
        Label = "xxx.Droid"
        , MainLauncher = true
        , Icon = "@drawable/icon"
        , Theme = "@style/Theme.Splash"
        , NoHistory = true
        , ScreenOrientation = ScreenOrientation.Portrait)]

    public class SplashScreen : MvxSplashScreenActivity
    {
        public SplashScreen()
            : base(Resource.Layout.splash_screen)
        {
        }
    }
}

В итоге,

У меня есть 3 вопроса прямо сейчас:

  1. BindingRedirect в режиме отладки не работает.Не удается запустить со связью в режиме отладки, что значительно усложняет решение проблем

  2. В режиме выпуска происходит сбой на заставке.Тем не менее, я не вижу, что отсутствует в журнале

  3. Есть ли какое-либо правило / подсказка из журнала, чтобы узнать, что должно быть включено в linkerpleaseinclude?

Большое спасибо за любую помощь

Ник

...