Mono For Android 4.0.3


Visual Studio Users: You should be prompted with this update when you open a MFA project. You can also check manually in Tools > Options > Mono for Android.

MonoDevelop Users: You should be prompted to upgrade next time you open MonoDevelop, or you can use Help > Check for Updates. IDE support requires MonoDevelop

Major Highlights

GC Stability Improvements: We've fixed an assert within the GC and improved stability.

Changes since 4.0.1

TargetFrameworkVersion no longer controls which android.jar is used when building packages. (This is particularly useful for AdMob users, which must use an API level 13+ android.jar.)TargetFrameworkVersion will set the AndroidManifest.xml //uses-sdk/@android:minSdkVersion attribute and is the JNI ABI your application will reference. The//uses-sdk/@android:targetSdkVersion attribute controls which android.jar the app is built against; if not specified, this defaults to TargetFrameworkVersion.

There is now a System.Threading.SynchronizationContext: Application.SynchronizationContext, for easier marshalling back to a UI thread.

Added ApplicationAttribute.UiOptions property to generate the //application/@android:uiOptions attribute.

Add JNIEnv.GetDirectBufferAddress() JNI method, Java.Nio.Buffer.GetDirectBufferAddress() method.

Breaking Changes

  • Additional int to enumeration parameter and return type conversions.
  • Mono.Cairo.dll is no longer distributed. (It never should have been distributed, as it doesn't work.)

API Changes

Bug Fixes

  • 329 : Add support to serialize nullable types when the XmlElement has explicity set the DataType.
  • 1147 : Generic method failing "at mini-generic-sharing.c:407, condition `!(*oti)->data' not met".
  • 2169 : Implement the ObservableCollection<T> constructor to now throwNotImplementedException.
  • 2440 : System.UnauthorizedAccessException with fast deployment to emulator.
  • 2432 : Re-enable -linkskip functionality.
  • 2473 : Webservices 2.0 Async download: memory is not released, app gets stuck or is running OOM.
  • 2482 : DownloadProgressChanged's BytesReceived does not increment.
  • 2582 : Android.Util.TypedValue.ApplyDimension should take enum parameter.
  • 2688 : Fix the [Obsolete] message text on Consts -suffixed types.
  • 2609 : Don't generate duplicate ACW constructors.
  • Allow null collections instances to be passed into Java; email thread .
  • The AndroidStoreUncompressedFileExtensions MSBuild property now behaves as documented. ( Email thread .)
  • Fast Deployment-enabled installs to the emulator should no longer throwUnauthorizedAccesException when creating files. ( Email thread .)
  • Fix the value of Android.Graphics.Color.Transparent .
  • Make sure MD Android addin stops if it hits a deployment failure.
  • Fix inheriting from JavaList<T>.
  • Support opening SQLite databases in read-only mode .
  • JSON : Support deserializing null for DateTime? fields.
  • JSON : Fix array deserialization.


Warning: Samsung shipped a broken kernel with Android 2.1, which is not able to support JIT compilation. If you possess a Galaxy-class device with Android 2.1, you will get unexpected results, this is caused by a kernel bug that breaks cache coherency, rendering any engine doing JIT compilation useless. Check with your manufacturer/carrier for an Android 2.2 update.

Xamarin Workbook

If it's not already installed, install the Xamarin Workbooks app first. The workbook file should download automatically, but if it doesn't, just click to start the workbook download manually.