Hola Mundo en Android con Monodroid

Cuando me entere del comienzo de un proyecto para desarrollar con C# para Android como hace 6 meses (Marzo del 2010), busque toda la información posible sobre este, lamentablemente en ese entonces el proyecto recién estaba en su etapa de concepción, por lo cual tuve que esperarme un tiempo hasta poder acceder a este, que no fue hasta principios del mes de septiembre, que gran día fue ese que pude descargarme la herramienta.
Bueno ahora casi un mes después de haberla probado, puedo decir que es lo que esperaba e inclusive un poco más, con una muy buena integración con Visual Studio 2010 y la migración de al menos un 80% de todas las librerías disponibles en el SDK de Android. Los muchachos del proyecto mono (al dia de hoy Xamarin) son los encargados del desarrollo de este proyecto, donde se esforzaron bastante para sacar tan buena herramienta y en tan poco tiempo (+/- 4 meses).
Ahora lo único que me queda es mostrarles como iniciar en el desarrollo de aplicación para Android con esta súper herramienta, para lo cual vamos a necesitar lo siguiente:

- Visual Studio 2010
- Plug-in de MonoDroid
- El SDK de Android 2.1 o superior
Lo primero que hacemos es bajarnos el SDK de Android para Windows de http://developer.android.com/sdk/index.html (aquí) , que será un comprimido con el nombre “android-sdk_r07-windows.zip”, luego lo descomprimimos y ejecutamos el archivo “SDK Manager.exe” que nos desplegara una ventana como la siguiente:

Recomiendo seleccionar solo las plataformas 2.1 y 2.2, ya que son las más modernas y que además están completamente soportadas por MonoDroid, nuestro próximo pasó después de descargarnos los archivos necesarios, procedemos a configurar nuestro emulardor, para lo cual nos vamos al ítem “Virtual Devices” y luego hacemos clic en el botón “New”, que nos desplegara un cuadro de dialogo donde llenaremos con los datos de la captura que sigue y por ultimo hacemos clic en el botón “Create AVD” para finalizar la creación del dispositivo.
Luego nos saldrá un cuadro de dialogo indicándonos como se creó el dispositivo virtual al cual solo le damos un “Ok”.Nuestro siguiente paso es ejecutar el instalador de MonoDroid (hay que registrarse en la página oficial de Mono For Android para conseguir acceso al repositorio de descarga), donde el instalador nos guiara para realizar la instalación, aquí no hay ningún apunte importante que mencionar, en otras palabras hacer solo next, next, next.
Ahora el último pasó para tener nuestro ambiente de desarrollo a punto, es iniciar el Visual Studio e ir a Tools->Options y luego buscar dentro de la pantalla el ítem Monodroid y en el campo de texto “Android SDK location” debemos de cambiar la ruta por defecto (C:\android-sdk-windows) por la ruta donde este nuestro SDK.

Con esto tendría que estar funcionando a la perfección nuestro entorno de desarrollo, en caso de que suceda un error llamado “

"monodroid.exe or aresgen.exe exited with code 1” ver el este articulo para arreglarlo.

Hola Mundo

Para probar que tal esta MonoDroid, nada mejor que una aplicación “Hola Mundo”, para lo cual vamos a crear un nuevo proyecto en Visual Studio al que le daremos el nombre “MiPrimeraAplicacionMonoDroid”.

El proyecto viene con la siguiente estructura por defecto, junto con una actividad por defecto que trae el siguiente código:

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

namespace SegundaAplicacion
{
    public class Activity1 : Activity
    {
        int count = 1;
        public Activity1( IntPtr handle )
            : base( handle )
        {
        }

        protected override void OnCreate( Bundle bundle )
        {
            base.OnCreate( bundle );
            // Set our view from the "main" layout resource
            SetContentView( R.layout.main );
            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById & lt;
            Button & gt;
            ( R.id.myButton );
            button.Click += delegate { button.Text = string.Format( "{0} clicks!", count++ ); };
        }
    }
}
Pero como no nos gusta hacer correr el código por defecto, lo vamos a cambiar por el siguiente código, que es un “Hola Mundo” personalizado:
   
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Opengl;

namespace MiPrimeraAplicacionMonodroid
{
    public class Activity1 : Activity
    {
        public Activity1( IntPtr handle )
                        : base( handle )
        {
        }

        public static String paises( )
        {
            String[ ] vec = new String[ 6 ];
            vec[ 0 ] = "Bolivia";
            vec[ 1 ] = "México";
            vec[ 2 ] = "Colombia";
            vec[ 3 ] = "España";
            vec[ 4 ] = "Argentina";
            vec[ 5 ] = "Peru";

            Random rnd = newRandom( );
            return vec[ rnd.Next( 0, 5 ) ];
        }


