Android MvvmCross Xamarin висит на заставке со ссылками - PullRequest
0 голосов
/ 12 сентября 2018

Я использую MvvmCross 6.1.2 с Xamarin Android.Со ссылками «SDK и пользовательские сборки» мои приложения зависают на заставке.В отличие от других проблем со связыванием, в журнале нет ошибок.Понятия не имею, как это исправить.

Нормальный поток процесса инициализации: Setup.InitializeFirstChance -> App.Initialize -> Setup.InitializeLastChance

То, что я могу определить до сих пор, является чем-то неправильныммежду App.Initialize и Setup.InitializeLastChance.Со связыванием приложение может работать до конца App.Initialize, но никогда не достигнет Setup.InitializeLastChance.

Я вложил 2 журнала ниже.Оба журнала записаны с конца App.Initialize.Первый - со ссылками до зависания приложения.Второй - отсутствие ссылок до начала Setup.InitializeLastChange.

Журнал со связью

09-12 15:23:40.260 V/MvvmCross.Core.MvxSetup( 7685): [Verbose] Setup: ViewModelTypeFinder start
Thread started: <Thread Pool> #12
09-12 15:23:40.292 D/Mono( 7685) : Assembly Ref addref a.Core[0xd727b560] -> Acr.UserDialogs[0xd727a9c0]: 3
09-12 15:23:40.294 D/Mono    ( 7685): Assembly Ref addref Acr.UserDialogs[0xd727a9c0] -> mscorlib[0xd727a180]: 73
09-12 15:23:40.295 D/Mono    ( 7685): Assembly Ref addref a.Core[0xd727b560] -> System.Core[0xc61b91e0]: 8
09-12 15:23:40.295 D/Mono    ( 7685): Assembly Ref addref a.Core[0xd727b560] -> Splat[0xd727bd40]: 2
09-12 15:23:40.295 D/Mono    ( 7685): Assembly Ref addref Splat[0xd727bd40] -> mscorlib[0xd727a180]: 74
09-12 15:23:40.298 D/Mono( 7685) : Image addref System.Xml[0xddd06500] -> System.Xml.dll[0xc1166000]: 2
09-12 15:23:40.299 D/Mono( 7685) : Prepared to set up assembly 'System.Xml' (System.Xml.dll)
09-12 15:23:40.299 D/Mono( 7685) : Assembly System.Xml[0xddd06500] added to domain RootDomain, ref_count= 1
09-12 15:23:40.300 D/Mono    ( 7685): AOT: image 'System.Xml.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Xml.dll.so" not found
09-12 15:23:40.300 D/Mono( 7685) : AOT: image '/usr/local/lib/mono/aot-cache/x86/System.Xml.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Xml.dll.so" not found
09-12 15:23:40.301 D/Mono( 7685) : Config attempting to parse: 'System.Xml.dll.config'.
09-12 15:23:40.301 D/Mono( 7685) : Config attempting to parse: '/usr/local/etc/mono/assemblies/System.Xml/System.Xml.config'.
09-12 15:23:40.301 D/Mono( 7685) : Assembly Ref addref a.Core[0xd727b560] -> System.Xml[0xddd06500]: 2Loaded assembly: System.Xml.dll[External]

09-12 15:23:40.301 D/Mono    ( 7685): Assembly Ref addref System.Xml[0xddd06500] -> mscorlib[0xd727a180]: 75
09-12 15:23:40.302 D/Mono    ( 7685): Assembly Ref addref a.Core[0xd727b560] -> Plugin.Permissions[0xd727b980]: 2
09-12 15:23:40.302 D/Mono    ( 7685): Assembly Ref addref Plugin.Permissions[0xd727b980] -> mscorlib[0xd727a180]: 76
09-12 15:23:40.302 D/Mono    ( 7685): Assembly Ref addref a.Core[0xd727b560] -> Plugin.InAppBilling.Abstractions[0xd727b620]: 3
09-12 15:23:40.302 D/Mono    ( 7685): Assembly Ref addref Plugin.InAppBilling.Abstractions[0xd727b620] -> mscorlib[0xd727a180]: 77
09-12 15:23:40.304 D/Mono    ( 7685): Assembly Ref addref a.Core[0xd727b560] -> MvvmCross.Plugin.Network[0xd727b440]: 2Loaded assembly: System.Net.Http.dll[External]
09-12 15:23:40.308 D/Mono    ( 7685): Image addref System.Net.Http[0xddd06680] -> System.Net.Http.dll[0xc1168300]: 2

