Android Emulator For Xamarin On Execution Failed After Closing

-->

Bugzilla – Bug 28538 DebugAndroid application crashed as soon as it launches on device/Emulator Last modified: 2015-04-03 05:52:49 UTC.

XAML Hot Reload plugs into your existing workflow to increase your productivity and save you time. Without XAML Hot Reload, you have to build and deploy your app every time you want to see a XAML change. With Hot Reload, when you save your XAML file the changes are reflected live in your running app. In addition, your navigation state and data will be maintained, enabling you to quickly iterate on your UI without losing your place in the app. Therefore, with XAML Hot Reload, you'll spend less time rebuilding and deploying your apps to validate UI changes.

Note

  • Configure graphics acceleration in the AVD Manager. To configure graphics acceleration for an AVD, follow these steps: Open the AVD Manager. Create a new AVD or edit an existing AVD. On the Verify Configuration page, find the Emulated Performance section. Select a value for the Graphics: option.
  • Jun 03, 2021 If so, open your Android project and try to deploy to the emulator. If it works, you can then close the emulator and the Android Virtual Device (AVD) Manager. To see if just launching your project without an emulator already open works, just deploy your project again after closing the AVD Manager and the emulator.

If you're writing a native UWP or WPF app, not using Xamarin.Forms, see XAML Hot Reload for UWP and WPF.

System requirements

IDE/FrameworkMinimum Version Required
Visual Studio 201916.9 for changes only mode, 16.4 for full page mode
Visual Studio 2019 for Mac8.9 for changes only mode, 8.4 for full page mode
Xamarin.Forms5.0.0.2012 for changes only mode; 4.1 for full page mode

Enable XAML Hot Reload for Xamarin.Forms

If you are starting from a template, XAML Hot Reload is on by default and the project is configured to work with no additional setup. Debug your Android, iOS, or UWP app on an emulator or physical device and change your XAML to trigger a XAML Hot Reload.

If you're working from an existing Xamarin.Forms solution, no additional installation is required to use XAML Hot Reload, but you might have to double check your configuration to ensure the best experience. First, enable it in your IDE settings:

  • On Windows, check the Enable XAML Hot Reload checkbox (and the required platforms) at Tools > Options > Debugging > Hot Reload.
    • In earlier versions of Visual Studio 2019, the checkbox is at Tools > Options > Xamarin > Hot Reload.
  • On Mac, check the Enable Xamarin Hot Reload checkbox at Visual Studio > Preferences > Tools for Xamarin > XAML Hot Reload.
    • In earlier versions of Visual Studio for Mac, the checkbox is at Visual Studio > Preferences > Projects > Xamarin Hot Reload.

Then, in your Android and iOS build settings, check that the Linker is set to 'Don't Link' or 'Link None'. To use XAML Hot Reload with a physical iOS device, you also have to check Enable the Mono interpreter (Visual Studio 16.4 and above) or add --interpreter to your Additional mtouch args (Visual Studio 16.3 and below).

You can use the following flowchart to check your existing project's setup for use with XAML Hot Reload:

Hot Reload modes

XAML Hot Reload can work in two different modes - the newer changes only mode and the older full page mode.

From Visual Studio 16.9 and Visual Studio for Mac 8.9, the default behavior is for changes only mode to be used for all apps that use Xamarin.Forms 5.0 or newer. For older versions of Xamarin.Forms, full page mode is used. However, you can force use of full page mode for allapps in the Hot Reload IDE settings (Tools > Options > Debugging > Hot Reload on Windows or Visual Studio > Preferences > Tools for Xamarin > XAML Hot Reload on Mac).

Changes only mode parses the XAML to see exactly what changed when you make an edit, and sends just those changes to the running app. This is the same technology used for WPF and UWP Hot Reload. It preserves UI state, since it doesn't recreate the UI for the full page, just updating changed properties on controls affected by edits. Changes only mode also enables use of the Live Visual Tree.

