2016-10-25 5 views
4

Я получаю следующий сбой в нашем приложении только для Nexus 9 после обновления безопасности с использованием Xamarin Forms 2.3. Он отлично работает для моих Pixel-C, Samsung S2, Samsung Tab A и Dell, которые меня смущают. Это произошло только после исправления безопасности 2016-10-05. У меня есть 2 Nexus 9 и подтвердил, что он работал до патча.2016-10-05 уровень исправления уровня безопасности Nexus-9 Xamarin

Любая помощь будет принята с благодарностью.

10-24 23:36:50.460 13310 13310 D Mono : Assembly Loader probing location: '/storage/emulated/0/Android/data/PlayerLync.AndroidLync/files/.__override__/System 
.Linq.dll'. 
10-24 23:36:50.461 13310 13310 D Mono : AOT module '/storage/emulated/0/Android/data/PlayerLync.AndroidLync/files/.__override__/System.Linq.dll.so' not found 
: dlopen failed: library "/data/app/PlayerLync.AndroidLync-1/lib/arm/libaot-System.Linq.dll.so" not found 
10-24 23:36:50.462 13310 13310 D Mono : AOT module '/Users/builder/data/lanes/3819/96c7ba6c/source/monodroid/builds/install/mono-armv7/lib/mono/aot-cache/arm 
/System.Linq.dll.so' not found: dlopen failed: library "/data/app/PlayerLync.AndroidLync-1/lib/arm/libaot-System.Linq.dll.so" not found 
10-24 23:36:50.462 13310 13310 D Mono : Assembly Ref addref Java.Interop[0xe98ed740] -> System.Linq[0xe98ed0e0]: 2 
10-24 23:36:50.462 13310 13310 D Mono : Image addref System.Core[0xe98edb60] -> System.Core.dll[0xc5350400]: 1 
10-24 23:36:50.463 13310 13310 D Mono : Assembly System.Core[0xe98edb60] added to domain RootDomain, ref_count=1 
10-24 23:36:50.464 13310 13310 D Mono : AOT module 'System.Core.dll.so' not found: dlopen failed: library "/data/app/PlayerLync.AndroidLync-1/lib/arm/libaot- 
System.Core.dll.so" not found 
10-24 23:36:50.465 13310 13310 D Mono : AOT module '/Users/builder/data/lanes/3819/96c7ba6c/source/monodroid/builds/install/mono-armv7/lib/mono/aot-cache/arm 
/System.Core.dll.so' not found: dlopen failed: library "/data/app/PlayerLync.AndroidLync-1/lib/arm/libaot-System.Core.dll.so" not found 
10-24 23:36:50.465 13310 13310 D Mono : Config attempting to parse: 'System.Core.dll.config'. 
10-24 23:36:50.465 13310 13310 D Mono : Config attempting to parse: '/Users/builder/data/lanes/3819/96c7ba6c/source/monodroid/builds/install/mono-armv7/etc/m 
ono/assemblies/System.Core/System.Core.config'. 
10-24 23:36:50.465 13310 13310 D Mono : Assembly Ref addref System.Linq[0xe98ed0e0] -> System.Core[0xe98edb60]: 2 
10-24 23:36:50.465 13310 13310 D Mono : Assembly Ref addref System.Core[0xe98edb60] -> mscorlib[0xdfbaa8a0]: 10 
10-24 23:36:50.469 13310 13310 D Mono : Assembly Ref addref Java.Interop[0xe98ed740] -> System.Reflection.Extensions[0xe98ed260]: 2 
10-24 23:36:50.469 13310 13310 D Mono : Assembly Ref addref System.Reflection.Extensions[0xe98ed260] -> mscorlib[0xdfbaa8a0]: 11 
10-24 23:36:50.483 13310 13310 D Mono : Assembly Ref addref Mono.Android[0xe98ed6e0] -> System.Core[0xe98edb60]: 3 
10-24 23:36:50.484 13310 13310 D Mono : DllImport searching in: '__Internal' ('(null)'). 
10-24 23:36:50.484 13310 13310 D Mono : Searching for 'monodroid_typemap_managed_to_java'. 
10-24 23:36:50.484 13310 13310 D Mono : Probing 'monodroid_typemap_managed_to_java'. 
10-24 23:36:50.484 13310 13310 D Mono : Found as 'monodroid_typemap_managed_to_java'. 
10-24 23:36:50.500 13310 13310 D Mono : DllImport searching in: '__Internal' ('(null)'). 
10-24 23:36:50.500 13310 13310 D Mono : Searching for 'java_interop_jnienv_alloc_object'. 
10-24 23:36:50.500 13310 13310 D Mono : Probing 'java_interop_jnienv_alloc_object'. 
10-24 23:36:50.500 13310 13310 D Mono : Found as 'java_interop_jnienv_alloc_object'. 
10-24 23:36:50.550 13310 13310 E mono-rt : Stacktrace: 
10-24 23:36:50.550 13310 13310 E mono-rt : 
10-24 23:36:50.550 13310 13310 E mono-rt : at <unknown> <0xffffffff> 
10-24 23:36:50.550 13310 13310 E mono-rt : at Android.Runtime.JNINativeWrapper.CreateDelegate (System.Delegate) <0x0014f> 
10-24 23:36:50.550 13310 13310 E mono-rt : at Java.Lang.Thread/IUncaughtExceptionHandlerInvoker.GetUncaughtException_Ljava_lang_Thread_Ljava_lang_Throwable_Ha 
ndler() <0x00093> 
10-24 23:36:50.550 13310 13310 E mono-rt : at Android.Runtime.JNIEnv.RegisterJniNatives (intptr,int,intptr,intptr,int) <0x006db> 
10-24 23:36:50.550 13310 13310 E mono-rt : at (wrapper runtime-invoke) <Module>.runtime_invoke_void_intptr_int_intptr_intptr_int (object,intptr,intptr,intptr) 
<0x00137> 
10-24 23:36:50.550 13310 13310 E mono-rt : at <unknown> <0xffffffff> 
10-24 23:36:50.550 13310 13310 E mono-rt : at (wrapper managed-to-native) Java.Interop.NativeMethods.java_interop_jnienv_alloc_object (intptr,intptr&,intptr) 
<0x00043> 
10-24 23:36:50.550 13310 13310 E mono-rt : at Java.Interop.JniEnvironment/Object.AllocObject (Java.Interop.JniObjectReference) <0x0004f> 
10-24 23:36:50.550 13310 13310 E mono-rt : at Java.Interop.JniType.AllocObject() <0x0003f> 
10-24 23:36:50.550 13310 13310 E mono-rt : at Java.Interop.JniPeerMembers/JniInstanceMethods.StartCreateInstance (string,System.Type,Java.Interop.JniArgumentV 
alue*) <0x000bb> 
10-24 23:36:50.550 13310 13310 E mono-rt : at Java.Lang.Object..ctor() <0x00093> 
10-24 23:36:50.550 13310 13310 E mono-rt : at Android.Runtime.UncaughtExceptionHandler..ctor (Java.Lang.Thread/IUncaughtExceptionHandler) <0x00017> 
10-24 23:36:50.550 13310 13310 E mono-rt : at Android.Runtime.JNIEnv.Initialize (Android.Runtime.JnienvInitializeArgs*) <0x00a6b> 
10-24 23:36:50.550 13310 13310 E mono-rt : at (wrapper runtime-invoke) <Module>.runtime_invoke_void_JnienvInitializeArgs* (object,intptr,intptr,intptr) <0x000 
cf> 
10-24 23:36:50.550 13310 13310 E mono-rt : 
10-24 23:36:50.550 13310 13310 E mono-rt : Attempting native Android stacktrace: 
10-24 23:36:50.550 13310 13310 E mono-rt : 
10-24 23:36:50.552 13310 13310 E mono-rt :  Could not unwind with `libunwind.so`: dlopen failed: library "/data/app/PlayerLync.AndroidLync-1/lib/arm/libunwi 
nd.so" not found 
10-24 23:36:50.552 13310 13310 E mono-rt :  Could not unwind with `libcorkscrew.so`: dlopen failed: library "/data/app/PlayerLync.AndroidLync-1/lib/arm/libc 
orkscrew.so" not found 
10-24 23:36:50.552 13310 13310 E mono-rt : 
10-24 23:36:50.552 13310 13310 E mono-rt :  No options left to get a native stacktrace :-(
10-24 23:36:50.552 13310 13310 E mono-rt : 
10-24 23:36:50.552 13310 13310 E mono-rt : ================================================================= 
10-24 23:36:50.552 13310 13310 E mono-rt : Got a SIGSEGV while executing native code. This usually indicates 
10-24 23:36:50.552 13310 13310 E mono-rt : a fatal error in the mono runtime or one of the native libraries 
10-24 23:36:50.552 13310 13310 E mono-rt : used by your application. 
10-24 23:36:50.552 13310 13310 E mono-rt : ================================================================= 
10-24 23:36:50.552 13310 13310 E mono-rt : 
10-24 23:36:50.552 13310 13310 F libc : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 13310 (ync.AndroidLync) 
10-24 23:36:50.553 184 184 W   : debuggerd: handling request: pid=13310 uid=10100 gid=10100 tid=13310 
10-24 23:36:50.618 13327 13327 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 
10-24 23:36:50.618 13327 13327 F DEBUG : Build fingerprint: 'google/volantis/flounder:7.0/NRD91D/3234828:user/release-keys' 
10-24 23:36:50.618 13327 13327 F DEBUG : Revision: '0' 
10-24 23:36:50.618 13327 13327 F DEBUG : ABI: 'arm' 
10-24 23:36:50.618 13327 13327 F DEBUG : pid: 13310, tid: 13310, name: ync.AndroidLync >>> PlayerLync.AndroidLync <<< 
10-24 23:36:50.618 13327 13327 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8 
10-24 23:36:50.619 13327 13327 F DEBUG :  r0 c5137dd8 r1 00004001 r2 00000000 r3 c5137de8 
10-24 23:36:50.619 13327 13327 F DEBUG :  r4 00000008 r5 e3df427c r6 00001f3c r7 00000004 
10-24 23:36:50.619 13327 13327 F DEBUG :  r8 00001f38 r9 00000004 sl c5137dd8 fp ffb6d1b8 
10-24 23:36:50.619 13327 13327 F DEBUG :  ip e3df42c0 sp ffb6d188 lr e3c242fc pc e3b96a60 cpsr 800e0010 
10-24 23:36:50.620 13327 13327 F DEBUG : 
10-24 23:36:50.620 13327 13327 F DEBUG : backtrace: 
10-24 23:36:50.620 13327 13327 F DEBUG :  #00 pc 000dda60 /data/app/Mono.Android.DebugRuntime-1/lib/arm64/libmonosgen-32bit-2.0.so 
10-24 23:36:50.837 589 13328 W ActivityManager: Force finishing activity PlayerLync.AndroidLync/md5872c6b6fe477e181c02853c0ea5fed3c.MainActivity 
10-24 23:36:50.846 184 184 W   : debuggerd: resuming target 13310 
+0

Я вижу, что она загружается 'armv7', делает ваш проект имеет' arm64-v8a' ABI выбран? (при условии, что это планшет Tegra-K1 на основе дракона, если это двухъядерная версия) – SushiHangover

+0

У меня есть все 5 вариантов, выбранных в разделе Поддерживаемые архитектуры. Это неправильно? –

+0

@DaveFriedel вы узнали, что вызвало этот крах? У меня абсолютно случайный сбой на Nexus 9 с * той же * stacktrace. –

ответ

1

Вы используете sqlite в своем приложении? Мы получили аналогичные сбои на нашем Nexus 9 после обновления до Android 7.0. Оказалось, что в нашей пользовательской библиотеке sqlite не было 64-битного файла. Несмотря на то, что приложение включает в себя параметр arm64-v8a, 32-разрядная библиотека sqlite заставляет приложение загружать библиотеки armv7/32-bit.

После того как мы перестроили пользовательскую библиотеку sqlite с 64-разрядным файлом libsqlite.so и перестроили приложение с помощью новой библиотеки sqlite, мы больше не получаем сбоев.

Пожалуйста, также проверьте сообщение от Xamarin о родной библиотеке, связывающей изменения в Android 7.0. https://blog.xamarin.com/preparing-for-native-library-linking-changes-in-android-n/

+1

'Как только мы перестроим пользовательскую библиотеку sqlite с 64-битным файлом libsqlite.so,' - Что это значит? В какой библиотеке вы использовали? – user1

1

У меня такая же проблема на Nexus 9 с Android 7.1. Вероятно, это проблема Xamarin.Android; включение АОТ сборок в csproj, по-видимому, фиксирует аварию:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    ...  
    <AotAssemblies>True</AotAssemblies> 
    ... 

</PropertyGroup> 
+0

Я только что увидел это - извините @ Николай. Я смог разрешить это, только разрешив «armeabi-v7a и arm64-v8a под расширенной вкладкой. Я считаю, что он пытался использовать 32-битную версию, перед которой XPlatform заявила выше. Примечание. Мне приходилось отслеживать случайные сбои, но это странно достаточно было получить доступ к фоновому загрузчику, который использует sqlite.Я тогда должен был написать свой собственный загрузчик, чтобы удалить эти сбои - весь этот кошмар был результатом изменений Nougat во внутренних библиотеках. –

+0

@DaveFriedel Интересно. 64-битные библиотеки в APK. Я знал, что приложение отлично работает на устройствах Nougat, но Nexus9. Самое странное, что этот сбой был абсолютно случайным. Только помощь AOT-сборок помогла мне. –

Смежные вопросы