09-12 15:23:40.308 D/Mono( 7685) : Prepared to set up assembly 'System.Net.Http' (System.Net.Http.dll)
09-12 15:23:40.308 D/Mono( 7685) : Assembly System.Net.Http[0xddd06680] added to domain RootDomain, ref_count= 1
09-12 15:23:40.310 D/Mono    ( 7685): AOT: image 'System.Net.Http.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Net.Http.dll.so" not found
09-12 15:23:40.310 D/Mono( 7685) : AOT: image '/usr/local/lib/mono/aot-cache/x86/System.Net.Http.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Net.Http.dll.so" not found
09-12 15:23:40.310 D/Mono( 7685) : Config attempting to parse: 'System.Net.Http.dll.config'.
09-12 15:23:40.310 D/Mono( 7685) : Config attempting to parse: '/usr/local/etc/mono/assemblies/System.Net.Http/System.Net.Http.config'.
09-12 15:23:40.310 D/Mono( 7685) : Assembly Ref addref a.Core[0xd727b560] -> System.Net.Http[0xddd06680]: 2
09-12 15:23:40.310 D/Mono    ( 7685): Assembly Ref addref System.Net.Http[0xddd06680] -> mscorlib[0xd727a180]: 78
09-12 15:23:40.310 D/Mono    ( 7685): Assembly Ref addref a.Core[0xd727b560] -> Newtonsoft.Json[0xd727b740]: 3
09-12 15:23:40.310 D/Mono    ( 7685): Assembly Ref addref Newtonsoft.Json[0xd727b740] -> System.Core[0xc61b91e0]: 9
09-12 15:23:40.310 D/Mono    ( 7685): Assembly Ref addref Newtonsoft.Json[0xd727b740] -> System[0xc61bbd00]: 12
09-12 15:23:40.345 V/MvvmCross.Core.MvxSetup( 7685): [Verbose] Setup: ViewsContainer start
09-12 15:23:40.348 V/MvvmCross.Core.MvxSetup( 7685): [Verbose] Setup: Views start

Журнал без связывания

09-12 15:33:28.200 V/MvvmCross.Core.MvxSetup( 8211): [Verbose] Setup: ViewModelTypeFinder start
09-12 15:33:28.210 D/Mono( 8211) : Assembly Ref addref a.Core[0xe8a8d920] -> Acr.UserDialogs[0xe8a8cd20]: 3
09-12 15:33:28.214 D/Mono    ( 8211): Assembly Ref addref Acr.UserDialogs[0xe8a8cd20] -> mscorlib[0xe8a8c480]: 70
09-12 15:33:28.215 D/Mono    ( 8211): Assembly Ref addref netstandard[0xddd05840] -> System.Core[0xc60af900]: 8
09-12 15:33:28.216 D/Mono( 8211) : Assembly Ref addref a.Core[0xe8a8d920] -> Splat[0xe8a8e280]: 2
09-12 15:33:28.216 D/Mono    ( 8211): Assembly Ref addref Splat[0xe8a8e280] -> mscorlib[0xe8a8c480]: 71
09-12 15:33:28.220 D/Mono( 8211) : Image addref System.Xml[0xddd065c0] -> System.Xml.dll[0xc1c03f00]: 2
09-12 15:33:28.220 D/Mono( 8211) : Prepared to set up assembly 'System.Xml' (System.Xml.dll)
09-12 15:33:28.220 D/Mono( 8211) : Assembly System.Xml[0xddd065c0] added to domain RootDomain, ref_count= 1
09-12 15:33:28.222 D/Mono    ( 8211): AOT: image 'System.Xml.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Xml.dll.so" not found
09-12 15:33:28.222 D/Mono( 8211) : AOT: image '/usr/local/lib/mono/aot-cache/x86/System.Xml.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Xml.dll.so" not found
09-12 15:33:28.223 D/Mono( 8211) : Config attempting to parse: 'System.Xml.dll.config'.Loaded assembly: System.Xml.dll[External]