By default, with changes only mode you don't need to save your file to see the changes - updates are applied immediately, as you type.However, you can change this behavior to update only on file save. This can be accomplished by checking the Apply XAML Hot Reload on document save checkbox (currently only available on Windows) in the Hot Reload IDE settings. Only updating on document save can sometimes be useful if you make bigger XAML updates and don't wish them to be displayed until they are complete.

Full page mode sends the full XAML file to the running app after you makes edits and save. The running app then reloads the page, recreating its controls - you'll see the UI refresh.

Changes only mode is the future of Hot Reload and we recommend using it whenever possible. It's fast, preserves UI state, and supports Live Visual Tree. Full page mode is still provided for apps that haven't yet been updated to Xamarin.Forms 5.0.

Note

You'll need to restart the debug session when switching modes.

XAML errors

Changes only mode: If you make a change the Hot Reload XAML parser sees as invalid, it will showthe error underlined in the editor and include it in the errors window. These Hot Reload errors have an error code starting with 'XHR' (for XAML Hot Reload). If there are any such errors on the page, Hot Reloadwon't apply changes, even if made on other parts of the page. Fix all the errors for Hot Reload to start working again for the page.

Full page mode: If you make a change that XAML Hot Reload can't reload, it will showthe error underlined in the editor and include it in the errors window. These changes, known as rude edits, include mistyping your XAML or wiring a control to an event handler that doesn't exist. Even with a rude edit, you can continue to reload without restarting the app - make another change elsewhere in the XAML file and hit save. The rude edit won't be reloaded, but your other changes will continue to be applied.

Reload on multiple platforms at once

XAML Hot Reload supports simultaneous debugging in Visual Studio and Visual Studio for Mac. You can deploy an Android and an iOS target at the same time to see your changes reflected on both platforms at once. To debug on multiple platforms, see:

  • WindowsHow To: Set multiple startup projects
  • MacSet multiple startup projects

Known limitations

  • Xamarin.Forms targets beyond Android, iOS, and UWP (for example, macOS) aren't currently supported.
  • Use of [XamlCompilation(XamlCompilationOptions.Skip)], disabling XAML compilation, isn't supported and can cause issues with the Live Visual Tree.
  • You can't add, remove, or rename files or NuGet packages during a XAML Hot Reload session. If you add or remove a file or NuGet package, rebuild and redeploy your app to continue using XAML Hot Reload.
  • Set your linker to Don't Link or Link None for the best experience. The Link SDK only setting works most of the time, but it may fail in certain cases. Linker settings can be found in your Android and iOS build options.
  • Debugging on a physical iPhone requires the interpreter to use XAML Hot Reload. To do this, open the project settings, select the iOS Build tab, and ensure Enable the Mono interpreter setting is enabled. You may need to change the Platform option at the top of the property page to iPhone.
  • XAML Hot Reload can't reload C# code, including event handlers, custom controls, page code-behind, and additional classes.

Troubleshooting

  • Bring up the XAML Hot Reload output to see status messages, which can help in troubleshooting:
    • Windows: bring up Output with View > Output and select Xamarin Hot Reload under Show output from: at the top
    • Mac: hover over XAML Hot Reload in the status bar to show that pad
  • If XAML Hot Reload fails to initialize:
    • Update your Xamarin.Forms version.
    • Ensure you are on the latest version of the IDE.
    • Set your Android or iOS Linker settings to Don't Link in the project's build settings.
  • If nothing happens upon saving your XAML file, ensure that XAML Hot Reload is enabled in the IDE.
  • If you're debugging on a physical iPhone and your app becomes unresponsive, check that the interpreter is enabled. To turn it on, check Enable the Mono interpreter (Visual Studio 16.4/8.4 and up) or add --interpreter to the Additional mtouch arguments field (Visual Studio 16.3/8.3 and prior) in your iOS Build settings.

To report a bug, use Help > Send Feedback > Report a Problem on Windows, and Help > Report a Problem on Mac.

Related links

-->

This article describes the most common warning messages and issuesthat occur while configuring and running the Android Emulator. Inaddition, it describes solutions for resolving these errors as well asvarious troubleshooting tips to help you diagnose emulator problems.

Deployment issues on Windows

Some error messages may be displayed by the emulator when you deployyour app. The most common errors and solutions are explained here.

Deployment errors

If you see an error about a failure to install the APK on the emulatoror a failure to run the Android Debug Bridge (adb), verify that theAndroid SDK can connect to your emulator. To verify emulatorconnectivity, use the following steps:

  1. Launch the emulator from the Android Device Manager (selectyour virtual device and click Start).

  2. Open a command prompt and go to the folder where adb isinstalled. If the Android SDK is installed at its default location,adb is located atC:Program Files (x86)Androidandroid-sdkplatform-toolsadb.exe;if not, modify this path for the location of the Android SDK on yourcomputer.

  3. Type the following command:

  4. If the emulator is accessible from the Android SDK, the emulatorshould appear in the list of attached devices. For example:

  5. If the emulator does not appear in this list, start the AndroidSDK Manager, apply all updates, then try launching theemulator again.

MMIO access error

If the message An MMIO access error has occurred is displayed,restart the emulator.

Missing Google Play Services

If the virtual device you are running in the emulator does not haveGoogle Play Services or Google Play Store installed, this condition isoften caused by creating a virtual device without including thesepackages. When you create a virtual device (seeManaging Virtual Devices with the Android Device Manager),be sure to select one or both of the following options:

  • Google APIs – includes Google Play Services in the virtual device.
  • Google Play Store – includes Google Play Store in the virtual device.

For example, this virtual device will include Google Play Services and Google Play Store:

Note

Google Play Store images are available only for some base device types suchas Pixel, Pixel 2, Nexus 5, and Nexus 5X.

Performance issues

Performance issues are typically caused by one of the following problems:

  • The emulator is running without hardware acceleration.

  • The virtual device running in the emulator is not using an x86-based system image.

The following sections cover these scenarios in more detail.

Hardware acceleration is not enabled

If hardware acceleration is not enabled, starting a virtual device fromthe Device Manager will produce a dialog with an error messageindicating that the Windows Hypervisor Platform (WHPX) is notconfigured properly:

If this error message is displayed, seeHardware acceleration issues below for steps youcan take to verify and enable hardware acceleration.

Acceleration is enabled but the emulator runs too slowly

A common cause for this problem is not using an x86-based image in yourvirtual device (AVD). When you create a virtual device (seeManaging Virtual Devices with the Android Device Manager),be sure to select an x86-based system image:

Hardware acceleration issues

Whether you are using Hyper-V or HAXM for hardware acceleration, youmay run into configuration problems or conflicts with other software onyour computer. You can verify that hardware acceleration is enabled(and which acceleration method the emulator is using) by opening acommand prompt and entering the following command:

This command assumes that the Android SDK is installed at the defaultlocation of C:Program Files (x86)Androidandroid-sdk; if not,modify the above path for the location of the Android SDK on yourcomputer.

Hardware acceleration not available

If Hyper-V is available, a message like the following example will bereturned from the emulator-check.exe accel command:

If HAXM is available, a message like the following example will bereturned:

If hardware acceleration is not available, a message like the followingexample will be displayed (the emulator looks for HAXM if it is unableto find Hyper-V):

If hardware acceleration is not available, seeAccelerating with Hyper-Vto learn how to enable hardware acceleration on your computer.

Incorrect BIOS settings

If the BIOS has not been configured properly to support hardwareacceleration, a message similar to the following example will bedisplayed when you run the emulator-check.exe accel command:

To correct this problem, reboot into your computer's BIOS and enable thefollowing options:

  • Virtualization Technology (may have a different label depending on motherboard manufacturer).
  • Hardware Enforced Data Execution Prevention.

If hardware acceleration is enabled and the BIOS is configuredproperly, the emulator should run successfully with hardware acceleration.However, problems may still result due to issues that are specific toHyper-V and HAXM, as explained next.

