Esqueleto de una aplicación Android – Capítulo 2 – Curso

10

La estructura de las aplicaciones en Android se orienta claramente al usuario, o quizás sería más exacto decir a su dispositivo.

En cualquier caso, usuario y dispositivo se expresan en una lengua, y este último, además, tiene unas características físicas determinadas y ejecuta una u otra versión del sistema.

Así, como veremos a continuación, cuando creemos una aplicación deberemos tener en cuenta las características de los dispositivos a los que se dirige, tanto en lo relacionado con el hardware como con la versión de Android que lo controla.

El manifiesto

El manifiesto (archivo manifest.xml en cualquier proyecto Android) es un archivo en formato XML (eXtensible Markup Language) en el que se definen las características generales de una aplicación, a saber:

  • El paquete: Es una cadena que describe de forma única a una aplicación, no siendo posible añadir una aplicación en la Play Store si ya existe otra con el mismo nombre de paquete. De igual manera, si instalamos en nuestro dispositivo una app con el mismo nombre (de paquete) que otra ya existente, la nueva sustituirá a la anterior.
  • El nombre: Es el nombre que aparecerá en la tienda, o el nombre que nos enseña el instalador cuando nos disponemos a instalar la aplicación.
  • La versión: El sistema define dos números diferentes para la versión de una aplicación: por un lado el número de compilación, que debe incrementarse en sucesivas actualizaciones (no es posible actualizar en la tienda una app con un número de compilación inferior al de la versión existente). Y por otro el número de la versión, que es el número que se mostrará al usuario y sobre el que no hay restricciones.
  • La versión de Android a la que se dirije: Se indica en este punto la versión (mínima y máxima) necesaria para que la aplicación se ejecute correctamente, no siendo posible instalar una aplicación en un dispositivo que tenga una versión de Android que no se encuentre en el rango especificado.
  • Los permisos: Lista de permisos que necesita la aplicación para ejecutarse correctamente, y que se le presentarán al usuario cuando instale la aplicación. Tal y como hemos indicado en alguna ocasión, Android no soporta aún que el usuario seleccione qué permisos desea otorgar, de entre la lista de permisos solicitados, así que éste deberá aceptarlos todos para poder instalar la aplicación.
  • Lista de actividades, servicios y receptores de mensajes: Enumeraremos en este apartado las actividades (ventanas) de nuestra aplicación, así como los servicios que ésta ofrecerá y los procesos de recepción de mensajes, así como los parámetros que activarán cada uno de ellos, si los hubiera.

Ejecutar un programa

En Android los programas no sólo se ejecutan cuando el usuario los invoca, haciendo clic en el icono correspondiente en el Drawer, por ejemplo; sino que éstos también se activan automáticamente dependiendo del estado del sistema.

Como veremos en las próximas sesiones, es posible indicar que una aplicación, o un servicio ofrecido por ésta, debe ejecutarse automáticamente cuando el dispositivo se inicie, o cuando se reciba una llamada o un mensaje, por ejemplo.

Idiomas

Al principio de este artículo nos referíamos al idioma del dispositivo; pues bien, en Android podemos personalizar la lengua en la que se muestra nuestra aplicación de forma transparente tanto al usuario como a la propia aplicación.

Para ello, lógicamente, deberemos incluir en nuestra aplicación las traducciones de las diferentes cadenas que visualizamos en ésta.

El directorio res, en un proyecto Android, contiene todos los datos relacionados con los recursos de una aplicación, tales como imágenes, a las que nos referiremos a continuación, y cadenas de caracteres.

Así, deberemos crear un directorio values-XX (donde XX es un código de idioma) para cada una de las lenguas a las que traduzcamos nuestra aplicación, incluyendo en dicho directorio un archivo strings.xml con la descripción de todas las cadenas en ese idioma concreto.

El propio sistema se encargará de acceder al archivo correcto dependiendo del idioma que se encuentre activo en el dispositivo, si es que hemos traducido nuestra aplicación a ese idioma, o al idioma por defecto (incluido en el directorio values) en caso contrario.

Es una norma no escrita que en el lenguaje por defecto de una aplicación Android es el inglés, por lo que las cadenas en inglés se incluirán en el archivo strings.xml del directorio res/values.

Adicionalmente, y como veremos, también es posible crear cadenas que varíen según la versión de Android del dispositivo en el que se ejecute la aplicación.

Imágenes

Tal y como ocurre con los idiomas, es posible y en muchos casos necesario, especificar imágenes e iconos diferentes para cada una de las resoluciones de pantalla de Android.

No hacerlo supondrá que nuestra aplicación se verá correctamente en los dispositivos con una resolución de pantalla similar a la usada durante el desarrollo pero no en dispositivos con pantalla más pequeña, o más grande.

La resolución de una pantalla la define la relación existente entre el tamaño de la misma (que se suele describir según el tamaño en pulgadas de ésta) y la densidad de píxeles (que es el número de éstos que caben en una pulgada), lo que nos permite hablar de pantallas pequeñas (ldpi), medianas (mdpi), grandes (hdpi) y extra grandes (xhdpi).

