Application Lifecycle Management (ALM) with Xamarin apps
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
Xamarin enables you to build cross-platform mobile apps targeting Android, iOS, and Windows using C#, .NET, and Visual Studio. Xamarin allows a large portion of code to be shared between platforms, with only a small percentage needing to be platform-specific. For more information on Xamarin itself, see Visual Studio and Xamarin.
Developing apps for modern platforms involves many more activities than just writing code. These activities, referred to as DevOps (development + operations), span the app’s complete lifecycle and include planning and tracking work, designing and implementing code, managing a source code repository, running builds, managing continuous integrations and deployments, testing (including unit tests and UI tests), running various forms of diagnostics in both development and production environments, and monitoring app performance and user behaviors in real time through telemetry and analytics.
Visual Studio together with Visual Studio Team Services and Team Foundation Server provide a variety of DevOps capabilities, also referred to as Application Lifecycle Management or ALM. Many of these are wholly applicable to cross-platform projects.
This is especially true with Xamarin apps because they are built with C# and .NET, around which some ALM tools are built. Other tools, require tight integration with build and runtime environments. Because Xamarin apps run on non-Windows platforms and use the Mono implementation of .NET, Xamarin provides specialized tools for certain needs.
The tables below identifies which Visual Studio ALM features you can expect to work well with a Xamarin project, and which ones have limitations. Refer to the linked documentation for details on the features themselves.
Agile tools
Reference link: Work (using Visual Studio Team Services or TFS, including Team Explorer Everywhere)
General Comment: all planning and tracking features are independent of project type and coding languages.
Feature | Supported with Xamarin | Additional Comments |
---|---|---|
Manage backlogs and sprints | Yes | |
Work tracking | Yes | |
Team room collaboration | Yes | |
Kanban boards | Yes | |
Report and visualize progress | Yes |
Modeling
Reference link: Analyzing and Modeling Architecture
Design features are independent of coding language, or work with .NET languages like C#. See Roles of Architecture and Modeling Diagrams in Software Development for what aspects are related to code.
Feature | Supported with Xamarin | Additional Comments |
---|---|---|
Sequence diagrams | Yes | |
Dependency graphs | Yes | |
Call hierarchy | Yes | |
Class designer | Yes | |
Architecture explorer | Yes | |
UML diagrams (use case, activity, class, component, sequence, and DSL) | Yes | |
Layer diagrams | Yes | |
Layer validation | Yes |
Code
Feature | Supported with Xamarin | Additional Comments |
---|---|---|
Use Team Foundation Version Control or Visual Studio Team Services | Yes | |
Getting started with Git in Team Services | Yes | |
Code analysis/Improve code quality (references, suggested changes, etc.) | Yes | |
Find code changes and other history | Yes | Except across platform-specific boundaries where the implementation isn’t resolved until run time. |
Use code maps to debug your applications | Yes |
Build
Reference link: Build
Feature | Supported with Xamarin | Additional Comments |
---|---|---|
On-premises TFS server | Yes | Build machines must have Xamarin installed and can be linked to an OSX computer to build for iOS. See Configuring TFS for Xamarin (Xamarin website) |
On-premises build server linked to Visual Studio Team Services | Yes | See Build server for instructions. |
Hosted controller service of Visual Studio Team Services | Yes | See Build your Xamarin app. |
Build definitions with pre- and post-scripts | Yes | |
Continuous integration including gated check-ins | Yes | Gated check-ins for TFVC only as Git works on a pull-request model rather than check-ins. |
Testing
Reference link: Testing the application
Feature | Supported with Xamarin | Additional Comments |
---|---|---|
Planning tests, creating test cases and organizing test suites | Yes | |
Manual testing | Yes | |
Test Manager (record and playback tests) | Yes | Windows devices and Android emulators only from Visual Studio. Recording for all devices is possible with Xamarin Test Recorder. |
Code coverage | n/a | |
Unit Test Your Code | Yes | For Windows and Android targets, the built-in MSTest tools can be used. To run unit tests on Windows, Android, and iOS, Xamarin recommends NUnit. See Configuring TFS for Xamarin (Xamarin website). |
Use UI Automation To Test Your Code | Windows only | Visual Studio's UI test recorder is Windows only. For all platforms, see Xamarin Test Recorder. |
Improve code quality
Reference link: Improve Code Quality
Feature | Supported with Xamarin | Additional Comments |
---|---|---|
Analyzing Managed Code Quality | Yes | |
Finding Duplicate Code by using Code Clone Detection | Yes | |
Measuring Complexity and Maintainability of Managed Code | Yes | |
Performance Explorer | No | Use the Xamarin Profiler through Xamarin Studio instead. Note that the Xamarin Profiler is currently in preview and does not yet work for Windows targets. |
Analyze .NET Framework memory issues | No | Visual Studio tools do not have hooks into the Mono framework for profiling. |
Release management
Reference link: Automate deployments with Release Management
Feature | Supported with Xamarin | Additional Comments |
---|---|---|
Manage release processes | Yes | |
Deployment to servers for side-loading via scripts | Yes | |
Upload to app store | Partial | Extensions are available that can automate this process for some app stores. See Extensions for Visual Studio Team Services; for example, the extension for Google Play. |
Monitor with HockeyApp
Reference link: Monitor with HockeyApp
Feature | Supported with Xamarin | Additional Comments |
---|---|---|
Crash analytics, telemetry, and beta distribution | Yes |