Hyper-V issues

In some cases, enabling both Hyper-V and Windows HypervisorPlatform in the Turn Windows features on or off dialog may notproperly enable Hyper-V. To verify that Hyper-V is enabled, use thefollowing steps:

  1. Enter powershell in the Windows search box.

  2. Right-click Windows PowerShell in the search results and selectRun as administrator.

  3. In the PowerShell console, enter the following command:

    If Hyper-V is not enabled, a message similar to the following example will bedisplayed to indicate that the state of Hyper-V is Disabled:

  4. In the PowerShell console, enter the following command:

    If the Hypervisor is not enabled, a message similar to the following example will bedisplayed to indicate that the state of HypervisorPlatform is Disabled:

If Hyper-V and/or HypervisorPlatform are not enabled, use the followingPowerShell commands to enable them:

After these commands complete, reboot.

For more information about enabling Hyper-V (including techniques forenabling Hyper-V using the Deployment Image Servicing and Managementtool), seeInstall Hyper-V.

HAXM issues

HAXM issues are often the result of conflicts with other virtualizationtechnologies, incorrect settings, or an out-of-date HAXM driver.

HAXM process is not running

If HAXM is installed, you can verify that the HAXM process is runningby opening a command prompt and entering the following command:

If the HAXM process is running, you should see output similarto the following result:

If STATE is not set to RUNNING, seeHow to Use the Intel Hardware Accelerated Execution Manager to resolve the problem.

HAXM virtualization conflicts

HAXM can conflict with other technologies that use virtualization,such as Hyper-V, Windows Device Guard, and some antivirus software:

  • Hyper-V – If you are using a version of Windows before theWindows 10 April 2018 update (build 1803) and Hyper-V is enabled,follow the steps in Disabling Hyper-V so thatHAXM can be enabled.

  • Device Guard – Device Guard and Credential Guard canprevent Hyper-V from being disabled on Windows machines. To disableDevice Guard and Credential Guard, seeDisabling Device Guard.

  • Antivirus Software – If you are running antivirus softwarethat uses hardware-assisted virtualization (such as Avast), disableor uninstall this software, reboot, and retry the Androidemulator.

After

Incorrect BIOS settings

If you are using HAXM on a Windows PC, HAXM will not work unlessvirtualization technology (Intel VT-x) is enabled in the BIOS. If VT-xis disabled, you will get an error similar to the following when youattempt to start the Android Emulator:

This computer meets the requirements for HAXM, but IntelVirtualization Technology (VT-x) is not turned on.

To correct this error, boot the computer into the BIOS, enable bothVT-x and SLAT (Second-Level Address Translation), then restart thecomputer back into Windows.

Disabling Hyper-V

If you are using a version of Windows before the Windows 10April 2018 Update (build 1803) and Hyper-V is enabled, you must disableHyper-V and reboot your computer to install and use HAXM. If youare using Windows 10 April 2018 Update (build 1803) or later, AndroidEmulator version 27.2.7 or later can use Hyper-V (instead of HAXM) forhardware acceleration, so it is not necessary to disable Hyper-V.

You can disable Hyper-V from the Control Panel by following thesesteps:

  1. Enter windows features in the Windowssearch box and select Turn Windows features on or off inthe search results.

  2. Uncheck Hyper-V:

  3. Restart the computer.

Alternately, you can use the following PowerShell command to disablethe Hyper-V Hypervisor:

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor

Intel HAXM and Microsoft Hyper-V cannot both be active at the sametime. Unfortunately, there is no way to switch between Hyper-Vand HAXM without restarting your computer.

In some cases, using the above steps will not succeed in disablingHyper-V if Device Guard and Credential Guard are enabled. If you areunable to disable Hyper-V (or it seems to be disabled but HAXMinstallation still fails), use the steps in the next section to disableDevice Guard and Credential Guard.

Disabling Device Guard

