Xamarin o Dot42, C# Android

Alguien conoce Mono para Android o ha trabajado con el?

Aprovechando el tirón de C# con Unity me gustaría hacer algunas apps para Android usando C#, más que nada porque detesto Java y me gustaría provar Mono; dicen que obtienes una performance mayor con la VM de Mono que con la de Dalvik, además de que usando estos entornos es capaz de generar código nativo sin pasar por ninguna VM.

Lo único malo es el precio prohibitivo de licencia de Xamarin (no tanto con Dot42), y me gustaría saber opiniones de si alguien sabe algo de ésto, como va el tema de usar APIs, tema de permisos y demás que con Java se usan de una forma y con Mono se haría de otra. (Está la doc. pero también por preguntar experiencias).

Bueno, esto es todo! A ver si hay algún entendido del tema que pueda explicar y aconsejar XD [oki] Thanks!.
Yo en su día estuve trasteando con Xamarin bajo Visual Studio 2010.

La verdad que el producto es una pasada, se integra perfectamente en Visual Studio y realizar una aplicación es tremendamente rápido y sencillo.

De todos modos hay cosas que se hacen "parecidas" a como se hacen en Java. Por ponerte un pequeño ejemplo:
(ojo, no investigué mucho en el tema)

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace AndroidApplication3
{
    [Activity(Label = "AndroidApplication3", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : Activity
    {
        int count = 1;
        Button btn1;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.MyButton);
            btn1 = FindViewById<Button>(Resource.Id.button1);


            button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };

            btn1.Click += new EventHandler(btn1_Click);
        }

        void btn1_Click(object sender, EventArgs e)
        {
            btn1.Text = string.Format("{0}", DateTime.Now.ToString());
        }
    }
}

En esa activity hay dos botones, es necesario usar el método FindViewById para acceder a ellos. Los eventos si que pueden ser definidos como se hace normalmente en cualquier código de C# con su EventHandler y tal...

El único problema que encontré yo (y tal y como indicas) es que si quieres usarlo con Visual Studio es necesario la licencia de tipo Business (1000 pavos), o la Enterprise (1900 pavos) AL AÑO, ya que las versiones Started e Indie no tienen soporte para Visual Studio (lo tienen para el Xamarin Studio, pero vamos, la gracia del tema es poder aprovechar todo lo que ofrece Visual Studio, para mi el mejor producto de Microsoft pero de largo, de aquí a Lima).

Si tienes una buena base de C#, yo me bajaría Eclipse, la SDK de Android y tira millas.

Java y C# no son tan distintos y tal como he comentado antes, tarde o temprano, tendrás que lidiar con particularidades de Android, (Activities, FindViewById, etc) que se hacen igual si o si tanto en Java o en C# usando Xamarin.
Muchísimas gracias.

Por lo que estoy leyendo, Dot42 es una implementación de Mono (con alguna que otra desventaja técnica frente a Xamarin.Android) gratuita a nivel de usuario, y que permite publicar aplicaciones sin ningún tipo de limitación, eso sí, gratuitas...

La verdad es que pinta bastante bien!
2 respuestas