Curso Android
2005
Google adquiere Android Inc.
Comienzan a trabajar en una máquina virtual Java optimizada para móviles Dalvik VM.
2007
Se crea consorcio Open Hanset Alliance
Objetivo: promover el diseño y difusión de la plataforma Android.
Compromiso: publicar como código abierto licencia Apache 2.0.
Primera versión del Android SDK.
2008
Primer móvil con Android (T-Mobile G1).
Google libera código fuente de Android.
Se abre el Android Market.
2009
Google lanza la versión 1.5 y 2.0 del SDK.
2010
Se consolida como una de los SO más utilizados.
Versiones 2.1, 2.2 y 2.3 del SDK.
2011
Versión 3.x para tablets (Honeycomb) y versión 4.x (Ice Cream Sandwich) tanto para móviles como para tablets.
50% del mercado.
2012
Android Market reemplazado por Google Play Store.
Versiones 4.1 y 4.2 (Jelly Bean).
70% del mercado.
2013
Versiones 4.3 y 4.4 (KitCat).
2014
Versión 4.5 (Lollipop).
Mercado 85%.
2015
Versión 6.0 (Marshmallow).
2016
Versión 7.0 (Nougat).
Los servicios más importantes que incluye son:
Las aplicaciones Android están escritas en Java, por lo que necesitas instalar un software para ejecutar código Java en tu equipo. Este software se conoce como máquina virtual Java, entorno de ejecución Java, Java Runtime Environment (JRE) o Java Virtual Machine (JVM).
Es muy posible que ya tengas instalada la máquina virtual Java en tu equipo.
Alt-Intro: Solución rápida (Ej. añade imports de las clases no resueltas).
Shift-F6: Cambia el nombre de un identificador.
Ctrl-Alt-L (Option-Cmd-L en Mac): Formatea automáticamente el código.
Ctrl-Q (F1 en Mac): Muestra documentación del código.
Ctrl-P: Muestra parámetros del método seleccionado.
F4 (Cmd-flecha hacia abajo en Mac): Salta a declaración.
Ctrl-Y (Cmd-Espacio en Mac): Borra línea.
Alt-Insert (Cmd-N en Mac): Inserta método.
Carpeta que contiene el código fuente de la aplicación. Los ficheros Java se almacenan en carpetas según el nombre de su paquete.
Carpeta que contiene los recursos usados por la aplicación.
En esta carpeta se almacenan una serie de ficheros Gradle que permiten compilar y construir la aplicación.
El fichero más importante es build.gradle (Module:app) que es donde se configuran las opciones de compilación del módulo.
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 9
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
}compileSdkVersion: nos permite definir la versión del sdk con la que compilamos la aplicación. Las nuevas versiones no solo añaden funcionalidades al API, también añaden mejoras en los procesos.
buildToolsVersion: define la versión de las herramientas de construcción.
applicationId: ha de coincidir con el nombre del paquete Java creado para la aplicación. Se utiliza como identificador único de la aplicación, de forma que no se permite instalar una aplicación si ya existe otra con el mismo paquete.
minSdkVersion especifica el nivel mínimo de API que requiere la aplicación. La aplicación no podrá ser instalada en dispositivos con versiones anteriores y solo podremos usar las funcionalidades del API hasta este nivel (con excepción de las librerías de compatibilidad).
targetSdkVersion indica la versión más alta con la que se ha puesto a prueba la aplicación. Cuando salgan nuevas versiones del SDK tendrás que comprobar la aplicación con estas versiones y actualizar el valor.
versionCode y versionName indica la versión de tu aplicación. Cada vez que publiques una nueva versión incrementa en uno el valor de versionCode y aumenta el valor de versionName según la importancia de la actualización. Si es una actualización menor el nuevo valor podría ser "1.1" y si es mayor "2.0".
buildTypes se añaden otras configuraciones dependiendo del tipo de compilación que queramos (relase para distribución, debug para depuración, etc.).
dependencies: indica todas las librerías que han de ser incluidas en nuestro proyecto. Si necesitas usar alguna librería de compatibilidad adicional has de incluirla aquí.
Una intención representa la voluntad de realizar alguna acción; como realizar una llamada de teléfono, visualizar una página web. Se utiliza cada vez que queramos:
Los componentes lanzados pueden ser internos o externos a nuestra aplicación. También utilizaremos las intenciones para el intercambio de información entre estos componentes.
La llegada de las tabletas trajo el problema de que las aplicaciones de Android ahora deben soportar pantallas más grandes. Si diseñamos una aplicación pensada para un dispositivo móvil y luego la ejecutamos en una tableta, el resultado no suele resultar satisfactorio.
Para ayudar al diseñador a resolver este problema, en la versión 3.0 de Android aparecen los fragments. Un fragment está formado por la unión de varias vistas para crear un bloque funcional de la interfaz de usuario. Una vez creados los fragments, podemos combinar uno o varios fragments dentro de una actividad, según el tamaño de pantalla disponible.
Las aplicaciones instaladas en un terminal Android necesitan compartir información. Android define un mecanismo estándar para que las aplicaciones puedan compartir datos sin necesidad de comprometer la seguridad del sistema de ficheros. Con este mecanismo podremos acceder a datos de otras aplicaciones, como la lista de contactos, o proporcionar datos a otras aplicaciones.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Object o = null;
o.toString();
setContentView(R.layout.activity_main);
}Este cambio introduce un NullPointerException en tu código.
Para averiguar más sobre el error, inserta un punto de ruptura (breakpoint) en el código fuente en la línea Object o = null; (el breakpoint se introduce haciendo clic en la barra de la izquierda).
Entonces selecciona Run > Debug ‘app’ (Mayús+F9) o pulse en para ejecutarlo en modo Debug. Tu aplicación se reiniciará pero esta vez quedará suspendida cuando alcance el punto de ruptura que has introducido. Entonces puedes recorrer el código en modo Debug, igual que se haría en cualquier otro entorno de programación. Pulsa en Run > Step Over (F8) para ir ejecutando las líneas una a una.
El sistema Android utiliza el fichero LogCat para registrar todos los problemas y eventos principales que ocurren en el sistema. Ante cualquier error resulta muy interesante consultarlo para tratar de encontrar su origen.
La clase Log proporciona un mecanismo para introducir mensajes desde nuestro código en este fichero. Puede ser muy útil para depurar nuestros programas o para verificar el funcionamiento del código. Disponemos de varios métodos para generar distintos tipos de mensajes:
Log.e(): Errors
Log.w(): Warnings
Log.i(): Information
Log.d(): Debugging
Log.v(): Verbose
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d("HolaMundo","Entramos en onCreate");
super.onCreate(savedInstanceState);
Object o = null;
o.toString();
setContentView(R.layout.activity_main);
}