越来越多的人去安装Visual Studio 2015,也会去试试其中的C#跨平台开发利器Xamarin,但是也会发现很多问题。
我相信我不会是唯一遇到以下问题的,也不会是最后一个,特此记录。
微软的VS2015会自带微软的模拟器(UPDATE1开始),VS Emulator for Android,本人一开始使用的是GOOGLE自带的模拟器,但是异常的卡,所以想尝试一下新的组合。
我相信会有不少人遇到XAMARIN与VSEA的兼容问题,这个最大的原因可能还在于HYPER-V本身的兼容性很差。
特此记录以下问题:
如果VISUAL BOX(例如GENYMOTION等模拟器)发生无法启动的情况或无法使用VT-X的情况时,一般是因为HYPER-V锁死了软件层的虚拟机应用指令集,解决方法彻底卸载VSEA以及卸载HYPER-V并重启。
如果遇到XAMARIN任何程序,在VSEA中一闪而过或无法调试,并报一下错误:
03-25 21:27:21.970 E/AndroidRuntime( 1590): FATAL EXCEPTION: main
03-25 21:27:21.970 E/AndroidRuntime( 1590): Process: App3.App3, PID: 1590
03-25 21:27:21.970 E/AndroidRuntime( 1590): java.lang.UnsatisfiedLinkError: Couldn‘t load monodroid from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/App3.App3-1.apk"],nativeLibraryDirectories=[/data/app-lib/App3.App3-1, /system/lib]]]: findLibrary returned null
03-25 21:27:21.970 E/AndroidRuntime( 1590): at java.lang.Runtime.loadLibrary(Runtime.java:358)
03-25 21:27:21.970 E/AndroidRuntime( 1590): at java.lang.System.loadLibrary(System.java:526)
或错误为:
03-25 21:25:31.928 W/monodroid( 1427): Trying to load sgen from: /storage/emulated/0/Android/data/App3.App3/files/.__override__/libmonosgen-2.0.so
03-25 21:25:31.928 W/monodroid( 1427): Trying to load sgen from: /data/app-lib/App3.App3-2/libmonosgen-2.0.so
03-25 21:25:31.928 W/monodroid( 1427): Trying to load sgen from: /data/data/App3.App3/files/.__override__/links/libmonosgen-2.0.so
03-25 21:25:31.928 W/monodroid-debug( 1427): Trying to initialize the debugger with options: --debugger-agent=transport=dt_socket,loglevel=0,address=127.0.0.1:8827,server=y,embedding=1
03-25 21:25:32.112 W/monodroid-debug( 1427): Accepted stdout connection: 43
03-25 21:25:32.888 D/Mono ( 1427): Image addref mscorlib[0xb8dd2010] -> mscorlib.dll[0xb8dd1350]: 1
03-25 21:25:32.892 D/Mono ( 1427): AOT module ‘mscorlib.dll.so‘ not found: dlopen failed: library "/data/app-lib/App3.App3-2/libaot-mscorlib.dll.so" not found
03-25 21:25:32.892 D/Mono ( 1427): AOT module ‘/Users/builder/data/lanes/2970/46c3f7e0/source/monodroid/builds/install/mono-x86/lib/mono/aot-cache/x86/mscorlib.dll.so‘ not found: dlopen failed: library "/data/app-lib/App3.App3-2/libaot-mscorlib.dll.so" not found
03-25 21:25:32.892 D/Mono ( 1427): Unloading image data-0x96699010 [0xb8dd20b0].
03-25 21:25:32.912 D/Mono ( 1427): Assembly mscorlib[0xb8dd2010] added to domain RootDomain, ref_count=1
而且发生无法调试的情况,基本上是因为虚拟机镜像以及HYPER-V本身的兼容问题,也可能是WIN10的问题,建议直接使用第三方的模拟器替代VSEA模拟器即可,此处推荐2个模拟器:GENYMOTION以及天天。
基本上使用GENYMOTION和XAMARIN的兼容是最好的,目前测试,毫无压力调试。
特此记录,以防出现类似问题。