android – 2016-10-05安全补丁级别打破Nexus-9 Xamarin

在使用Xamarin Forms 2.3进行安全更新后,我的应用程序仅针对Nexus 9发生了以下崩溃.它适用于我的Pixel-C,三星S2,三星标签A和戴尔Venue这让我感到困惑.这仅发生在2016-10-05安全补丁之后.我有2个Nexus 9,并确认它在补丁之前正在工作.

任何帮助将不胜感激.

    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

最佳答案 你在你的应用程序中使用sqlite吗?在将其升级到Android 7.0后,我们的Nexus 9遭遇了类似的崩溃.原来,我们的自定义sqlite库没有包含64位文件.即使应用程序包含arm64-v8a选项,32位sqlite库也会强制应用程序加载armv7 / 32位库.

一旦我们使用64位libsqlite.so文件重建自定义sqlite库,并使用新的sqlite库重建应用程序,我们就不会再崩溃了.

另请查看Xamarin关于链接Android 7.0中的更改的本机库的帖子.
https://blog.xamarin.com/preparing-for-native-library-linking-changes-in-android-n/

点赞