Incluiremos las imágenes relativas a cada una de las resoluciones en el directorio res/drawable-XX (donde XX es la resolución de pantalla) que corresponda.

De igual manera, el directorio res/drawable incluirá las imágenes que no cambian al cambiar la resolución de la pantalla, si las hubiera.

“Hola mundo”

Crearemos a continuación una pequeña aplicación (de prueba), que no hará nada salvo escribir un mensaje en la pantalla de nuestro emulador, o de nuestro teléfono si la instalamos en éste, pero que nos permitirá comprobar los conceptos explicados en este capítulo.

Para ello realizaremos los siguientes pasos:

  1. Abrir Eclipse,
  2. Seleccionar FileNewAndroid project en el menú de Eclipse,
  3. Escribir “Mi primer proyecto Android” en el cuadro “Project Name” y hacer clic en Next,
  4. Seleccionar Android 4.0.3 en la lista y hacer click en Next,
  5. Indicar “com.faqsAndroid.HelloWorld” en el cuadro “Package Name” y hacer click en Finish.

Hecho esto, comprobaremos que en la vista “Package Explorer” de Eclipse ha aparecido un elemento denominado “Mi primer proyecto Android”, sobre el que podremos hacer doble clic para ver los diferentes elementos que hemos comentado en este tutorial.

En cuanto a los directorios gen y bin, son directorios internos de Eclipse y no conviene eliminarlos ni modificarlos, mientras que el directorio src contiene el código de nuestro programa, que en este caso sólo crea una ventana que muestra un mensaje de texto.

Si ejecutamos la aplicación, comprobaremos que aparece en pantalla el ansiado “Hello World”. Ello es debido a que el esqueleto de una aplicación Android incluye una única ventana que muestra el mencionado mensaje en pantalla.

Si lo deseáis, podéis cambiar el valor de la cadena “hello” en el archivo res/values/strings.xml.

En próximos capítulos aprenderemos a modificar este esqueleto para adaptarlo a nuestras necesidades concretas, así como a crear otras ventanas según nuestras necesidades.

Imagen de previsualización de YouTube

Ejecución en el emulador

Para ejecutar este programa en el emulador tan sólo es necesario hacer clic con el botón derecho del ratón en el nombre de nuestra aplicación y seleccionar Run AsAndroid Application en el menú emergente, o hacer clic directamente en el botón ejecutar de la barra de botones de Eclipse.

Imagen de previsualización de YouTube

Ejecución en un dispositivo

Si por el contrario, preferimos ejecutar la aplicación en nuestro dispositivo, deberemos exportarla, para lo cual realizaremos los siguientes pasos:

    1. Seleccionar el nombre de la aplicación en la vista Package Explorer,
    2. Hacer clic con el botón derecho del ratón en el nombre de la aplicación y seleccionar Export en el menú emergente.
    3. Seleccionar AndroidExport Android Application en la pantalla que aparezca y pulsar Next.
    4. Pulsar Next,

La primera vez tendremos que crear nuestro almacen de claves, para lo cual seleccionaremos “Create new keystore”, seleccionaremos una ruta para el almacén de claves (del que convendría tener copia de seguridad) e introduciremos la contraseña del mismo, que guardaremos en lugar seguro, tras lo cual haremos clic en Next.

En caso que ya hayamos firmado alguna aplicación (o esta misma en alguna otra ocasión), seleccionaremos “Use existing keystore”, procediendo a introducir la ruta del almacén en el cuadro correspondiente, así como su contraseña, tras lo cual haremos clic en Next.

En la siguiente pantalla, en caso de que acabemos de crear el almacén de certificados, tendremos que crear un certificado nuevo, para lo cual deberemos rellenar un formulario con nuestros datos. Es importante que, por seguridad, la contraseña no sea la misma que hemos puesto en el paso anterior, mientras que el campo alias nos servirá para identificar el certificado en caso de que tuviéramos varios.

En caso que el almacén de claves ya existiera, simplemente seleccionaremos “Use existing key”, y procederemos a seleccionar el alias correspondiente, introducir su contraseña y hacer clic en Next,

Finalmente, seleccionaremos la ruta en la que debe almacenarse la aplicación en el cuadro “Destination APK File” y hacer clic en Finish.

Después tendremos que copiar el archivo generado en el dispositivo e instalarlo, para lo cual deberemos habilitar la instalación de aplicaciones de fuentes externas (habilitar configuraciónseguridadorígenes desconocidos en el dispositivo).

Imagen de previsualización de YouTube

Un apunte

Por eficiencia, Eclipse utiliza una caché interna que le permite acceder a los archivos muy rápidamente.

Cuando realizamos modificaciones a través del propio Eclipse, tanto la caché como los propios archivos se actualizan correctamente, tal y como debe ser.

Sin embargo, cuando actualizamos directamente los archivos en el disco, mediante las utilidades de copiar-pegar, mover, cambiar de nombre, etc del sistema operativo, Eclipse no reacciona tan bien como debiera y, en ocasiones, no detecta estos cambios.

