Android Development Journal I

Welcome!

To anyone who wants to continue reading, this is my first blog post, as you can see here I like to be a developer, news about gadgets and stuff related to technologies and I also like GNU/Linux and KDE. I started this blog as a note taking tool for every interesting aspect of my studies, work and experiences, to have them all typed down and available to anyone.

So, what’s the best way to start? Directly with some interesting content!

I bought a new cellphone with Android (Operating System developed by Google), and I said “Only for personal use? Nah, start learning how to code Android apps!” And as a suggestion of a friend I used that initiative as the beginning of the blog.

I’ll be honest, I don’t like much java, so as quick as possible I’ll jump into native (C/C++) development. I’m lucky, another friend has already walked around those paths so if I got stuck I can ask for a hand 🙂

Enough of useless talk, here is what I did:

Android Jelly Bean
Android

Disclaimer: keep in mind that this is a journal, not a tutorial. Don’t expect details, but you can ask me and I’ll try to point you out in the right direction in case you have some doubts.

Disclaimer 2: my main OS is Kubuntu, so everything here is based on that fact. If you use Windows or Mac many of the things I said might not apply to you or might be done in a different way.

First, I set up my environment according to what I already had on my machine:

  • Kubuntu 11.10, it’s my main operating system and right now I’m lazy enough to not to upgrade to 12.04 ;).
  • openJDK (Never had the need of installing the Oracle version)
  • I didn’t had to install anything else from the repos, but that is dependent on what was installed before, so you might need to install something else.
  • Usually, for development and testing of new things I set up a virtual environment on VirtualBox and install everything in there but as Android development requires running virtual environments of its own (Android simulators) I did everything on my main (and phisical) disk, to reduce random garbage, I recommend:
    • Download Eclipse package (latest, at that moment Juno 4.2, at first was buggy, but I managed to fix that).
    • Download the latest Android SDK, at that moment was Android SDK revision 20.
    • If you have interest in developing with C/C++ (like me), download the latest NDK, at that moment was Android NDK revision 8b.
    • Create an independent environment:
      1. Create a directory for the environment (i.e. /home/mariano/Android).
      2. Unpack the three downloaded packages there (SDK, NDK & Eclipse). That should create three directories (android-ndk-<version>, android-sdk-linux & eclipse).
      3. Execute eclipse/eclipse for the first time and configure the default workspace inside your environment (i.e. /home/mariano/Android/workspace).
      4. Configure the SDK Manager.
      5. Install the packages that you will utilize: In my case I installed everything that was recommended by Google, and specifically the SDK platforms 2.2 & 4.1 to greater support and latest features respectively.
      6. Use this tutorial from Google for installing ADT plugin on Eclipse By the way, if you want, here you can install also the CDT related tools to develop on C/C++ from inside Eclipse.

Cool!

At this point you have the entire environment ready to start coding, but this post grew too much, so I’ll leave the rest for another day.

Before I go, some notes to take into account:

  • If you don’t use a virtual environment (i.e. using the guide I provided), setting up your hardware device to run & test your apps is quite easy:
    • Before connecting it to the USB, turn on the debug mode of USB (in Android 2.3.5 that is done in Settings->Applications->Development->USB Debbuging)
    • I didn’t had any need of turning on “Unknown sources” to work.
    • Connect the device and run from Eclipse, the application should be installed and run once you develop one 🙂
  • Given the fact that this is my first approximation to the Android development world, I’ll take advantage of every single GUI tool, Eclipse forms, etc. But it is possible to do everything without even install Eclipse or the ADT plugin. Both the SDK & NDK have several command line tool to do everything, the only drawback of a console-approach would be the lack of a visual preview of the interfaces at development time.
    Maybe someday I’ll get my hands dirty and review all the process using only command line tools, but not yet.
  • I strongly suggest you to go to the sources, use the documentation that Google provides, it’s very extensive and detailed from a technical and theoretical point of view. This hasn’t got the purpose of making a tutorial or a copy and paste of the documentation content. So if you are interested but have some doubts, I can try to help you, but your best tool is go to the sources.

Bienvenido/a!

A quien continúe leyendo, este es mi primer post, como pueden ver acá me gusta ser desarrollador, las noticias sobre ‘gadget’ y cosas relacionadas con la tecnología y también me gusta GNU/Linux y KDE. Comencé el blog como una herramienta para tomar notas de todos los aspectos interesantes de mis estudios, mi trabajo y mis experiencias, para tenerlas almacenadas y al mismo tiempo, disponibles para cualquiera.

¿Qué mejor manera de comenzar? ¡Directamente con algo de contenido interesante!

Compré un celular nuevo con Android (sistema operativo desarrollado por Google) y pensé “¿Solamente para uso personal? ¡Nah, arrancá a aprender cómo desarrollar aplicaciones para Android!”. Y como sugeerncia de un amigo usé esa iniciativa como el comienzo de mi blog.

Voy a ser honesto, no me gusta mucho java, así que lo más pronto posible voy a pasar al desarrollo nativo (C/C++). Tengo suerte porque otro amigo ya recorrió esa senda, así que si me llego a quedar trancado puedo pedir una mano 🙂

Suficiente de charla inútil, aquí lo que hice:

Android Jelly Bean
Android

Nota: tener en cuenta que esto es como un diario histórico, no un tutorial. No esperar detalles, aunque es posible realizar preguntas y trataré de apuntar en la dirección correcta cuando existan dudas.

Nota 2: mi sistema operativo principal es Kubuntu, así que todo lo que detallo aquí tiene como base este hecho. Si trabajás en Mac o Windows, muchas de las cosas que describo no aplican o se deben realizar de otro modo.

Primero, configuré mi ambiente de trabajo de acuerdo a lo que actualmente tenía en mi máquina:

  • Kubuntu 11.10, es mi sistema operativo y actualmente estoy suficientemente vago como para no actualizar a 12.04 ;).
  • openJDK (No he tenido la necesidad de instalar la versión de Oracle).
  • No tuve que isntalar nada más de los repositorios, pero eso depende de qué estaba instalado antes de comenzar, así que puede ser diferente en cada caso.
  • Generalmente, para desarrollar y probar cosas nuevas, configuro un ambiente en VirtualBox e instalo todo allí, pero dado que Android ya necesita ejecutar ambientes virtuales (los simuladores) hice todo en mi disco principal (y físico). Para reducir la cantidad de ‘basura’ que puede quedar recomiendo:
    • Descargar el paquete de Eclipse (el último, que en este momento es la versión Juno, 4.2, que parecía medio floja aunque conseguí arreglarle los detalles).
    • Bajar la última versión del SDK de Android, en aquel momento Android SDK revisión 20.
    • Si existe interés en desarrollar sobre con C/C++ (como es mi caso), descargar el último NDK, en aquel momento Android NDK revisión 8b.
    • Crear el ambiente de desarrollo independiente:
      1. Crear el directorio para el ambiente (p.e. /home/mariano/Android).
      2. Desempaquetar los tres paquetes descargados allí (SDK, NDK & Eclipse). Eso debería generar tres directorios (android-ndk-<versión>, android-sdk-linux & eclipse).
      3. Ejecutar ecplise/eclipse por primera vez y configurar el workspace dentro del ambiente (p.e. /home/mariano/Android/workspace).
      4. Configurar el SDK Manager.
      5. Instalar los paquetes que se van a utilizar: En mi caso instalé todo lo que recomendaba Google y específicamente las SDK platforms correspondientes a 2.2 y 4.1 para brindar mayor soporte o últimas características respectivamente.
      6. Con este tutorial de Google instalar el plugin ADT. Dicho sea de paso, si se considera conveniente en este proceso se pueden instalar las herramientas de CDT para desarrollar en C/C++ dentro de Eclipse.

¡Excelente!

En este punto, está el ambiente completo y listo para empezar a desarrollar, pero este post creció mucho, así que voy a dejar el resto para otro día.

Antes de liquidar, algunas notas para tener en cuenta:

  • Si no utilizan un ambiente virtual (p.e. usando la guía anterior), configurar un equipo con Android para ejecutar y testear aplicaciones es muy fácil:
    • Antes de conectarlo al USB, encender el modo de debug USB (en Android 2.3.5 eso está en Ajustes->Aplicaciones->Desarrollo->USB Debbuging)
    • No me fue requerido encender la característica de “Unknown Sources” para poder trabajar.
    • Conectar el equipo y lanzar las aplicaciones a través de Eclipse, cuando estén desarrolladas, las aplicaciones se instalan y ejecutan en el dispositivo.
  • Teniendo en cuenta que es mi primera aproximación al desarrollo Android, me voy a aprovechar de cualquier herramienta gráfica que pueda. Pero es posible hacer cualquier cosa sin siquiera instalar Eclipse o su plugin. Ambas SDK y NDK poseen herramientas para la línea de comandos que permiten realizar cualquier operación, el único detalle es la falta de una herramienta que permita previsualizar las interfaces que se programan al desarrollar.
    Quizá algún día me arremangue y revisite todo este proceso usando únicamente herramientas de la línea de comando, pero aún no.
  • Recomiendo encarecidamente dirigirse a las fuentes, utilizar la documentación que Google provee, es extensa y detallada tanto desde un punto de vista técnico como teórico. Esta publicación no tiene como propósito ser un tutorial o un ‘copy & paste’ del contenido de la documentación. Así que si estás interesado pero tenés dudas, trataré de darte una mano, pero la mejor herramienta es ir a las fuentes.
Advertisements

6 thoughts on “Android Development Journal I

  1. Opaaaa!!!

    Felicitaciones antes que nada por el nuevo emprendimiento. La verdad que costó una tonelada hacer que enganches con escribir en un blog. Al fin vas a compertir parte de tu conocimiento!!! jaja Aquí vamos a estar todos, chupando rueda y llevandonos el know-how bien digerido 🙂 jajaja Fuera de broma, me parece genial dejar una constancia de los temas que investigas, que te interesan, que elaboras. No solo para compartir, también para mostrar lo que haces profesionalmente y para vos mismo -muchas veces uno termina leyendo sus propios artículos cuando ya no se los acuerda-.

    Doy fe de tu caracter de fiel linuxero y KDEro 🙂

    Como ya te dije, me gusta el theme de este blog! (y eso que soy bastante rompepelotas con esas cosas)

    A mí Juno me cayó bien. Lo estoy usando para C/C++.

    En cuanto a Java, he pasado por momentos en que lo detesto más y otros en que lo detesto menos. No es de todas formas un lenguaje que hubiera aprendido por interés propio (sí por necesidad).

    En cuanto a Android, dale para adelante nomás!! Yo sigo como observador todo el camino que vayas recorriendo…

    abrazo,
    martín.-

    1. Muchas gracias! Y sobre lo que costó que me enganche con escribir… Veremos cuanto dura 🙂

      Sobre Juno es verdad, lo logré hacer funcionar mejor y está bastante pasable.

      De Android tengo para rato, así que te mantengo al tanto 😛

      Saludos!

  2. Buenísimo este emprendimiento Mariano! Voy a estar volviendo seguido para ver como venís con tus experimentos. Le voy a pedir a mi amigo Pablo Hoffman si no te puede agregar a develuy.net y vamos a ver si te animás a postear tus experiencias en el Grupo de Android NDK 😉

    ¡Un abrazo y muchos éxitos!

Leave a Reply (Deja una respuesta)

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s