Device Guard and Credential Guard can prevent Hyper-V from beingdisabled on Windows machines. This situation is often a problem fordomain-joined machines that are configured and controlled by an owningorganization. On Windows 10, use the following steps to see if DeviceGuard is running:

  1. Enter System info in the Windows search box and selectSystem Information in the search results.

  2. In the System Summary, look to see if Device GuardVirtualization based security is present and is in the Runningstate:

If Device Guard is enabled, use the following steps to disable it:

  1. Ensure that Hyper-V is disabled (under Turn Windows Featureson or off) as described in the previous section.

  2. In the Windows Search Box, enter gpedit.msc and select the Editgroup policy search result. These steps launch the Local GroupPolicy Editor.

  3. In the Local Group Policy Editor, navigate to ComputerConfiguration > Administrative Templates > System > Device Guard:

  4. Change Turn On Virtualization Based Security to Disabled (asshown above) and exit the Local Group Policy Editor.

  5. In the Windows Search Box, enter cmd. When Command Prompt appearsin the search results, right-click Command Prompt and selectRun as Administrator.

  6. Copy and paste the following commands into the command prompt window(if drive Z: is in use, pick an unused drive letter to useinstead):

  7. Restart your computer. On the boot screen, you should see a prompt similar tothe following message:

    Do you want to disable Credential Guard?

    Press the indicated key to disable Credential Guard as prompted.

  8. After the computer reboots, check again to ensure that Hyper-V isdisabled (as described in the previous steps).

If Hyper-V is still not disabled, the policies of your domain-joinedcomputer may prevent you from disabling Device Guard or CredentialGuard. In this case, you can request an exemption from your domainadministrator to allow you to opt out of Credential Guard. Alternately,you can use a computer that is not domain-joined if you must use HAXM.

Additional troubleshooting tips

The following suggestions are often helpful in diagnosing Androidemulator issues.

Starting the emulator from the command line

If the emulator is not already running, you can start it from thecommand line (rather than from within Visual Studio) to view itsoutput. Typically, Android emulator AVD images are stored at thefollowing location (replace username with your Windows user name):

C:Usersusername.androidavd

You can launch the emulator with an AVD image from this location bypassing in the folder name of the AVD. For example, this command launchesan AVD named Pixel_API_27:

This example assumes that the Android SDK is installed at the defaultlocation of C:Program Files (x86)Androidandroid-sdk; if not,modify the above path for the location of the Android SDK on yourcomputer.

When you run this command, it will produce many lines of output whilethe emulator starts up. In particular, lines such as the followingexample will be printed if hardware acceleration is enabled and workingproperly (in this example, HAXM is used for hardware acceleration):

Viewing Device Manager logs

Often you can diagnose emulator problems by viewing the Device Managerlogs. These logs are written to the following location:

C:UsersusernameAppDataLocalXamarinLogs16.0

You can view each DeviceManager.log file by using a texteditor such as Notepad. The following example log entry indicates thatHAXM was not found on the computer:

Android Emulator For Xamarin On Execution Failed After Closing

Deployment issues on macOS

Some error messages may be displayed by the emulator when you deployyour app. The most common errors and solutions are explained below.

Deployment errors

If you see an error about a failure to install the APK on the emulatoror a failure to run the Android Debug Bridge (adb), verify that theAndroid SDK can connect to your emulator. To verify connectivity, usethe following steps:

Android Emulator For Xamarin On Execution Failed After Closing Time

  1. Launch the emulator from the Android Device Manager (selectyour virtual device and click Start).

  2. Open a command prompt and go to the folder where adb isinstalled. If the Android SDK is installed at its default location,adb is located at~/Library/Developer/Xamarin/android-sdk-macosx/platform-tools/adb;if not, modify this path for the location of the Android SDK on yourcomputer.

  3. Type the following command:

  4. If the emulator is accessible from the Android SDK, the emulatorshould appear in the list of attached devices. For example:

  5. If the emulator does not appear in this list, start the AndroidSDK Manager, apply all updates, then try launching theemulator again.

