v1.1
Oct 2010
Autores:
http://tmovil.usal.es
Tema 1: Introducción a Android.
¿Qué es Android?
En Android todas las aplicaciones son ejecutadas con los mismos privilegios,
no existe diferencia entre las aplicaciones del núcleo y aquellas creadas por terceras
personas. Una aplicación puede utilizar todas las características proporcionadas por el
teléfono ofreciendo a los usuarios gran variedad de servicios. Se puede desde cambiar la
pantalla de inicio, el programa de marcación telefónica o la aplicación por defecto que se
utilizará para la visualización de fotografías.
1
Android: http://www.android.com/
2
Open Handset Alliance: http://www.openhandsetalliance.com/
3
Google: http://www.google.com/
http://tmovil.usal.es
Con Android se intentan romper las barreras de desarrollo e innovación en
aplicaciones para móviles. Un desarrollador puede combinar información obtenida desde una
página Web con la información en su propio teléfono para mejorar la experiencia de usuario.
Historia y desarrollo.
http://tmovil.usal.es
Ilustración 1. Android Timeline
http://tmovil.usal.es
Además de las fechas que se muestran en el diagrama, es importante resaltar ciertos
hechos significativos en este periodo de tiempo para explicar la evolución de ésta plataforma
para móviles.
En noviembre de 2007 se publica la primera versión del SDK para que pueda ser
utilizado por desarrolladores.
En enero de 2008 se anuncia el primer concurso de aplicaciones para Android que tuvo
gran acogida con más de 1700 participaciones.
En agosto de 2008 se presenta el Android Market, una plataforma libre para la
distribución de contenido entre usuarios y desarrolladores.
En septiembre de 2008 se anuncia el primer móvil con Android: HTC G1 o Google
phone; coincidiendo con la publicación de la versión 1.0 del SDK.
En abril de 2009 se publica la nueva versión del sistema operativo con el SDK: Android
1.5 Cupcake.
Empresas participantes
Empresas de software (ver Ilustración 5) son las encargadas del desarrollo de software.
Dentro de estas empresas destaca Google4.
Los fabricantes de componentes (ver Ilustración 4) son los encargados de crear
hardware compatible con la plataforma. Dos ejemplos de grandes empresas
5 6
participantes son Nvidia o Intel .
4
Google: http://www.google.com
5
Nvidia: http://www.nvidia.com
http://tmovil.usal.es
Fabricantes de móviles (ver Ilustración 3) cuya finalidad es la producción de teléfonos
móviles. Destacan empresas como HTC7 o Sony Ericsson8.
Operadoras de telefonía (ver Ilustración 2) y de comercio (ver Ilustración 6)
encargadas de distribuir la plataforma mediante modelos de servicios profesionales. En
España participan dos grandes operadoras como Telefónica9 y Vodafone10.
6
Intel: http://www.intel.com
7
HTC: http://www.htc.com
8
Sony-Ericsson: http://www.sonyericsson.com
9
Telefónica: http://www.telefonica.com
10
Vodafone: http://www.vodafone.com
http://tmovil.usal.es
Ilustración 3. Fabricantes de teléfonos.
http://tmovil.usal.es
Ilustración 5. Compañías de Software.
10
http://tmovil.usal.es
Ilustración 7. Arquitectura Android
Linux Kernel
Características
Actualmente Android utiliza el estándar de kernel versión 2.6.27
No existe soporte para glibc: Biblioteca estándar de C que entre otras características
proporciona y define llamadas al sistema y es muy utilizada en sistemas GNU basadas
en el kernel de Linux.
11
http://tmovil.usal.es
Se añade un conjunto de mejoras en el kernel para el soporte de Android. Destacan la
introducción del Binder y el Power Management.
Alarm: herramienta para el control del tiempo. Dentro de la API se encuentran tres
tipos de relojes que permiten este control:
El encargado de medir el tiempo real.
Un reloj que mide el tiempo que lleva el dispositivo encendido sin contar el
tiempo en suspensión.
Un reloj que mide el tiempo total que lleva el dispositivo encendido.
Ashmem (Anonymus Shared Memory): sistema de memoria compartida que ofrece
las interfaces necesarias para que los procesos puedan compartir bloques de
memoria.
Low Memory Killer: herramienta llamada automáticamente que escanea los procesos
ejecutados y libera memoria cuando ésta escasea.
Kernel Debugger: instrumento que facilita la depuración y el desarrollo de
aplicaciones.
Logger: herramienta que permite almacenar mensajes del registro del kernel en un
buffer (zona de memoria reservada para almacenamiento temporal). Los procesos de
usuario pueden escribir y leer de este buffer.
Binder: cuando las aplicaciones corren en procesos separados y desean comunicarse
y compartir información puede producirse agujeros de seguridad. Para solucionar
este problema se crea un controlador para mejorar la comunicación entre procesos o
IPC (Inter-Process Comunication) mediante llamadas a unas API de más alto nivel.
Mejora el rendimiento en el uso de memoria compartida.
Para peticiones de procesamiento existe una pila de hilos por proceso.
Mantiene la referencia del contador y del mapeo de objetos entre procesos.
Proporciona llamadas sincronizadas entre procesos.
Power Management: da solución al problema de limitación de batería de los
dispositivos móviles. Crea un administrador de energía con una política más
agresiva que funciona por encima del gestor del kernel de Linux. Para que las
aplicaciones puedan mantener activa la CPU se utilizan los denominados wake locks,
gracias a este servicio se evita que el teléfono entre en suspensión o sleep mode. En
la Ilustración 9 se puede observar un diagrama de secuencia explicando el
funcionamiento del Power Management.
12
http://tmovil.usal.es
Ilustración 9. Power Management.
Bibliotecas nativas
Características
Biblioteca Bionic: se trata de la implementación propia de la biblioteca estándar de C
(glibc) para su uso integrado en el sistema. Esta licenciada bajo BSD. Esta biblioteca se
carga con cada proceso, por ello se necesita que sea rápida y de pequeño tamaño
debido a la limitada capacidad de procesamiento de los terminales. Es por estas razones
por la que se creó esta biblioteca completamente nueva. Está preparada para trabajar
con los servicios específicos de Android. Bionic libc no es compatible con GNU libc
(glibc) y no soporta ciertas características de las interfaces de sistemas operativos
portátiles, POSIX (Portable Operating System Interface).
Biblioteca de funciones:
Webkit: está basada en el código abierto del navegador Webkit. Es compatible con
CSS, JavaScript, DOM, y AJAX. Es capaz de mostrar las páginas a tamaño
completo. (Más información en la web de Webkit11).
11
Webkit: http://webkit.org/
13
http://tmovil.usal.es
Media Framework: biblioteca basada en el OpenCORE de PacketVideo. Este motor
proporciona las características esenciales para el desarrollo de aplicaciones
multimedia. Soporta estándares de video y audio. (Más información en la web 12)
SQlite13: gestor liviano transaccional de almacenamiento de datos. Implementa el
motor de bases de datos SQL.
Servidores nativos:
Surface Flinger: proporciona un compositor de pantallas. Se encarga de manejar
todas las capas enviándolas al dispositivo de frame buffer (encargado de la porción
de memoria que almacena los gráficos antes de ser enviados a la pantalla). Para
transferir las capas al buffer utiliza llamadas al Binder IPC. Es capaz de manejar
superficies en 2D y 3D utilizando OpenGL ES (API gráfica OpenGL 14 para sistemas
integrados) y aceleración hardware.
Audio Flinger: es el encargado de manejar todas las salidas de audio. Procesa los
flujos de sonido mediante un modulador de pulsos codificados (PCM) y los envía a
una o varias salidas de audio.
12
PacketVideo: http://www.packetvideo.com/products/android/index.html
13
SQlite: http://www.sqlite.org/
14
OpenGL: http://www.opengl.org/
14
http://tmovil.usal.es
Android Runtime
15
http://tmovil.usal.es
Application Framework
En esta capa se encuentran las estructuras que soportan las aplicaciones creadas. A
continuación se pueden observar sus diferentes componentes.
Activity Manager: gestiona el ciclo de vida de las aplicaciones. Interactúa con todas las
actividades corriendo en el sistema.
Package Manager: se encarga de manejar información relacionada a los paquetes de
aplicaciones instalados en el sistema.
Windows Manager: gestiona la capa de mayor nivel donde las aplicaciones pueden
colocar sus ventanas
Telephony Manager: proporciona la información sobre los servicios de telefonía del
dispositivo.
Resource Manager: proporciona el acceso a los recursos distintos al código como
cadenas, gráficos y plantillas de diseño o layouts.
Notification Manager: permite a las aplicaciones mostrar notificaciones en la barra de
estado.
Content Provider: permite a las aplicaciones acceder a datos de otras aplicaciones y
compartir sus propios datos.
View System: el sistema de vistas es utilizado para construir la aplicación incluye listas,
botones e incluso un visor web integrado.
16
http://tmovil.usal.es
Dentro de los recursos provistos por el hardware se encuentran desde recursos
referentes a la conectividad, a sensores internos y relativos a la localización del terminal.
17
http://tmovil.usal.es
Tema 2: Desarrollo de Aplicaciones en Android (I)
En este tema se pretende indicar los pasos necesarios para comenzar a crear una
aplicación. Una vez conocido la estructura de la plataforma es importante conocer los
recursos provistos por Google para desarrollar software para Android. Además del SDK, se
explica el ciclo de vida de las aplicaciones y los bloques más importantes que pueden
constituirlas.
15
Java SE, Sun Microsystem: http://java.sun.com/javase/reference/index.jsp
16
Android SDK: http://developer.android.com/sdk/1.5_r2/index.html
18
http://tmovil.usal.es
Ilustración 14. Emulador de Android.
Además el SDK también proporciona una serie de útiles para depurar, empaquetar e
instalar aplicaciones en el emulador o en el dispositivo.
Herramientas
Android Emulator: se trata de un teléfono móvil virtual ejecutado en nuestro ordenador.
Puede usarse para diseñar, depurar y testear nuestras aplicaciones en un entorno del
sistema operativo Android.
Android Development Tools Plugin (for Eclipse IDE): una extensión para el entorno de
desarrollo que permite crear y depurar aplicaciones más fácil y rápidamente en Eclipse.
Android Virtual Devices (AVDs): configuraciones creadas del emulador para modelar la
aplicación con distintas características. En cada configuración se pueden especificar la
plataforma de Android, las características hardware y la piel o máscara del emulador.
Las funciones de cada AVD son independientes, al igual que el amancebamiento de la
información de usuario y la tarjeta de memoria.
Hierarchy Viewer: herramienta que permite depurar y optimizar la interfaz de usuario.
Proporciona una representación virtual de la jerarquía de capas.
Draw 9-patch: permite crear fácilmente una imagen NinePatch (imagen que se puede
escalar ciertas partes) usando un editor del tipo WYSIWYG, es decir lo que ves es lo
que obtienes (what you see is what you get).
Dalvik Debug Monitor Service (ddms): herramienta que interactúa con la maquina
virtual de Android, Dalvik. Permite gestionar los procesos en el emulador/dispositivo y
ayuda en la depuración.
Android Debug Bridge (adb): facilita la instalación de aplicaciones (archivos apk) en el
emulador/dispositivo y acceder a éste mediante la línea de comandos.
19
http://tmovil.usal.es
Android Assent Packaging Tool (aapt): permite crear los archivos apk que contienen los
recursos y los archivos binarios de las aplicaciones para Android.
Android Interface Description Language (aidl): permite generar código para una interfaz
de procesos.
SQlite3: se incluye por conveniencia. Gracias a ella se puede acceder a los archivos de
bases de datos SQlite creadas y usadas en programas de Android.
Traceview: herramienta para producir un análisis gráfico de las vistas y de los registros
de traza de datos que se pueden generar en una aplicación de Android.
Mksdcard: permite crear una imagen virtual de una tarjeta de memoria para emular la
presencia de ésta en el emulador.
Dx: reescribe bytecodes de los archivos class en Android bytecodes (archivos dex).
UI/Application Exerciser Monkey: se trata de un programa que corre en el emulador y
genera un flujo de eventos pseudo-aleteatorios de eventos de usuarios como, clicks,
eventos táctiles o movimientos. Se puede utilizar realizar un test de stress en la
aplicación que estas depurando.
Android: script que permite manejar los AVD’s y generar los archivos ant que pueden
utilizarse para compilar las aplicaciones para Android.
20
http://tmovil.usal.es
Ilustración 15: Fallo de conexión HTTPS muy común
21
http://tmovil.usal.es
7. Cierra el instalador y vuelve a abrirlo. Debería de aparecer la siguiente pantalla:
9. Clic en Available packages y marcar al menos una plataforma, una Google API y si se
desea tener la documentación cuando no se tiene acceso a Internet marcar también
para descarga. Si se desea conectar un terminal Android en Windows, descargar
también el driver USB. En la siguiente pantalla ( Ilustración 17) se puede ver
seleccionada la última plataforma disponible en el momento de elaboración de esta
documentación, junto con la documentación y Google APIs más recientes. También
aparece seleccionado el driver USB para Windows.
22
http://tmovil.usal.es
Ilustración 18: Selección de paquetes a instalar
10. Clic en Accept All y Install Accepted. Esperar a que se descarguen y se instalen los
paquetes elegidos.
11. Comprobar que todo está OK. Para el caso de haber seleccionado los paquetes de la
Ilustración 17 al hacer clic en Installed Packages debería mostrarse lo siguiente:
23
http://tmovil.usal.es
Ilustración 19: Paquetes instalados
12. Ahora es necesario instalar el Plug-in que enlace Eclipse con el SDK de Android. Para
ello hay que descargarse el ADT Plug-in siguiendo las instrucciones en
http://developer.android.com/sdk/eclipse-adt.html
13. Desde ECLIPSE 3.5 (Galileo) Clic en Help -> Install New Software
14. En Available Software clic en Add… y pon un nombre significativo como por ejemplo
“Android Plugin”
15. En el campo Location pon la URL https://dl-ssl.google.com/android/eclipse/ (Si no
funciona prueba a cambiarla por http:// (Sin la S). Clic en OK. Después de la instalación
cerrar ECLIPSE y volver a abrirlo.
16. Elige los siguientes componentes como en la Ilustración 20 y clic en Next.
24
http://tmovil.usal.es
Ilustración 20: Instalación del plug-in ADT para ECLIPSE
17. Ahora hay que configurar el plug-in indicándole dónde tenemos instalado el Android
SDK. Para ello Window -> Preferences. Elegimos Android en el panel izquierdo y se
nos indicará que debemos de configurar el Android SDK como muestra la Ilustración 21
25
http://tmovil.usal.es
Ilustración 21: Configuración del ADT
18. Ahora le indicamos dónde se encuentra la carpeta del SDK haciendo clic en Browse,
que en este caso se llama android-sdk-windows. Hacemos clic en Apply (esperamos
unos segundos y si todo ha ido bien se mostrará una pantalla como la Ilustración 22
26
http://tmovil.usal.es
Ilustración 22: ADT enlazado correctamente con el Android SDK
27
http://tmovil.usal.es
Ilustración 23: Lanzar el Android SDK and AVD Manager
3. Rellenamos los campos del emulador por ejemplo como muestra la Ilustración 25 y
hacemos clic en Create AVD. Nota: Si se desea que el emulador de información sobre si
dispone o no de cierto hardware cuando es interrogado por nuestro programa, añadir en
Hardware los valores que necesitemos. El emulador por ejemplo, reproducirá sonido
independientemente de estos valores, la diferencia está en que si le añadimos el valor
de hardware “Audio playback= false” desde nuestro programa podremos detectar con
28
http://tmovil.usal.es
nuestro código (y probar) si un dispositivo no es capaz de reproducir sonido (para por
ejemplo sacar un mensaje de alerta por pantalla).
4. Si todo ha ido correctamente, a partir de ahora veremos la pantalla del gestor de AVDs
29
http://tmovil.usal.es
Ilustración 26: Gestor de AVDs con un emulador disponible
5. Ahora ya sólo queda arrancar el emulador haciendo clic en Start. (Esto debe hacerse
siempre al menos una vez para probar las aplicaciones y puede tardar varios minutos en
arrancar la primera vez, y un tiempo nada razonable las siguientes veces, por lo tanto
se recomienda no cerrar el emulador mientras estemos trabajando). Cuando el
30
http://tmovil.usal.es
Ilustración 27: Emulador (AVD) arrancado
Arquitectura aplicación
Por la filosofía utilizada por Android, los elementos de una aplicación pueden ser
utilizados por otras, si éstas lo permiten. Para conseguir esto, el sistema debe ser capaz de
ejecutar un proceso de una aplicación cuando una de sus partes lo necesite. Es por ello que
al contrario que la mayoría de las aplicaciones en otros sistemas, las aplicaciones en Android
no tienen un solo punto de entrada para todo, es decir no hay por ejemplo una función
“main()“. En vez de ello los componentes esenciales de la aplicación pueden ser iniciados
cuando se necesiten.
Activity
Una actividad (activitity) representa una interfaz grafica para una acción que el
usuario puede realizar. Puede tratarse por ejemplo de una lista que presente una serie de
opción que pueden elegirse. Si tomamos como modelo una aplicación para mandar
mensajes, una actividad puede ser la que liste los contactos a los que se van a mandar un
31
http://tmovil.usal.es
mensaje, una segunda actividad para escribir el mensaje y otras para reenviar antiguos
mensajes o cambiar opciones. Aunque trabajen en conjunto para formar una interfaz gráfica
de usuario, cada actividad es independiente de las otras y es implementada como una
subclase de la clase Activity.
Cada actividad tiene una ventana para dibujar en ella. Normalmente esta ventana
rellena la pantalla completa pero puede no ser así. Una actividad puede utilizar ventanas
adicionales como un cuadro de dialogo.
El contenido visual de la ventana esta provista por una jerarquía de vistas. Cada una
de éstas controla un espacio rectangular en la ventana. Las vistas padres organizan la
organización de las vistas hijas. Las últimas clases de la jerarquía dibujan los rectángulos
que controlar y responden ante las acciones de usuario. Dentro de estas vistas se incluyen
los botones, los campos de textos, elementos de menú, etc.
Services
Se puede definir un servicio (service) como un proceso que corre durante un tiempo
indefinido de forma invisible para el usuario. Carecen de interfaz gráfica. Sus utilidades son
muy variadas desde reproducir música de fondo hasta descarga información de la red
mientras el usuario se dedica a otras tareas.
ContentProvider
BroadcastReceivers
32
http://tmovil.usal.es
esté baja pero además las nuevas aplicaciones también pueden iniciar nuevos mensajes de
difusión.
Una aplicación puede tener todos los broadcast receiver que se desee para responder
a ciertos mensajes. Estos objetos heredan de la clase BroadcastReceiver.
Al igual que los servicios, no poseen interfaz grafica, pero si son capaces de lanzar
una nueva actividad en respuesta a la información recibida.
Intents
Mientras que los Content Providers son iniciados por un ContentResolver, existe una
clase especial para iniciar actividades, servicios y receptores de difusión: la clase Intent. Un
intent es un mensaje de llamada asíncrono. Para las actividades y servicios se especifica la
acción que se va a realizar y la dirección de la información con la que se va a trabajar. Para
los receptores de difusión, el Intent nombra la acción que va a ser anunciada.
Activa (o corriendo): cuando está en primer plano de la pantalla. Esta actividad tiene el
foco y recibe las acciones del usuario.
Pausada: ha perdido el foco pero es aún visible para el usuario, es decir, existe una
actividad por encima de ella de modo transparente o no ocupando la pantalla entera. La
actividad pausada mantiene toda la información y se mantiene adjunto al manejador de
ventanas, pero puede ser cerradas por el sistema en caso de baja memoria.
Parada: la actividad ha sido cubierta completamente. Mantiene su estado y la
información pero probablemente será eliminada por el sistema cuando se necesite más
memoria.
33
http://tmovil.usal.es
Ilustración 28. Ciclo de vida de una actividad
El ciclo de vida completo de una actividad sucede entre la llamada onCreate(), donde
realiza su configuración inicial, hasta la única llamada a onDestroy(), donde libera los
recursos restantes.
34
http://tmovil.usal.es
El ciclo visible de una actividad ocurre entre onStart() y onStop(). Durante este tiempo
el usuario puede ver la actividad en pantalla, no necesariamente en primer plano. Las
llamadas a estas funciones pueden realizarse muchas veces, cada vez que la actividad
pasa de estar escondida a mostrarse al usuario.
El ciclo de vida en primer plano sucede entre las llamadas a onResume() y onPause().
En este momento la actividad se encuentra por encima de las demás actividad y recibe
las acciones del usuario. Con frecuencia una actividad puede pasar de pausada a
reanudada por lo que el código entre estas dos llamadas debe ser lo más ligero posible.
Puede ser iniciado y estar funcionando hasta que se a detenido (por si mismo o por otro
elemento).
Puede ser utilizado mediante una interfaz definida por cada servicio. Los clientes
establecen una conexión para utilizarlo. Si el servicio no esta iniciado se crea con la
primera llamada.
35
http://tmovil.usal.es
Es importante al igual que en las actividades, mencionar el comportamiento de
ciertos bucles en el ciclo de vida de un servicio.
Cuando se crea un nuevo proyecto Android bien mediante el uso de Eclipse o con la
herramienta Android17, se crea automáticamente una serie de directorio y de ficheros. Cada
uno de estos elementos tiene una función específica dentro de la aplicación.
Nombre Función
17
Crear proyecto sin Eclipse:
http://developer.android.com/guide/tutorials/hello-world.html#noeclipse
36
http://tmovil.usal.es
<proyecto>/Referenced Libraries Carpeta donde se encuentran las
bibliotecas externas referenciadas o
utilizadas en el código.
Android Manifest.
Describe los paquetes Java para la aplicación. Cada paquete tiene un identificador único
para la aplicación.
Detalla los componentes de la aplicación: actividades, servicios, receptores de difusión y
proveedores de contenido. Relaciona cada una de las clases correspondientes a cada
37
http://tmovil.usal.es
componente. Mediante esta declaración el sistema sabe qué componentes pueden ser
lanzados bajo qué condiciones.
Especifica que procesos mantendrá los componentes de la aplicación.
Declara los permisos que necesita la aplicación para acceder a partes protegidas de las
API.
Se especifica también los permisos que se deben tener para interactuar con los
componentes de esta aplicación.
Especifica el “level” mínimo que debe tener la API de Android para hacer funcionar la
aplicación.
Describe las bibliotecas que la aplicación debe enlazar.
38
http://tmovil.usal.es
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<uses-permission />
<permission />
<permission-tree />
<permission-group />
<instrumentation />
<uses-sdk />
<application>
<activity>
<intent-filter>
<action />
<category />
<data />
</intent-filter>
<meta-data />
</activity>
<activity-alias>
<intent-filter> . . . </intent-filter>
<meta-data />
</activity-alias>
<service>
<intent-filter> . . . </intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter> . . . </intent-filter>
<meta-data />
</receiver>
<provider>
<grant-uri-permission />
<meta-data />
</provider>
<uses-library />
<uses-configuration />
</application>
</manifest>
39
http://tmovil.usal.es
Para más información sobre la declaración de elementos en el AndroidManifest.xml
se recomienda visitar la documentación oficial18.
Gracias al uso de Eclipse junto con el plugin de Android, la creación de una aplicación
es muy sencillo, basta con dirigirse dentro de Eclipse al menú File > New > Android
Project
40
http://tmovil.usal.es
- Activity name: nombre de la actividad principal de la aplicación.
- Application name: nombre que tendrá la aplicación y que mostrará en el teléfono.
Una vez rellenados los campos, es necesario marca la opción “Create new Project in
workspace”. Haga clic en Finish y se creará la aplicación Hello World (Hola mundo) lista para
ser ejecutada.
Se creará una actividad que se lanzará cuando se ejecute la aplicación que tendrá
una apariencia similar a este código:
En este fragmento vemos, como se declara la función onCreate() que será llamada
automáticamente cuando se inicie la actividad. En esta aplicación en concreto simplemente
se mostrará por pantalla una pantalla con el mensaje “Hello world, <actividad>” tal y como
esta definido en el archivo <proyecto>/res/layout/main.xml. Para ello se realiza la llamada
setContentView(R.layout.main).
41
http://tmovil.usal.es
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
42
http://tmovil.usal.es
emulador con una configuración concreta. Además si Eclipse detecta que la aplicación que se
está compilando se encuentra instalada, la elimina e instala la nueva versión.
Desarrollo en un teléfono
Sistemas Windows
Conecte el terminal Android vía USB. Cuando se le notifique que se ha encontrado un
nuevo hardware conectado y le pregunte si desea que Windows busque el software.
Seleccione No y haga clic en Siguiente.
Seleccione instalar desde una lista o localización específica y haga clic en Siguiente.
Si utiliza un sistema Windows de 32 bits: Seleccione Buscar el mejor controlador en esta
localización. Navegue a la carpeta usb_driver\i386 en el paquete del SDK
(<SDK>\usb_driver\x86).
Si utiliza un sistema Windows Vista de 64 bits: Seleccione Buscar el mejor controlador
en esta localización. Navegue a la carpeta usb_driver\amd64 en el paquete del SDK
(<SDK>\usb_driver\amd64).
Haga clic en Finalizar. El sistema debería instalar los archivos del controlador necesario.
Puede necesitar reiniciar el ordenador.
Sistemas Linux
Identifíquese como súper usuario (root) y cree el archivo: “/etc/udev/rules.d/50-
android.rules”.
43
http://tmovil.usal.es
Para usuarios de Ubuntu Dapper, edite el archive como:
Finalmente ejecute
44
http://tmovil.usal.es