Para evitar esto es conveniente forzar un refresco de la cache en Eclipse cada vez que hacemos algún cambio desde fuera del entorno, para lo cual haremos clic en el botón derecho del ratón encima del nombre del proyecto en la vista “Package Explorer” y seleccionaremos la opción refresh.

La próxima semana empezaremos el desarrollo de la aplicación que servirá para presentar los diversos componentes de Android, un gestor de archivos, centrándonos en esa primera sesión en el diseño de la pantalla.

Como siempre, os invitamos a visitar el Hilo oficial del Curso de Android de Foromóviles, donde podéis hacernos llegar vuestras dudas y comentarios.

10 comentarios

  1. Buenísimo tutorial!!! Me apunto!
    Quería aprender a desarrollar en Android y me va a venir muy bien, muchas gracias!

  2. Cuando le doy a file>new no me sale la opción Android project en el menú de Eclipse. He seguido todos los pasos del capitulo 1 y no se que ha podido fallar.

    Si pudieras ayudarme te lo agradecería ya que no quisiera quedarme descolgado.

    Gracias, buenísimo el tutorial.

    • Hola,
      Eso se debe a que no has instalado correctamente el plugin ADT para Eclipse.
      Por favor, vuelve a seguir los pasos para instalarlo y comprueba si te aparece algún error durante la instalación.
      Comprueba también si te aparecen los accesos directos al SDK de Android en la barra de iconos de Eclipse (son dos iconos que si te pones encima el texto que aparece es “Opens the Android SDK Manager” y “Opens the Android Virtual Device Manager”, y ambos tienen sendos androides como parte del icono.
      En caso que sigas teniendo problemas, si quieres podemos seguir en el foro, que podremos anexar imágenes, etc: http://foromoviles.com/threads/479-Curso-de-programaci%C3%B3n-android?p=1221#post1221

      • Estoy volviendo a instalar el plugin ADT para eclipse, aparte de la casilla Developer Tools me sale una con el nombre NDK plugin, como no decías nada de ella no la e marcado. Asta hay todo bien, reinicio eclipse pero no me sale la ventana para desarrollar en Android es necesario instalar el SDK asi que lo hago de forma manual como indicas. Indico el directorio donde lo e instalado que es diferente al que recomiendas (C:\Program Files (x86)\android-sdk).Es la unica diferencia con tigo.

        En File → New → sigue sin salirme Android project en el menú de Eclipse.

        Los 2 iconos que mencionas en la respuestas si me aparecen.

        Gracias por contestar.

        • Hola,

          El NDK no es necesario. Sirve para implementar usando C y C++, y se usa para implementar librerías, por ejemplo, cosa que excede de los objetivos de este curso.

          Asumo que estás en Windows…

          Al instalar el SDK te has acordado de definir la variable de entorno “ANDROID_SDK_HOME”?

          Después de instalar el ADT y reiniciar Eclipse, te aparece la pantalla en la que te pregunta por la instalación del SDK?

          Puedes ir a Eclipse -> Help -> Install New Software
          y en la ventana que aparece clicar en “Available Software Sites”
          y comprobar si en la lista aparece
          la localización http://dl-ssl.google.com/android/eclipse y en caso afirmativo comprueba que el check de la izquierda esté habilitado.

          Por último, si clicas en Eclipse -> Help -> About Eclipse Platform
          te aparece una ventana con una serie de iconos. Alguno es un androide?

          • no tenia marcada la opcion http://dl-ssl.google.com/android/eclipse asi que la e marcado (e reiniciado eclipse por si a caso)

            Si me aparece algun icono de android en About Eclipse Platform

            En el paso de la variable de entorno la tuve que crear.

            Mirando un poco e visto que en
            File → New → Project en el menú de Eclipse ay una carpeta llamada android con diferentes tipos de proyecto, quizas pueda crearlo desde hay.

            Gracias de nuevo

    • Hola,
      Ok, ya se lo que ha pasado.
      Entre que he hecho el tutorial y has realizado la instalación ha salido una nueva versión de Eclipse.
      En la anterior (Indigo) funcionaba como yo te he explicado.
      En la nueva (Juno) los proyectos de Android no son accesibles desde Menu -> File -> New Project sino desde Menu -> File -> New Project -> Android
      Que le vamos a hacer! Son cosas del directo 🙂

  3. Buenas noches, he empezado a crear la primera aplicacion de prueba “hola mundo” pero no me salen estos pasos a seguir:
    1.Abrir Eclipse,
    2.Seleccionar File → New → Android project en el menú de Eclipse,
    3.Escribir “Mi primer proyecto Android” en el cuadro “Project Name” y hacer clic en Next,
    4ñSeleccionar Android 4.0.3 en la lista y hacer click en Next,
    5.Indicar “com.faqsAndroid.HelloWorld” en el cuadro “Package Name” y hacer click en Finish.
    Los dos primero si me salen pero el resto es totalmente diferente y me pierdo… que puedo hacer? muchas gracias

  4. Debes tener la ultima release de Eclipse.
    En Application name pon lo que quieras (p.e. “Hello World”)
    En Project Name lo mismo y en package name “com.faqsAndroid.HelloWorld”

Dejar respuesta

Please enter your comment!
Please enter your name here