Author Archives: migueldeicaza

Cross platform Contacts API

We have released a new preview of the Xamarin.Mobile API.

We have now introduced a cross-platform Contact API that gives developers access to the phone’s address book. This is what our stack looks like with the latest preview:

Download the XamarinMobileApiPreview.Zip and check out the updated Xamarin.Mobile API documentation.

This release contains MonoTouch and Mono for Android bindings, a future version will ship will add Windows Phone 7 support.

Help us plan what should be our next feature by filing out our API survey.


Holiday Season Beta Packages

To ensure that developers everywhere get the most out of their upcoming holidays, we have released to our Beta channel new versions of MonoTouch, MonoDevelop and Mono.

You can pick and choose which components you want to try out, they can be installed independently of each other, and will allow you to try out different things. What follows will give you an overview of what you can expect in each one of the betas.

The Tastiest Treat

The tastiest of the treats is the Mono beta release. This beta release contains an incremental update to Mono (2.10.7) and also a completely new Gtk+ stack.

The new Gtk+ stack was developed by a Lanedo/Xamarin collaboration and fixes hundreds of rendering glitches and usability problems that have plagued MonoDevelop for years. Lanedo is a company that specializes in Gtk+ and have among their staff some of the key developers in Gtk+ and with their expertise they have vastly improved the MacOS port of Gtk+ and fixed many of the bugs that our users have filed over the past few months.

The Gtk+ improvements are not limited to bug fixes and glitch fixing. Lanedo has also implemented Smooth Scrolling for our Lion users.

We are putting this on the Beta channel because we want to gather your feedback and fix any major issues that might have escaped our testing process before we make this the default.


The MonoTouch 5.1.1 release has been updated to the latest version of MonoTouch.Dialog, added System.IO.MemoryMappedFiles (due to a build error, we did not ship it in 5.1.0) and comes with key components that will be unlocked by the next stable release of MonoDevelop next week (stay tuned for these changes!)

MonoDevelop Beta

This is truly a beta, we are using the Beta channel of MonoDevelop to allow users to try out the new code-completion engine of MonoDevelop. This new codecompletion engine has been written entirely on top of Mono’s Compiler as a Service and should be more precise, handle more scenarios and provide better completions.

Introducing the Xamarin Mobile API

With both MonoTouch and Mono for Android we have chosen to expose the native platform APIs to C# developer so they can take advantage of all the unique features that each platform has to offer. This means that Android developers can create applications that interact with the system in the same ways that a Java app would do, while taking advantage of C# and the .NET class libraries. On iOS this means that developers can consume iOS-specific features like CoreAnimation, CoreImage and program directly against the UIKit API to get the most out of the native platform:

Current Stack of MonoTouch APIs

The above approach allows developers to get the most out of the underlying platform. For this to work beyond a single platform, developers normally split their code along the lines of the components that must deal with the platform specific APIs, mostly the UI elements, and the components that only require the .NET Base Class Libraries (BCL). Usually the core application or the business logic goes into a reusable library and then multiple front-ends are created, one for iPhone, one for Android and even ASP.NET and WP7 UIs can be built on top of it.

But often developers find that many other services that are common across mobile platforms are not exposed by the .NET BCL. This makes the effort of sharing code more cumbersome than it should be. Developers resort to creating their own platform abstractions, or designing pluggable architectures just to get access to the system address book, the phone’s GPS, the compass, the accelerometer, the notification service or the system calendar.

To solve this problem, we are introducing Xamarin.Mobile. This is a library that runs on iPhone, Android and Windows Phone 7 which abstracts the underlying functionality and exposes a common API that developers can built against:

Xamarin Mobile Stack

Today we are launching a preview of the Xamarin.Mobile library. This first version contains our cross platform location APIs for both Mono for Android and MonoTouch (Windows Phone 7 will be added in an upcoming release). You can download the binaries here.

We are running a survey to better understand which are the most important APIs and platforms for our community.

If you want to send us feedback or report bugs, please File a Bug Report in our bug tracking system.

MonoTouch Beta Release

We have just released to the Beta channels the first beta for our upcoming MonoTouch 5.2 release.

The MonoTouch 5.1 Beta contains the following features:

  • The MonoTouch.Dialog library is now part of MonoTouch. This allows developers to build applications in a fraction of the time.
  • Unit testing framework Touch.Unit to create unit tests for your MonoTouch applications.
  • System.Numerics library that contains BigInt and Complex data types.
  • System.IO.MemoryMappedFiles
  • New MapKit APIs
  • Our Generation Collector works.
  • Linker Improvements:
  • Parallel LINQ preview
    • Notice that there are some limitations due to Generics that we will be improving on future releases

We are very excited about making MonoTouch.Dialog part of this release. To ensure compatibility, we renamed this assembly to “MonoTouch.Dialog-1”, this will avoid any conflicts with existing users of the library. This library will continue to be developed as an open source library, and regular updates will be added to MonoTouch.

With MonoTouch.Dialog, you can build UIs in minutes. For example this entire UI:

Was created with this code:

return new RootElement ("Settings") {
    new Section (){
        new BooleanElement ("Airplane Mode", false),
        new RootElement ("Notifications", 0, 0) {
            new Section (null, "Turn off Notifications to disable Sounds\n" +
                     "Alerts and Home Screen Badges for the\napplications below."){
                new BooleanElement ("Notifications", false)
    new Section (){
        CreateSoundSection (),
        new RootElement ("Brightness"){
            new Section (){
                new FloatElement (null, null, 0.5f),
                new BooleanElement ("Auto-brightness", false),
        new RootElement ("Wallpaper"){
            new Section (){
                new ImageElement ("flowers.png"),
                new ImageElement ("sand.png"),
                new ImageElement ("sky.png")
    new Section () {
        new EntryElement ("Login", "Your login name", "miguel"),
        new EntryElement ("Password", "Your password", "password", true),
        new DateElement ("Select Date", DateTime.Now),
        new TimeElement ("Select Time", DateTime.Now),

You can check out the full MonoTouch.Dialog samples from GitHub.

MonoTouch Native Libraries Made Easy

In today’s release of MonoTouch 5.0.1, we’ve made it much, much easier to use native libraries from your C# code.

MonoTouch has always allowed developers to access third-party Objective-C libraries. But in the past, it required some familiarity with the way native libraries work on Unix. It also required both the native library (libMyCuteVisualization.a) and the managed binding (MyCuteVisualization.dll) to be kept in sync.

With MonoTouch 5.0.1, we have solved these problems. If you are binding native libraries, you can now use the LinkWith attribute to declaratively reference the native library as well as the command line options required to use the library.

If you are consuming a native library that someone else has bound, simply reference the managed library from MonoDevelop. That’s it. No more fussing about with extra command-line arguments and dragging libraries around.

We have updated the public MonoTouch Bindings to use the new LinkWith attribute.

Tasty Android Treats

We have a tasty treat for all of our Mono for Android users.

Our new preview for Mono/Android 2.0 has these tasty features:

  • Google Maps APIs!
    You no longer need to write any manual code to bind to Google Maps. The APIs are ready to be used, come and enjoy!
  • We have added Ice Cream Sandwich API support
    This is an extension to our recent addition of the Honeycomb APIs.
  • System.Numerics library has been added to the build
    Mono for Android is the first to ship with System.Numerics. Our upcoming MonoTouch version will also bring BigInteger and Complex data type support in our Mobile profiles.
  • Improved Visual Studio exception support

There are many other improvements in this release. You can test it now in our Beta channel.

For the full details on this release check our release notes.

iOS and Android Updated

We are happy to announce some nice upgrades for both our Android and iOS users.

MonoTouch 4.2 has been released with many new features and fixes. These are the highlights for this release:

  • Debugging over USB
  • Mono engine upgraded to Mono 2.10.5
  • iOS HTTP Proxy support for all of your HTTP needs
  • Improved linker produces smaller executables
  • Improved startup time
  • Smaller download, even though we managed to bundle the BCL source code for your debugging pleasure
  • Various API updates, more strongly typed classes for a smoother development experience

Visit the release notes page for the full details on this release.

Mono for Android 1.2 has been released. These are the highlights of this release:

  • Major improvements to Garbage Collection: Our distributed Mono/Java garbage collector has many fixes and performance improvements and we urge anyone using Mono for Android to upgrade.
  • The Visual Studio output window will now reflect the Android output, without having to manually require refreshes.

Visit our release page for details on upgrading your Visual Studio add-in or your MonoDevelop addin and the full release notes.

Both of our releases feature various bug fixes and performance improvements that were reported by our user community. Please keep your feedback and bug reports flowing.

MonoDevelop 2.6 is out.

We are very happy to announce that we’ve just released MonoDevelop 2.6 into the stable channel.

This release packs a lot of new features. Some of my favorite features in this release are:

  • Git support.
    • It not only provides the regular source code control commands, it adds full support for the various Git idioms not available in our Subversion addin.
    • Based on Java’s JGit engine
    • Ported to C# using db4Object’s sharpen tool. Which Lluis updated significantly
    • Logging and Blaming are built into the editor.
  • Mac support:
    • Our fancy MonoMac support lets you build native Cocoa applications. If you have not jumped into this Steve Jobs Love Fest, you can get started with our built-in templates and our online API documentation.
    • Native File Dialogs! We now use the operating system file dialogs, and we even used our own MonoMac bindings to get this done.
    • You can also check my Mac/iOS-specific blog for more details.
  • Unified editor for Gtk#, ASP.NET, MonoTouch and MonoDroid: we no longer have to track various forks of MonoDevelop, they have all converged into one tree.

The above is just a taste of the new features in MonoDevelop 2.6. There are many more — nominate your own!

Early Adopters: iOS 5 and Xcode 4 support

Today we are happy to release previews of some exciting new features. Those of you who want to live on the wild side can install either the Beta or the Alpha updates listed below.

Feedback Button

To install, use MonoDevelop’s “Check for Updates” feature in the Help menu and select the Beta or Alpha channel.

Starting with these releases, you can send us your thoughts using the brand-new “Feedback” button in MonoDevelop, contact our support team, or come talk to us on IRC anytime.

Beta: Next generation MonoTouch + MonoDevelop updates

The code in our Beta channel is approaching a final release, but needs to be tested in the real world first.

Alpha: iOS 5 + Xcode 4 support

Our iOS 5 support is complete up to the latest Apple iOS 5 betas, and is intended to be used by developers who want to take advantage of new iOS 5 APIs and already have a copy of the beta from Apple.   You can use this with any version of MonoDevelop (2.4, 2.6 or 2.8).

Our Xcode support is an early preview of the integration between MonoDevelop and the Xcode 4 GUI designer. With your help, we hope to get this important update stabilized quickly so that we can release it to all of our customers.

We have also produced two tutorials for those of you that want to use XCode 4:

You can keep multiple versions of MonoDevelop installed at the same time, you do this just by renaming your application, one per version.

Mono for Android 1.0.2 – First Update by Xamarin

We have just released the first update to Mono for Android by Xamarin.  This update contains fixes to many problems that were affecting our users. We encourage developers to upgrade to this release.  We have many more fixes coming in a future release, but we wanted to get some critical fixes to our community right away.

The main changes in 1.0.2:

  • System.Data.Services.Client.dll is now included.
  • System.IO.IsolatedStorage is now included.
  • Bug fixes in Garbage Collection
  • Various bug fixes

Check our release notes for all the details.

Installing this update:

On Mac:

Use MonoDevelop and the go to  Help → Check for Updates, or you can download directly from the Customer Self Service.

On Windows:

Download monoandroid-1.0.2.msi and install.