Xamarin.android 通过JNI在MonoDroid应用程序中调用UAirship.takeOff后引发异常

Xamarin.android 通过JNI在MonoDroid应用程序中调用UAirship.takeOff后引发异常,xamarin.android,Xamarin.android,当我调用UAirship.takeOff时,我收到一个unsafeedlinkerror异常。我的应用程序使用Android的Mono,我通过JNI调用UAirship.takeOff。我将调用城市飞艇库中的其他方法,JNI很好,但起飞似乎有问题。下面是来自DDMS的日志信息 07-06 11:48:01.152: DEBUG/CHRWtrucker - UALib(12833): Airship Take Off! Lib Version: 1.0.1 / App key = ********

当我调用UAirship.takeOff时,我收到一个unsafeedlinkerror异常。我的应用程序使用Android的Mono,我通过JNI调用UAirship.takeOff。我将调用城市飞艇库中的其他方法,JNI很好,但起飞似乎有问题。下面是来自DDMS的日志信息

07-06 11:48:01.152: DEBUG/CHRWtrucker - UALib(12833): Airship Take Off! Lib Version: 1.0.1 / App key = ********************* / secret = ********************
07-06 11:48:01.152: DEBUG/CHRWtrucker - UALib(12833): In Production? false
07-06 11:48:01.180: DEBUG/CHRWtrucker - UALib(12833): Initializing Push.
07-06 11:48:01.207: DEBUG/dalvikvm(12833): GC_FOR_MALLOC freed 9436 objects / 465360 bytes in 26ms
07-06 11:48:01.215: DEBUG/CHRWtrucker - UALib(12833): Initializing Analytics.
07-06 11:48:01.215: INFO/ActivityManager(2479): Start proc net.chrobinson.ecommerce.chrwtrucker:com.urbanairship.push.process for service net.chrobinson.ecommerce.chrwtrucker/com.urbanairship.push.PushService: pid=12850 uid=10053 gids={3003, 1015}
07-06 11:48:01.219: INFO/global(2479): Default buffer size used in BufferedInputStream constructor. It would be better to be explicit if an 8k buffer is required.
07-06 11:48:01.242: INFO/global(2479): Default buffer size used in BufferedInputStream constructor. It would be better to be explicit if an 8k buffer is required.
07-06 11:48:01.265: INFO/Zygote(12850): Zygote: pid 12850 has INTERNET permission, then set capability for CAP_NET_RAW
07-06 11:48:01.273: INFO/SplashScreenActivity(12833): onCreate
07-06 11:48:01.320: WARN/dalvikvm(12850): No implementation found for native Lmono/android/Runtime;.register (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)V
07-06 11:48:01.328: DEBUG/AndroidRuntime(12850): Shutting down VM
07-06 11:48:01.328: WARN/dalvikvm(12850): threadid=1: thread exiting with uncaught exception (group=0x4001d7d0)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850): FATAL EXCEPTION: main
07-06 11:48:01.332: ERROR/AndroidRuntime(12850): java.lang.UnsatisfiedLinkError: register
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at mono.android.Runtime.register(Native Method)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at chrobinson.ecommerce.chrwtrucker.CHRWtruckerApplication.onCreate(CHRWtruckerApplication.java:22)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4244)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at android.app.ActivityThread.access$3000(ActivityThread.java:125)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at android.os.Looper.loop(Looper.java:123)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at android.app.ActivityThread.main(ActivityThread.java:4627)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at java.lang.reflect.Method.invokeNative(Native Method)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at java.lang.reflect.Method.invoke(Method.java:521)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
07-06 11:48:01.332: ERROR/AndroidRuntime(12850):     at dalvik.system.NativeStart.main(Native Method)
07-06 11:48:01.336: INFO/(2479): dumpmesg > /data/log/dumpstate_app_error.log

我在UrbanAirship的支持网站上问了这个问题,他们解决了。修复方法是从中删除android:process标记。这导致UrbanAirship的东西运行在另一个进程中,而目前Mono for Android无法很好地处理这个进程。我们在这个应用程序中使用多线程的运气不太好。