        protected override void OnCreate( Bundle bundle )
        {
            base.OnCreate( bundle );
            Button btn = new Button( this );
            btn.SetHeight( 25 );            
            SetContentView( btn );
            btn.Click += delegate { btn.Text = "HolaMundodesde " + paises( ); };
        }
    }
}
Si ya han desarrollado alguna vez para Android con Java y Eclipse pueden ver que no existe mucha diferencia entre lo que ya estaban acostumbrados a hacer y lo que he escrito arriba, creo que la única diferencia (vean este mismo hola mundo que hice con Netbeans y Java para Android) es como se implementó la escucha del evento “Clic”, que en vez de usar la implementación de una interfaz, directamente hago una llamada desde el mismo objeto “btn” y modifico el texto de este a través de un delegado, para los que ya estén acostumbrados a programar en .NET esto les resultara familiar.
Ahora hacemos correr nuestra aplicación con Ctrl + F5, lo que nos mostrara el siguiente cuadro de dialogo donde deberemos elegir nuestro emulador:


Si en este cuadro de dialogo no aparece el emulador que creamos arriba, deberemos de hacer clic en el link “Startemulatorimage”, que hará que se inicie el emulador si no está encendido.
Después de un rato(a veces un poco largo a decir verdad) el emulador terminara de iniciar el SO e iniciara nuestra aplicación que se verá +/- así:


Bueno con esto sería todo, espero que les haya gustado el articulo y ojala se pongan a desarrollar para Android con MonoDroid Mono For Android, VIVA C#!!!!!!
Suerte!.

14 comentarios

Ehhh... no me puedo registrar en la web de Mono para entrar en el repositorio de descargas...

Reply

Entra aqui http://go-mono.com/monodroid-download/

Reply

Hola Gustavo, de antemano muchas gracias por la información, he seguido todos los pasos que has descrito para instalar el plugin; compilo y ejecuto el ejemplo... el emulador funciona, pero no ejecuta las instrucciones del "Hola mundo", alguna sugerencia?

Reply

podria de ser que la version de monodroid con la que estas haciendo, tenga algun cambio con respecto a la que use, cuando hice el articulo.
Si me dices el numero de version del SDK de monodroid y de android skd, me seria de ayuda para poderte dar una solucion

Reply

Descargue e instale el “installer_r10-windows.exe ”, y le instale todas las plataforma del SDK.. ahora que leo con mas calma veo que recominadas solo instalar las plataformas 2.1 y 2.2.. y le instale el mono-android-9794.

Reply

Otro dato que quizas sirva, es que cuando creo el proyecto en Visual Studio, comparo los archivos y carpetas del mismo con la imagen que has colocado y no tengo el archivo R.cs, que esta enseguida del archivo Activity1.cs

Reply

mmm, debe de ser por actualizaciones que se realizaron en monodroid. Me bajare las ultimas versiones y actualizare el post.

Reply

yo logro hacer texto botones etc para aplicaciones pero como hago para q todo el proyecto en el visual lo pueda pasar a mi android como paquete apk? y se pueda ejecutar tal y como lo vemos en la consola del visual

Reply

Entiendo mal o la version trial solo funciona en el emulador? Gracias

Reply

Hola Locotus y Omar, la version trial que nos ofrece xamarin solo nos permitira llevar nuestro programa escrito en monodroid a nuestro smartphone, si compramos la licencia de desarrollador, exactamente como sucede con Apple. Para comprar la licencia, pueden hacerlo por aqui https://store.xamarin.com/ los precios no son muy altos teniendo en cuenta la muy buena calidad del producto y ademas la reduccion de costos de aprender otro lenguaje y/o framework.

Reply

Una consulta entonces la versión trial solo te limita para q' tu aplicación se ejecute en tu movil o te limita algunas herramientas

Reply

Al dia de hoy, Xamarin limita la version trial al emulador, si queremos hacer deploy de nuestra aplicacion a un dispositivo fisico debemos de comprar la licensia.

Reply

Hola Gustavo Torrico Martínez:

Quisiera que me orientaras, soy nuevo en ell ambiente MonoDroid, he creado varias aplicaciones, pero a la hora de compilar me aparecen varios errores, entre ellos el que mensionas: "monodroid.exe or aresgen.exe exited with code 1". Trate de comprovar si el AVD de Android Manage funcionaba bien y por alguna razón, el AVD que había creado no corría, no se ejecutaba. ¿Qué me recomiendas hacer? Al 16 de Febrero, prefiero usar aplicaciones de Novell que de Xamarin.

Reply

Por que no me funciona el .apk cuando lo intalo en mi celular? Ayuda?

Reply

Publicar un comentario en la entrada