在Windows 10和VS2015 Android Emulator

时间:2016-07-06 21:17:16

标签: android xamarin visual-studio-2015 xamarin.forms emulation

试图解决这个问题一段时间但没有运气......

背景

我正在尝试通过Windows 10上的Visual Studio 2015(更新3)在Android模拟器中运行Xamarin.Forms应用程序。我安装了所有必需的Android SDK,并针对不同的模拟器运行,范围从4.4 Kitkat到6.0 Marshmellow和我得到了相同的结果。该应用程序使用Xamarin.Forms构建,其中的页面位于便携式C#/ XAML项目中。 #rd paty库FreshMVVM用于IOC和ViewModels

问题

该应用程序大多是第一次启动,但我通常需要在部署后等待20-30秒运行应用程序,否则应用程序会立即崩溃,但真正的问题是,当我到达第一页时,其上有一个按钮(导航到LoginPageModel),单击该按钮将使应用程序崩溃。在崩溃期间,logcat Android设备日志记录窗口打印出以下内容...(敏感信息被屏蔽)

我尝试过的事情:

  • 从LoginPageModel类中删除构造函数代码...无更改
  • 删除XAML。大多数工作,但经验不一致。可能与Xamarin表单控件有关吗?
  • 使用的Conrols是:ContentPage,Image,ContentView,StackLayout,Entry,Label,Switch,Button

    D / Mono(1585):Assembly Ref addref MyCompany [0xb7d43920] - > Xamarin.Insights [0xb7d3e690]:3 I / MyCompany.REALAPI(1585):构建ApiService。 I / MyCompany.LOGIN(1585):正在构造AuthenticationRepositoryService I / MyCompany.LOGIN(1585):实例化新的LoginPageModel。 D / DonatelloNative_Selector(134):删除fd 33的选择器 W / InputDispatcher(464):通道'a94e5108 com.mycompany.feature / md5bf4894c535574ee8d52747007a18ed49.SplashActivity(server)'〜消费者关闭输入通道或发生错误。事件= 0x9 D / DonatelloNative_Selector(134):删除fd 32的选择器 E / InputDispatcher(464):频道'a94e5108 com.mycompany.feature / md5bf4894c535574ee8d52747007a18ed49.SplashActivity(server)'〜频道无法恢复,将被丢弃! W / InputDispatcher(464):channel'a941cf20 com.mycompany.feature / md5bf4894c535574ee8d52747007a18ed49.MainActivity(server)'〜消费者关闭输入通道或发生错误。事件= 0x9 E / InputDispatcher(464):channel'a941cf20 com.mycompany.feature / md5bf4894c535574ee8d52747007a18ed49.MainActivity(server)'〜频道无法恢复,将被丢弃! W / InputDispatcher(464):尝试取消注册已经未注册的输入通道'a94e5108 com.mycompany.feature / md5bf4894c535574ee8d52747007a18ed49.SplashActivity(server)' W / InputDispatcher(464):尝试取消注册已注册的输入通道'a941cf20 com.mycompany.feature / md5bf4894c535574ee8d52747007a18ed49.MainActivity(server)' I / WindowState(464):胜利死亡:窗口{a94e5108 u0 com.mycompany.feature / md5bf4894c535574ee8d52747007a18ed49.SplashActivity} I / ActivityManager(464):进程com.mycompany.feature(pid 1585)已经死亡。 W / ActivityManager(464):强制删除ActivityRecord {a9308df8 u0 com.mycompany.feature / md5bf4894c535574ee8d52747007a18ed49.MainActivity t14}:app死了,没有保存状态 I / WindowState(464):胜利死亡:窗口{a941cf20 u0 com.mycompany.feature / md5bf4894c535574ee8d52747007a18ed49.MainActivity} D / Zygote(139):由信号(11)终止的过程1585 W / EGL_emulation(692):eglSurfaceAttrib未实现 W / Binder(631):从绑定存根实现中捕获RuntimeException。 W / Binder(631):java.lang.NullPointerException W / Binder(631):在android.inputmethodservice.IInputMethodWrapper.setSessionEnabled(IInputMethodWrapper.java:280) W / Binder(631):at com.android.internal.view.IInputMethod $ Stub.onTransact(IInputMethod.java:129) W / Binder(631):在android.os.Binder.execTransact(Binder.java:404) W / Binder(631):at dalvik.system.NativeStart.run(Native Method) W / InputMethodManagerService(464):得到RemoteException向pid发送setActive(false)通知1585 uid 10054

不确定它是否与Hyper-V,仿真器本身或第三方组件有关。 将应用程序作为Windows Universal应用程序运行正常。 运行Windows 8.1的其他机器也可以正常工作

1 个答案:

答案 0 :(得分:2)

通过更改模拟器的Hyper-V设置来实现此功能。

步骤:

  1. 打开Hyper-V管理器
  2. 在虚拟机列表下找到模拟器。
  3. 右键单击模拟器条目并打开它的设置。
  4. 如下图所示,请转到处理器>兼容性设置并确保"迁移到具有不同处理器版本的物理计算机"已检查
  5. enter image description here