MMIO access error

If An MMIO access error has occurred is displayed,restart the emulator.

Missing Google Play Services

If the virtual device you are running in the emulator does not haveGoogle Play Services or Google Play Store installed, this condition isusually caused by creating a virtual device without including thesepackages. When you create a virtual device (seeManaging Virtual Devices with the Android Device Manager),be sure to select one or both of the following:

  • Google APIs – includes Google Play Services in the virtual device.
  • Google Play Store – includes Google Play Store in the virtual device.

For example, this virtual device will include Google Play Services and Google Play Store:

Note

Google Play Store images are available only for some base device types suchas Pixel, Pixel 2, Nexus 5, and Nexus 5X.

Performance issues

Performance issues are typically caused by one of the following problems:

  • The emulator is running without hardware acceleration.

  • The virtual device running in the emulator is not using an x86-based system image.

The following sections cover these scenarios in more detail.

Hardware acceleration is not enabled

If hardware acceleration is not enabled, a dialog may pop up with amessage such as device will run unaccelerated when you deploy yourapp to the Android emulator. If you are not certain whether hardwareacceleration is enabled on your computer (or you would like to knowwhich technology is providing the acceleration), seeHardware acceleration issues below for steps you cantake to verify and enable hardware acceleration.

Android Emulator For Xamarin On Execution Failed After Closing Time

Acceleration is enabled but the emulator runs too slowly

A common cause for this problem is not using an x86-based image in yourvirtual device. When you create virtual device (seeManaging Virtual Devices with the Android Device Manager),be sure to select an x86-based system image:

Hardware acceleration issues

Whether you are using the Hypervisor Framework or HAXM for hardwareacceleration of the emulator, you may run into problems caused byinstallation issues or an out-of-date version of macOS. The followingsections can help you resolve this issue.

Closing

Hypervisor Framework issues

If you are using macOS 10.10 or later on a newer Mac, the Androidemulator will automatically use the Hypervisor Framework for hardwareacceleration. However, some older Macs or Macs running a version ofmacOS earlier than 10.10 may not provide Hypervisor Framework support.

To determine whether or not your Mac supports the Hypervisor Framework,open a Terminal and enter the following command:

If your Mac supports the Hypervisor Framework, the above command willreturn the following result:

If the Hypervisor Framework is not available on your Mac, you canfollow the steps in Accelerating with HAXMto use HAXM for acceleration instead.

HAXM issues

If the Android Emulator does not start properly, this problem is oftencaused by problems with HAXM. HAXM issues are often the result ofconflicts with other virtualization technologies, incorrect settings,or an out-of-date HAXM driver. Try reinstalling the HAXM driver, usingthe steps detailed inInstalling HAXM.

Additional troubleshooting tips

The following suggestions are often helpful in diagnosing Androidemulator issues.

Starting the emulator from the command line

If the emulator is not already running, you can start it from thecommand line (rather than from within Visual Studio for Mac) to viewits output. Typically, Android emulator AVD images are stored at thefollowing location:

~/.android/avd

You can launch the emulator with an AVD image from this location bypassing in the folder name of the AVD. For example, this commandlaunches an AVD named Pixel_2_API_28:

If the Android SDK is installed at its default location, the emulatoris located in the~/Library/Developer/Xamarin/android-sdk-macosx/emulator directory;if not, modify this path for the location of the Android SDK on yourMac.

When you run this command, it will produce many lines of output whilethe emulator starts up. In particular, lines such as the followingexample will be printed if hardware acceleration is enabled and workingproperly (in this example, Hypervisor Framework is used for hardwareacceleration):

Android emulator for xamarin on execution failed after closing game

Viewing Device Manager logs

Often you can diagnose emulator problems by viewing the Device Managerlogs. These logs are written to the following location:

~/Library/Logs/XamarinDeviceManager

You can view each Android Devices.log file by double-clicking it toopen it in the Console app. The following example log entry indicatesthat HAXM was not found: