Practical .NET

Debugging Xamarin Android Apps

When it comes time to debug your Xamarin Android apps, you have several options. You can debug your application in an emulator or on your own smartphone. Your phone can be connected to your computer with either a USB cable or through WiFi.

This is a report on my experience and what has, in the end, worked for me. This is an area, however, where new releases (and whole new software packages) are coming out weekly. So, be aware: The recommendations in this column may already be out of date.

The Pain of Emulators
One option is to use the emulators delivered with the Android SDK. My experience with them has been that they are both slow and buggy.

You can speed them up either by downloading and installing Intel's Hardware Accelerated eXecution Manager (HAXM) or turning on Windows Hyper-V virtualization platform (assuming your processor and version of Windows support either). You'll need to pick one or the other but my experience has been that, with either, while the emulators ran faster, they were still slower than I was willing to live with ... and still buggy.

You're welcome to try them out, however. While HAXM is a download, Hyper-V comes with Windows but is turned off by default. To enable Hyper-V, you first need to type "Turn Windows Features On or Off" in the Start menu search bar to get to the Windows Features dialog. In that dialog, you need to check off both the entry for Hyper-V and (further down in the dialog) the entry for Windows Hypervisor Platform. With those two features enabled, your emulators should run in their own virtual machines (at least, that was my experience with Visual Studio 2017).

Both Google and Microsoft have released new emulators this summer (2018) but after much upgrading and fiddling around, I wasn't able to get them to work. I'm told that isn't unusual but your mileage may vary, of course.

Debugging on Your Own Hardware
As a result, my experience has been that it's just as easy to debug on a physical smartphone as on an emulator. To enable that, on the smartphone you want to use as your testbed, you must turn on developer mode (I have a link that describes how to turn that on coming up -- be patient). Turning on Developer mode gives you, in your phone's Settings screen, a new Developer's Settings option. In there, you must turn on USB debugging.

You can use Android Live Player to debug applications on your Android phone without having to plug your phone into your computer. Live Player does have limitations, however: As soon as I add SQLite to an application, for example, Live Player stops working (that behavior may have changed by the time you read this, of course).

What Works for Me
Because of that limitation, I use a USB connection between my phone and my development computer to handle debugging. To get that to work, it's probably not enough to just turn on Developer's Mode on your smartphone and plug your phone into your computer, at least the first time you try debugging.

To begin with, you should follow these steps (which include turning on Developer Mode on your Android phone). However, I found I also had to find my phone in Windows Device Manager (in Windows 10, your phone is listed under Portable Devices), right-click on it, and select the Update Driver option. I didn't actually need to replace my driver but my computer steadfastly ignored my phone until did this.

There is a WiFi option you can use here instead of a USB cable but, because I'm often at client's sites and my phone's IP address changes, I don't use it.

If you don't like having to constantly reach for your phone to see what's happening on its screen, take a look at Vysor. Vysor both mirrors your Android phone screen and lets you control it from your laptop screen. Vysor has an entry-level version for free but it's relatively cheap to own the full version outright. It also has a WiFi option ... which I don't use (see above).

I don't want to leave you with the impression that debugging Xamarin Android applications is "neither easy nor fun" -- it's actually relatively painless ... once you've got the right setup, of course. Getting to that part, however, can be "neither easy nor fun."

About the Author

Peter Vogel is a system architect and principal in PH&V Information Services. PH&V provides full-stack consulting from UX design through object modeling to database design. Peter tweets about his VSM columns with the hashtag #vogelarticles. His blog posts on user experience design can be found at http://blog.learningtree.com/tag/ui/.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube