Lenguajes de Programación

Archive for the ‘ Lenguajes de Programación ’ Category

Tutorial: Instalar Maven 3 en Ubuntu

Maven es una poderosa herramienta para gestionar proyectos en Java, parecido en su propósito a Ant aunque difiere en su implentación, normalmente es usado con Java, pero puede ser usado para otros lenguajes como Scala, Ruby, etc.

Este post lo escribo para los despistados en Ubuntu, anteriormente Maven venía en los repositorios y era fácil su instalación, hasta donde sé con la versión 12 en adelante es necesario agregarlo a mano, por lo que repasemos los siguientes escenarios:

Escenario 1:

En el mejor de los casos tu versión de Ubuntu viene con Maven en el repositorio, para averiguarlo ejecuta la instalación siguiendo estos pasos:

apt-cache search maven

Primero buscamos en el repositorio los paquetes necesarios y después intentamos instalar:

sudo apt-get install maven

Escenario 2:

Si al intentar el primer escenario no pudiste instalarlo entonces tendremos que hacerlo de manera manual, empezando con el siguiente comando:

sudo -H gedit /etc/apt/sources.list

El comando abrirá en modo de edición la lista de recursos al cual debemos agregar las siguientes líneas:

## Adding Maven3 to Ubuntu
deb http://ppa.launchpad.net/natecarlson/maven3/ubuntu precise main
deb-src http://ppa.launchpad.net/natecarlson/maven3/ubuntu precise main

Guarda y cierra el archivo, luego ejecuta este comando:

sudo apt-get update && sudo apt-get install maven3

No debería haber ningún problema, la instalación debe ser rápida, por último hagamos un enlace para tener Maven listo:

sudo ln -s /usr/share/maven3/bin/mvn /usr/bin/mvn

Eso debe ser suficiente; puedes verificar la versión ejecutando lo siguiente:

mvn -version

Recuerda tener siempre un tiempo para leer la documentación oficial en Apache Maven.

 

 

Asociar archivos Scala en Eclipse

Si estás interesado en entrar de lleno a programar en Scala es bueno que prepares totalmente tu ambiente de trabajo. En los tutoriales anteriores hemos trabajado directamente con editores de texto, ahora mostraré cómo asociar los documentos con terminación .scala con el IDE Eclipse, empezaremos agregando el plugin:


a ) Desde el menú princpipal buscamos Help -> Install New Software
b ) En la nueva ventana seleccionamos Add
c ) Agregamos cualquier nombre y en Location usamos esta direción:
http://download.scala-ide.org/sdk/e37/scala29/stable/site/
Si tenemos duda de la versión puedes consultarlo en el siguiente enlace.
d ) Selecionamos todo y continuamos en Next; la instalación empezará. Probablemente en algún punto se te muestre un Security Warning, sólo acéptalo.
e ) Se nos pedirá reinicar Eclipse.
f ) Cuando iniciemos de nuevo, tendremos que escoger algunas opciones de configuración, nos aseguramos de utilizar el recomendado “Use recommended default settings
Ahora ya podrás incluso selecionar una nueva perspectiva o crear projectos basados en Scala.

Usando Eclipse para programar Scala/Lift

Normalmente cuando empezamos a programar usamos un IDE como Eclipse, Netbeans u otro para desarrollar nuestras aplicaciones, en la mayoría de los casos compilamos y ejecutamos todo desde la misma herramienta, sin embargo existen otras alternativas que nos dan más poder sobre lo que estamos haciendo. Les mostraré cómo usar Eclipse para desarrollar nuestro proyecto en Scala/Lift con la leve diferencia que la compilación la seguiremos haciendo desde el SBT.

1.- Aunque existen inclusive versiones de Eclipse listas para Scala, esta vez dejaré la opción para que descarguen la versión que gusten desde la página oficial, si nunca has tocado este IDE puedes usar la versión Classic.

2.- Una vez instalado y ejecutado debemos modificar el archivo /project/plugins.sbt, ahí agregamos el plugin para Eclipse con el siguiente apartado justo al final:

resolvers += Classpaths.typesafeResolver

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.2")

El espacio en blanco entre las dos sentencias es necesario. Tenemos que compilar para ver los cambios:

./sbt
eclipse

Automáticamente se descargará el plugin, posteriormente creará los archivos necesarios para que Eclipse lea nuestra proyecto: .project y .classpath. Si queremos de igual manera descargar la documentación que nos apoye en el código, ejecutamos el siguiente comando:

eclipse with-source=true

Si deseas dejar esto permanente estonces debes agregar la siguiente propiedad al archivo build.sbt:

EclipseKeys.withSource := true

Lo anterior descargará toda la documentación necesaria, recuerda compilar de nuevo usando el comando eclipse para efectuar los cambios.
3.- Casi todo está listo, sólo falta configurar el Eclipse, para ello lo abrimos y generamos un nuevo proyecto:

a ) Desde el menú File -> Import -> Existing Projects into Workspace, aseguramos no selecionar “Copy projecs into workspace

Y eso es todo, ahora podrás modificar y recibir apoyo con la documentación desde el IDE, esto es bastante efectivo pues separamos la compilación del proyecto del editor, lo que nos da bastante control sobre todo lo que hagamos.

Puedes consultar el siguiente enlace si no estás seguro de la versión que necesitas del plugin.

Parte 2: Scala/Lift Hot Deployment – Compilar cambios sin reiniciar el servidor

En la primera parte hemos hablado un poco de cómo hacer un Hot Deployment, aunque ese proceso generaba otro problema puesto que reiniciaba el servidor. Ahora veremos un proceso en el cual podremos compilar al aire sin afectar nuestra actividad en la aplicación.

Para nuestro problema usaremos una librería, JRebel, pueden obtener una licencia gratuita desde el siguiente enlace, aunque es de paga pueden renovarla cada cierto tiempo sin pagar por ella, básicamente entra en la dirección mencionada y busca JRebel Free Trial, se te pedirán unos datos, al finalizar obtendras un key code, guárdarlo, lo usaremos en breve.

Una vez obtenida la licencia descárga la versión genérica desde aquí  después procede a descomprimirla; normalmente guardo el archivo en el directorio  raíz de mi proyecto: lib/zt/jrebel, posteriormente ejecuta el archivo jrebel-config.sh localizado en:  lib/zt/jrebel/bin

Puedes ejecutarlo desde comando o ejecutando el archivo directamente, eso hará que se lance el Wizard  de configuración:
1.- Primero escogemos myJRebel license
2.- Pegamos el código que obtuvimos desde el sitio.
3.- Finalizamos

Ahora debemos configurar nuestro SBT para notificarle que estamos usando JRebel como agente al iniciar, para ello modificamos nuestro script que se encuentra ubicado en la raíz de nuestro proyecto, el archivo sbt debe contener el siguiente código:

java -Drebel.log=true -Drebel.lift_plugin=true -noverify -javaagent:lib/zt/jrebel/jrebel.jar 
-Xmx1024M -Xss2M -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -jar 
`dirname $0`/sbt-launch-0.12.1.jar "$@"

Observa que sólo estamos agregando la línea 1 donde indicamos usar JRebel desde la ubicación que hayamos escogido. Si has pagado por una licencia entonces puedes agregar el path al documento que te envíen con esta otra propiedad:

-Drebel.license=/path/to/jrebel.lic

Es hora de probar, inicia tu servidor como siempre. Si en dado caso recibieras un error como el siguiente no te alarmes:

Error opening zip file: /jrebel/jrebel.jar
Error occurred during initialization of VM
agent library failed to init: instrument

Significa que el path que hemos puesto en el parámetro -javaagent es incorrecto, o que bien la instalación no se llevó acabo, para saber si el proceso salió bien ahora podrás ver información de JRebel cuando se ejecuta la aplicación por primera vez, no sólo eso, por cada código modificado se te notificará la re-carga de la clase, por ejemplo:

[2013-03-14 10:00:20] JRebel: Reloading class 'project.appwen.HelloWorld'.

Desde este enlace encontrarás más errores conocidos. Si tienes alguna duda deja un comentario.

Actualización:

Parece ser que desde la última versión de JRebel la instalación se hace de manera diferente, el única cambio es que después de ejecutar el wizard los archivos jrebel.licjrebel.properties son creados en la ubicación /home/actualuser/.jrebel/, estos deben ser copiados a la misma dirección donde está el jar: lib/zt/jrebel/jrebel.jar si no hacemos esto al inicar el servidor mostrará el error de “NO LICENSE FOUND“.

Fuente: Lift, JRebel

Parte 1: Scala/Lift Hot Deployment – Compilar cambios sin reiniciar el servidor

Entre los temas que suelen salir a flote entre programadores sobre todo de la parte Web, es la necesidad de compilar el código con cada cambio que se hace, proceso que muchas veces puede variar de los pocos segundos a unos 20 min esto dependiento del tamaño de la aplicación.

Siempre ha habido un acalorado debate en cuanto a esto que en inglés se le conoce como Hot Deployment. Aunque estoy de acuerdo en es que una mala práctica, cuando se está desarrollando en modo pruebas es bastante útil pues nos hace salvar bastante tiempo, caso contrario cuando es llevado a producción.

Sin embargo la realidad hoy en día es que los sistemas crecen en forma exponenciañ y aplicaciones como Facebook, Twitter o cualquier aplicación o sistema que maneja gran cantidad de usuarios no puede darse el lujo de hacer apagar o reiniciar su servidor para una actualización.

Aquí es donde nacen lenguajes como Erlang o Scala. Permitan un Hot Deployment real sin necesidad de reiniciar la aplicación puesto que son sistemas distribuídos, me gustaría indagar un poco más en eso adelante en algún post, es un tema bastante interesante.

Voy a dividir este artículo en dos partes, en esta primera entrega mostraré cómo compilar con cada cambio que se haga a los archivos, sin necesidad de usar un IDE en especial, esto quiere decir que con hacer un simple cambio desde un editor genérico de texto a uno de los códigos de Scala se compilará de manera automática, aunque ejecutará la acción de recargar el contenedor web. La segunda entrega hablaremos de cómo realizar lo mismo sin recargar nuestra aplicación.

Nuestro servidor tiene un comando que hace todo por nosotros, pero debemos compilar nuestra aplicación con el comando que todos ya conocemos:

./sbt

Al hacerlo estamos entrando siempre al Simple Build Tools, que es un prompt de comandos para el servidor, estando ahí ejecutamos lo siguiente:

~; container:start; container:reload /

¿Y qué significa todo esto? el prefijo ‘~‘ le indica al SBT que compile los cambios, el punto y coma ‘;‘ sólo es una secuencia de comandos, que se traduce como: a cada cambio compila, reinicia y recarga el contenedor web. En general el comando estará atento a los cambios realizados sólo a los documentos en Scala al igual que cambios en el directorio “src/main/sources/“. Cabe aclarar que al ejecutar el comando entras en modo de escucha, por lo que quizá veas algo como lo siguiente:

Waiting for source changes... (press enter to interrupt)

Cada modificación se verá reflejada en la terminal, para salir de este modo basta con presionar la tecla enter. Para hacer pruebas está bien, sin embargo si planeas modificar muchos archivos puedes correr el riesgo de recibir el mensaje “java.lang.OutOfMemoryError: PermGen space” correspondiente a que la memoria está totalmente llena.

En el siguiente post veremos cómo evitar el reinicio del servidor y no tener un error de memoria.

 

Fuente: Lift Web

Estructura de un proyecto en Scala/Lift

Ya hemos visto cómo crear un Proyecto Web con Scala/Lift, nos toca hablar un poco de cómo está compuesto en general la estructura de este. Al principio puede ser un poco complicado si no vienes de programar en contenedores web, así que revisemos un poco cuáles son las convenciones a respetar:

- webapp
  | build.sbt
  - project/
    | plugins.sbt
  - src/
    - main/
      - scala/
        - bootstrap/
          | Boot.scala
        - org/
          - mysystem/
            - webapp
              | <CÓDIGO SCALA>
      - webapp/
        | index.html
        | <RECURSOS>
        - WEB-INF/
          | web.xml
    - test/
      - scala/
        - org/
          - mysystem/
            - webapp/
              | <PRUEBAS>

El proyecto puede lucer más o menos como el de arriba, lo importante a notar son las dos carpetas principales para poner nuestro código, todo lo que sea recursos html, javascript o imágenes van en la línea 13 y todo lo que sea código en Scala va en la línea 16. ¿Quién decide esta estructura? Cuando construímos nuestra aplicación usando el comando “./sbt” que lee el archivo build.sbt, usando la propiedad:

organization := "org.mysystem.webapp"

Esta define el directorio raíz, observa cómo para los directorios obtenemos los siguients paths “scala/org/mysystem/webapp” tanto para el código como para las pruebas en la carpeta “test/scala“, si aún te quedan dudas puedes descargar un template vacío desde la siguiente dirección. 

Fuente: Lift Web

Tutorial: Crear una aplicación Web con Scala / Lift desde cero

Continuando con los post del Web Server Lift con Scala, hoy mostraré cómo crear una aplicación Web desde cero y que podremos usar más adelante como un template en blanco para nuestros proyectos. Es necesario haber realizado el tutorial anterior para poder continuar.

Para empezar debemos crear una carpeta para nuestro proyecto, para efectos prácticos la llamaré “webapp” y dentro otra carpeta llamada “project“. Nuestro primer paso consiste en configurar el SBT (Simple Build Tool), esto se lograr creando el archivo plugins.sbt dentro de la carpeta de nuestro proyecto con el siguiente fragmento de código:

libraryDependencies <+= sbtVersion(v => v match {
  case "0.11.0" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.0-0.2.8"
  case "0.11.1" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.1-0.2.10"
  case "0.11.2" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.2-0.2.11"
  case "0.11.3" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.3-0.2.11.1"
  case x if (x.startsWith("0.12")) =>
    "com.github.siasia" %% "xsbt-web-plugin" % "0.12.0-0.2.11.1"
})

El código anterior se encarga de cargar el xsbt-web-plugin acorde a la versión que definas para Scala, para definir esto crea el archivo build.sbt, como he mencionado antes, este archivo carga todas las librerías necesarias, debe estar en raíz y contendrá lo siguiente:

organization := "org.webapp"

name := "My Wep App"

version := "0.1"

scalaVersion := "2.10.0"

seq(com.github.siasia.WebPlugin.webSettings :_*)

libraryDependencies ++= {
  val liftVersion = "2.5-M4"
  Seq(
    "net.liftweb" %% "lift-webkit" % liftVersion % "compile",
    "org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container,test"
  )
}

Algunos de los parámetros son autodescriptivos, los demás son propios de Scala como el manejo de colecciones “Seq“. Con esto tenemos configurada parte de la aplicación, para poder compilarlo ocupamos los archivos “sbt” y “sbt-launch-0.12.1.jar” (puede variar la versión) que encontrarás en la raíz del proyecto del tutorial pasado, copiamos dichos archivos a la raíz de nuestro proyecto y ejecutamos el siguiente comando:

./sbt

El comando anterior descargará todos los archivos necesarios para la versión de Scala que hayamos selecionado, al terminar entrarán automáticamente en el prompt, recuerda que aunque siempre ejecutes el comando, sólo descargará una vez los documentos. Desde la raíz de tu proyecto encontrarás una nueva carpeta, estas son las dependencias que se necesitan para ejecutar el lenguaje.

Ya casi tenemos listo nuestro ejemplo, nos falta definir nuestro contenedor para que recoja las peticiones usando Lift, básicamente el siguiente documento xml debe ser creado desde raíz en la siguiente ubicación: src/main/webapp/WEB-INF/web.xml y su contenido debe ser el siguiente:

<!DOCTYPE web-app SYSTEM "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <filter>
    <filter-name>LiftFilter</filter-name>
    <display-name>Lift Filter</display-name>
    <description>The Filter that intercepts Lift calls</description>
    <filter-class>net.liftweb.http.LiftFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>LiftFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

Nuestro siguiente documento define nuestra pantalla inicial y debe estar localizado en la siguiente dirección: src/main/webapp/index.html

<!DOCTYPE html>
<html>
  <head>
    <title>Welcome to Scala/Lift</title>
  </head>
  <body>
    <h1>Welcome to your Web Server</h1>
  </body>
</html>

Los Web Server con contenedores en Java funcionan gestionando las peticiones, en el caso de Lift debemos crear un documento que se encargará de esto, debe estar localizado en la siguiente dirección: src/main/scala/boot/strap/Boot.scala

package bootstrap.liftweb

import net.liftweb.http.{Html5Properties, LiftRules, Req}
import net.liftweb.sitemap.{Menu, SiteMap}

/**
 * A class that's instantiated early and run.  It allows the application
 * to modify lift's environment
 */
class Boot {
  def boot {
    // where to search snippet
    LiftRules.addToPackages("org.webapp")

    // Build SiteMap
    def sitemap(): SiteMap = SiteMap(
      Menu.i("Home") / "index"
    )

    // Use HTML5 for rendering
    LiftRules.htmlProperties.default.set((r: Req) =>
      new Html5Properties(r.userAgent))
  }
}

Usando Scala como lenguaje base, nuestro archivo boot se encargará de direccionar nuestras peticiones. Ya tenemos todo listo, desde la raíz de nuestro proyecto ejecutar los dos comandos:

./sbt
container:start

Ahora ya podrás acceder a tu proyecto desde http://localhost:8080/index, ten encuenta que los documentos en Scala deben ser compilados, a diferencia de los html que puedes modificar sin necesidad de levantar el servicio de nuevo.

Fuente:  Lift Web

Tutorial: Instalar Lift Web Server – Linux

Web Server Lift

Web Server Lift

De vuelta al blog he decidido dedicar el siguiente post al Web Server para Scala, Lift. Llevo un tiempo que he dejado de usar Windows, por lo que normalmente verán tutoriales realizados en Linux.

El siguiente tutorial está dirigido enteramente en instalar Lift y ejecutarlo desde un ambiente Linux, quizá más adelante escriba algo más avanzado para los que quieran aprender más de Lift y en general de Scala.

Pré-requesitos:

Scala es un lenguaje escrito sobre Java, por lo que es necesario tener instalada una versión mayor o igual a Java 1.5.

1.- Descarguemos la última versión de Lift: descargar, para este tutorial se usó Lift con Scala versión 2.9

2.- Desde la terminal navegar hasta el directorio donde descargaron y descomprimieron el archivo:

/lift-lift_25_sbt-b9779cc/scala_29/lift_basic.

3.- Desde la terminal ejecutamos el siguiente comando sobre el directorio mencionado, este descargará todos los paquetes necesarios para ejecutar el servidor:

./sbt

        Este comando también nos servirá para entrar a comandos del servidor y ejecutar el contenedor de Scala para este servidor.

4.- Una vez instalado todo, ejecuten el siguiente comando para levantar el servicio:

container:start

5.- Desde el navegador Web entra a la dirección local: http:localhost:8080

Si todo ha salido correctamente, veremos ejecutar una aplicación web. Normalmente aparece un login; atención, Lift no es un servidor como comunmente encontraríamos al instalar Tomcat, Weblogic, etc. Lo que acabamos de ejecutar es un template base para una aplicación en Scala, el login que aparece en pantalla es sólo una muestra. Entonces, el comando sbt (Simple Build Tool) es propio de Scala, este descargará cualquier dependencia de librería que se necesite, para entender un poco más la descripción de la compilación del proyecto la podrán encontrar en el archivo build.sbt.

Por otra parte el comando que ejecutamos container:start sólo inicia la aplicación, recordemos que en los ambientes con Java, los servidores son contenedores, para este caso es Jetty.

Eso es todo por el momento, si quieren empezar, la carpeta src les dará una visión amplia de cómo está construído el servidor, me encantaría indagar un poco más en post futuros acerca del lenguaje funcional Scala, pero eso, es tema aparte.

Fuente: Lift

Java – “Bad version number in .class file”

Recibí algunos comentarios de manera personal sobre algunos errores siguiendo el tutorial pasado de instalación del SDK de Android:

El error es: Bad version number in .class file

Este error es causado por la incompatiblidad de las versiones que se necesitan para ejecutar el ADT y el JRE instalado, en otras palabras estamos tratando de ejecutar erróneamente la versión ADT  con una versión inferior de Java, como la 1.5. El error aplica igual cuando ejecutamos una aplicación después de actualizar el JRE.