09-12 15:33:28.223 D/Mono( 8211) : Config attempting to parse: '/usr/local/etc/mono/assemblies/System.Xml/System.Xml.config'.
09-12 15:33:28.223 D/Mono( 8211) : Assembly Ref addref netstandard[0xddd05840] -> System.Xml[0xddd065c0]: 2
09-12 15:33:28.223 D/Mono( 8211) : Assembly Ref addref System.Xml[0xddd065c0] -> mscorlib[0xe8a8c480]: 72
09-12 15:33:28.224 D/Mono    ( 8211): Assembly Ref addref a.Core[0xe8a8d920] -> Plugin.Permissions[0xe8a8dd40]: 2
09-12 15:33:28.224 D/Mono    ( 8211): Assembly Ref addref Plugin.Permissions[0xe8a8dd40] -> mscorlib[0xe8a8c480]: 73
09-12 15:33:28.224 D/Mono    ( 8211): Assembly Ref addref a.Core[0xe8a8d920] -> Plugin.InAppBilling.Abstractions[0xe8a8d9e0]: 3
09-12 15:33:28.227 D/Mono    ( 8211): Unloading image System.Runtime.dll[0xc1c04400].Loaded assembly: System.Net.Http.dll[External]

09-12 15:33:28.228 D/Mono( 8211) : Image addref System.Runtime[0xddd05a20] -> System.Runtime.dll[0xc60ec000]: 11
09-12 15:33:28.228 D/Mono( 8211) : Config attempting to parse: 'System.Runtime.dll.config'.
09-12 15:33:28.228 D/Mono( 8211) : Config attempting to parse: '/usr/local/etc/mono/assemblies/System.Runtime/System.Runtime.config'.
09-12 15:33:28.228 D/Mono( 8211) : Assembly Ref addref Plugin.InAppBilling.Abstractions[0xe8a8d9e0] -> System.Runtime[0xc60af660]: 9
09-12 15:33:28.229 D/Mono    ( 8211): Assembly Ref addref a.Core[0xe8a8d920] -> MvvmCross.Plugin.Network[0xe8a8d800]: 2
09-12 15:33:28.232 D/Mono    ( 8211): Image addref System.Net.Http[0xddd05a20] -> System.Net.Http.dll[0xc1c05d00]: 2
09-12 15:33:28.232 D/Mono( 8211) : Prepared to set up assembly 'System.Net.Http' (System.Net.Http.dll)
09-12 15:33:28.232 D/Mono( 8211) : Assembly System.Net.Http[0xddd05a20] added to domain RootDomain, ref_count= 1
09-12 15:33:28.233 D/Mono    ( 8211): AOT: image 'System.Net.Http.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Net.Http.dll.so" not found
09-12 15:33:28.234 D/Mono( 8211) : AOT: image '/usr/local/lib/mono/aot-cache/x86/System.Net.Http.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Net.Http.dll.so" not found
09-12 15:33:28.234 D/Mono( 8211) : Config attempting to parse: 'System.Net.Http.dll.config'.
09-12 15:33:28.234 D/Mono( 8211) : Config attempting to parse: '/usr/local/etc/mono/assemblies/System.Net.Http/System.Net.Http.config'.
09-12 15:33:28.234 D/Mono( 8211) : Assembly Ref addref netstandard[0xddd05840] -> System.Net.Http[0xddd05a20]: 2
09-12 15:33:28.234 D/Mono( 8211) : Assembly Ref addref System.Net.Http[0xddd05a20] -> mscorlib[0xe8a8c480]: 74
09-12 15:33:28.234 D/Mono    ( 8211): Assembly Ref addref a.Core[0xe8a8d920] -> Newtonsoft.Json[0xe8a8db00]: 3
09-12 15:33:28.256 V/MvvmCross.Core.MvxSetup( 8211): [Verbose] Setup: ViewsContainer start
09-12 15:33:28.259 V/MvvmCross.Core.MvxSetup( 8211): [Verbose] Setup: Views start
09-12 15:33:28.289 D/Mono( 8211) : Image addref System.Runtime.Serialization[0xddd05cc0] -> System.Runtime.Serialization.dll[0xc1c06700]: 2
Loaded assembly: System.Runtime.Serialization.dll[External]09-12 15:33:28.289 D/Mono( 8211) : Prepared to set up assembly 'System.Runtime.Serialization' (System.Runtime.Serialization.dll)

09-12 15:33:28.289 D/Mono( 8211) : Assembly System.Runtime.Serialization[0xddd05cc0] added to domain RootDomain, ref_count= 1
09-12 15:33:28.290 D/Mono    ( 8211): AOT: image 'System.Runtime.Serialization.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Runtime.Serialization.dll.so" not found
09-12 15:33:28.291 D/Mono( 8211) : AOT: image '/usr/local/lib/mono/aot-cache/x86/System.Runtime.Serialization.dll.so' not found: dlopen failed: library "/data/app/a.Droid-1/lib/x86/libaot-System.Runtime.Serialization.dll.so" not found
09-12 15:33:28.291 D/Mono( 8211) : Config attempting to parse: 'System.Runtime.Serialization.dll.config'.
09-12 15:33:28.291 D/Mono( 8211) : Config attempting to parse: '/usr/local/etc/mono/assemblies/System.Runtime.Serialization/System.Runtime.Serialization.config'.
09-12 15:33:28.291 D/Mono( 8211) : Assembly Ref addref Mono.Android[0xc60af600] -> System.Runtime.Serialization[0xddd05cc0]: 2
09-12 15:33:28.291 D/Mono    ( 8211): Assembly Ref addref System.Runtime.Serialization[0xddd05cc0] -> mscorlib[0xe8a8c480]: 75
09-12 15:33:28.395 V/MvvmCross.Core.MvxSetup( 8211): [Verbose] Setup: CommandCollectionBuilder start
09-12 15:33:28.396 V/MvvmCross.Core.MvxSetup( 8211): [Verbose] Setup: NavigationSerializer start
09-12 15:33:28.398 V/MvvmCross.Core.MvxSetup( 8211): [Verbose] Setup: InpcInterception start
09-12 15:33:28.399 V/MvvmCross.Core.MvxSetup( 8211): [Verbose] Setup: InpcInterception start
09-12 15:33:28.402 V/MvvmCross.Core.MvxSetup( 8211): [Verbose] Setup: LastChance start
09-12 15:33:28.433 D/Mono( 8211) : Assembly Ref addref a.Droid[0xe8a8c600] -> Plugin.LocalNotifications[0xe8a8dce0]: 2
09-12 15:33:28.433 D/Mono    ( 8211): Assembly Ref addref Plugin.LocalNotifications[0xe8a8dce0] -> mscorlib[0xe8a8c480]: 76
09-12 15:33:28.433 D/Mono    ( 8211): Assembly Ref addref Plugin.LocalNotifications[0xe8a8dce0] -> Plugin.LocalNotifications.Abstractions[0xe8a8dc80]: 2

Любая помощь высоко ценится.

Спасибо,

Ник

1 Ответ

0 голосов
/ 13 сентября 2018

Такие ситуации очень раздражают и очень трудно диагностировать ...

Прежде всего, я бы предложил использовать linker.config. Вы получите гораздо больший контроль над тем, что не следует связывать с ним - это тоже очень легко настроить.

Если у вас есть файл linker.config, я бы предложил попробовать настройку, которую я использую для одного из моих приложений:

<?xml version="1.0" encoding="utf-8"?>
<linker>   
    <assembly fullname="MvvmCross">
        <type fullname="MvvmCross.IoC.MvxPropertyInjector"/>
        <namespace fullname="MvvmCross.ViewModels" />
    </assembly>
    <assembly fullname="MvvmCross.Forms">
        <type fullname="MvvmCross.Forms.Platforms.Android.Views.MvxFormsAppCompatActivity"/>
    </assembly>
    <assembly fullname="MvvmCross.Droid.Support.V7.AppCompat">
        <type fullname="MvxAppCompatActivity"/>
    </assembly>
</linker>

В моем файле linker.config указано больше сборок, но я не уверен, насколько они актуальны в вашем случае. Пожалуйста, попробуйте добавить вышеперечисленное в ваш файл linker.config и проверьте, не возникают ли у вас проблемы.

Если ваше приложение продолжает умирать, то я склонен буквально перечислять все ваши сборки (ссылки на проекты) в файле компоновщика, например:

<assembly fullname="<Assembly_Name>">
    <type fullname="*"/>
</assembly>
<assembly fullname="<Assembly_2_Name>">
    <type fullname="*"/>
</assembly>

Я делаю это, потому что даже если вы думаете, что это MvvmCross, что вызывает проблемы, есть вероятность, что это может быть совершенно другая библиотека / сборка. Этот список, из всех сборок, в основном будет указывать компоновщику сохранять каждые Type в этих сборках (ничего не снимать!). Приложение должно нормально работать с ними. Как только это произойдет, вы начнете удалять сборки из списка. Вы можете сделать это один за другим или разбить его пополам и удалить первую или вторую половину - в основном начните устранять сборки. Когда вы сделаете это, вы можете захотеть удалить bin и obj, с каждым устранением всех сборок - просто чтобы быть уверенным, что dll повторно генерируются.

...