Facilitating the spread of knowledge and innovation in professional software development



Choose your language

InfoQ Homepage News Mono for Android 4.0 Comes with Incremental Build and Deployment

Mono for Android 4.0 Comes with Incremental Build and Deployment


Mono for Android 4.0 comes with a VS plug-in, incremental build, incremental deployment, installer with all packages needed, Google Maps integration, and support for Java 7. Miguel de Icaza explains how incremental build and deployment works, and how much they help.

Xamarin has announced the release of Mono for Android 4.0, enabling .NET/C# developers to create applications for Android smartphones and tablets. This version supports all the new features introduced in Ice Cream Sandwich, and it comes with a number of new features:

  • A Visual Studio plug-in for Android development
  • An incremental builder which is reducing build times by 40%
  • Incremental deployment support reducing the deployment time “from minutes to seconds”
  • An installer that packages together all the pieces necessary for Android development on Mono: JDK, Android SDK, GTK#, MonoDevelop and Mono for Android.
  • Google Maps integration
  • Java 7 support

InfoQ has talked to Miguel de Icaza, CTO at Xamarin, to find out more details about this latest release of Mono for Android.

InfoQ: Would you like to detail a bit Xamarin's incremental build?

Miguel de Icaza: In the past, we treated the entire build process as an opaque box. Our new setup splits the build process in stages, and does this taking advantage of Microsoft's MSBuild compilation system. By partitioning the work and surfacing the internal workings of the build process the MSBuild tooling can only rebuild the components that are necessary (this also benefits from our new incremental uploading). The partitioning now handles code changes differently than code changes that require Java code to be generated and from changes to resources (artwork, audio, images, localization). This table shows the benefits of are the results of various scenarios, from full builds to incremental builds as measured using the sample JetBoy app:



First Build:



Code Changes:



Code Changes Requiring New Java Stubs:



Resource Changes:



InfoQ: What about incremental deployment? How does it work?

Miguel de Icaza: In the past, Mono for Android used the same pattern that Java on Android does when building applications for an Android device: we would build the software, package it all up and upload the result to the emulator or device for execution. In Mono's case during development we would upload the shared Mono runtime to the device, to avoid repeatedly uploading the same code over and over. But this still meant that every time the user made a change to his code, we compiled the code, packaged the code, signed the code, uploaded the package to Android, and asked Android to perform a package installation. This entire process can take a long time and can drive even the most Zen developer insane.

Our new fast development setup shortcuts this process at various points: only the modified code is recompiled, and only the modified code is uploaded to the device. We upload the resulting delta to Android, skipping packaging, skipping signing and skipping the request to Android to install the resulting package. Instead our new software packages are designed to be upgraded in-place. So only the first deployment goes through packaging and signing. Any subsequent builds merely get the changed code uploaded, reducing the turn-around time to deploy the software. This table shows the benefits based on the various scenarios as measured by the JetBoy sample app:


Fast Deployment

Full build and install:



No changes, build and install:



Resource change, build and install:



Code change, build and install:




InfoQ: What are the main advantages/disadvantages of developing using the VS plug-in vs. MonoDevelop?


Miguel de Icaza: The benefit of MonoDevelop is that it is bundled with the product, so it comes at no extra charge and developers can get started right away. But it does not have all the features that Visual Studio has.


Visual Studio is a very complete IDE, but to use it with Mono for Android, users need to get the Professional edition, the free Express edition does not work (since Express does not allow plugins). But if the user has Visual Studio, the entire set of tools that are part of VS are at their disposal, as well as a large set of plugins and extensions that developers typically use with it, including popular tools like Resharper and in many organizations it also gives them integration with their own bug tracking systems, source code repositories and other team facilities that are part of VS.


Many users really want VS for Resharper alone.


InfoQ: What is the status with Java 7?


Miguel de Icaza: Java 7 broke some programs, so we had to fix MonoTouch for Android to work on systems where the user had upgraded their Java installation to 7.0. We do not directly expose any Java 7 features, as C# is strictly a superset of Java, making our feature set already larger.

We need your feedback

How might we improve InfoQ for you

Thank you for being an InfoQ reader.

Each year, we seek feedback from our readers to help us improve InfoQ. Would you mind spending 2 minutes to share your feedback in our short survey? Your feedback will directly help us continually evolve how we support you.

Take the Survey

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • C# isn't _quite_ a strict superset of Java

    by Scott Blomquist,

    • C# isn't _quite_ a strict superset of Java

      by Scott Blomquist,

      Your message is awaiting moderation. Thank you for participating in the discussion.

      "as C# is strictly a superset of Java"

      As much as I love C#, I wouldn't go quite that far. I lust after Java's enums-can-be-custom-classes thing, for example. I'm sure there are a few others as well.

    • Re: Linux plan ?

      by Mathieu Roche,

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Opps, sorry for my last comments !
      If someone can delete or edit it, it will be nice. Thanks.

    • Re: C# isn't _quite_ a strict superset of Java

      by Jonathan Allen,

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Java enums can be represented as normal classes in C#. You don't get the nice syntax, but as far as the type system interoperability is concerned Java is still a subset of C#.

      With generics being erased, the only real difference left is how Java and C# handle overriding and shadowing methods.

    • Re: C# isn't _quite_ a strict superset of Java

      by Mark N,

      Your message is awaiting moderation. Thank you for participating in the discussion.

      C# is ok. The issue for me is VS.NET. Wish there was an Eclipse Plugin. (or Netbeans or ...)

    • Re: C# isn't _quite_ a strict superset of Java

      by Dan Tines,

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Try Monodevelop then, though if you're on Windows VS+Resharper is the obvious choice.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p


Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.