Para solucionarlo basta con hacer lo siguiente:

  1. Hay que asegurarnos qué versión tenemos y cuál necesitamos, en la ventana de comandos escribe lo siguiente:
    • C:\>java -version
      java version "1.7.0_03"
      Java(TM) SE Runtime Environment (build 1.7.0_03-b05)
      Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode, sharing)
    • Te mostrará la versión que se está ejecutándose en tu máquina, el ADT versión 18 necesita Java 1.6 o mayor. Si no logras ver nada es que el PATH no está configurado,
  2. Al actualizar o instalar  debes asegurarte el JAVA_HOME y el PATH estén direccionando a la versión adecuada de Java. Para ello modifica las variables de entorno, se encuentra en Propiedades del Sistema, y varía la ubicación dependiendo de la versión de Windows que tengas:
    • JAVA_HOME:  C:\Program Files (x86)\Java\jdk1.7.0_03
    • PATH: C:\Program Files (x86)\Java\jdk1.7.0_03\bin
    • Asegura apunten a las ubicaciones dependiendo tu sistema y versión que necesites. Después de eso ejecuta de nuevo el comando para ver si la versión se cambió, en algunos casos quizás ocupes reiniciar el ordenador.
  3. Ya tienes lo necesario, ahora debemos cambiar cómo se ejecuta y compila Eclipse, si tuvieras un error al iniciarlo revisa que hayas descargado la versión adecuada a tu arquitectura, sea 32 o 64 bits. Para selecionar el JRE necesario, desde Eclipse ubica el menú superior Windows -> Preferences. En el menú lateral izquierdo ubica la opción Java, dentro ocupamos dos: Compiler y Installed JREs:
    • Compiler: Seleciona el Compiler compliance level apropiado, en mi caso: 1.7
    • Installed JREs: Selecciona la versión del JDK o JRE adecuado, si no estuviera sigue los siguientes pasos:
      • Add -> Standar VM -> Directory, desde la ventana de archivos selecciona el directorio adecuado.

Con eso ahora ya podrás instalar lo necesario en el SDK Manager, de igual manera si llegaste a este tutorial por el error, sólo compila de nuevo tu proyecto para que todo funcione.

 

Tutorial: Instalación del Android SDK

Android SDK

Ahora toca el turno al SDK de Android, en este tutorial veremos toda la instalación para poder desarrollador aplicaciones en Android; válido para Windows y Linux.

1.- Primero que nada necesitamos una versión de Eclipse (IDE que recomienda Google), que puedes descargarla desde aquí (La básica es suficiente). Aunque en realidad no hay ningún problema si tienes ya uno instalado, para el caso de Linux recomiendo ampliamente no trabajar con las versiones del repositorio, que algunas veces vienen capadas o causan muchos problemas con los permisos.

2.- Segundo, necesitas la versión SDK compatible con tu Sistema Operativo que puedes descargar desde el siguiente enlace. He trabajado tanto en Linux como Windows sin problemas hasta ahora. Por default la instalación se realiza usando esta sintaxis android-sdk-<machine-platform>. En Linux puedes ubicarlo manualmente en el directorio que gustes, para Windows, realizará una instalación automática en C:\Program Files\Android.

3.- Después tenemos que instalar el plugin para trabajar con Eclipse, Google lo llama el Android Development Tools (ADT), que puedes descargar desde aquí. Servirá como enlace entre el IDE y el SDK.  Sin embargo para su instalación he tenido algunos problemas siguiendo los pasos oficiales desde el repositorio, por lo que es mejor descargarlo y hacerlo manual de la siguiente manera: 

  • Coloca el archivo descargado en el directorio que te plazca.
  • Abre Eclipse y en el menú superior en Help encontrarás un submenú llamado Install New Software.
  • Selecciona la ubicación del archivo en formato .zip, puedes agregarle un nombre como muestra la imagen.
  • Agregado esto podrás seleccionar el Developer Tools y empezar la instalación (Si te aparece un Warning selecciona Ok).

4.- Para poder enlazar el ADT desde el Eclipse selecciona en el Menú superior Window > Preferences. Busca Android en el panel izquierdo ( si te aparece un error de Bad version number in .class file es porque la versión de Java o el IDE que posees es menor a la necesaria, sólo actualízalo ). Aquí debes localizar el directorio donde descargaste el SDK.

5.- El siguiente paso lo realiza Windows por default la primera vez pero no de manera completa, para instalar el resto de los componentes tanto en Windows como Linux es necesario hacerlo como se muestra a continuación. En el menú superior localiza Window > Android SDK Manager, aquí selecciona todos los componentes y versiones que desees, cabe resaltar que quizá algunas dependecias te impidan instalar algo, es sólo ir viendo los detalles para tener la instalación completa.

SDK Manager

Y eso es todo, ¿Sencillo, no? En el siguiente tutorial mostraré como gestionar un dispositivo Virtual y cómo trabajar desde uno físico para poder ejecutar tu primer aplicación. ¡Estar atentos!