Curso de Bases Técnicas de Android

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 52

CURSO DE BASES TÉCNICAS DE ANDROID

Introducción a Android

Es un sistema operativo que está basado en Kernel Linux y fue diseñado por Google
ANDROID:

 Es un sistema Operativo
 Desarrollado por Google
 Dispositivos Móviles
 Kernel de Linux
 Open Source

Android 4.0 - Ice Cream Sandwich

 Octubre 2011
 Pantalla de Inicio personalizada
 Carpetas
 Control de uso de datos.

Android 4.1 - Jelly Bean

 Julio 2012
 Google Now - (Aprender de lo que te gusta, google sabe todo en base a las cuentas)
 Notificaciones
 Multiusuario (Tener varias cuentas de google al mismo tiempo)

Android 4.1 - Kit Kat

 Octubre 2013
 Teléfono Inteligente aprender de tus preferencias
 Llamadas
 Google Maps
 Contactos

**Android 4.1 - Kit Kat

 Octubre 2013
 Teléfono Inteligente aprender de tus preferencias
 Llamadas
 Google Maps
 Contactos

** Android 5.0 - Lollipop**

 Junio 2014
 Nace Material Design
 Multipantalla
 Notificaciones en la pantalla de bloqueo

**Android 6.0 - Marshmallow

 Agosto 2015
 Gestor de Permiso, Solo da permiso a los permisos básicos, ahora se solicita permiso a
todo.
 Batería Mejorada

Android 7.0 - Nougat

 Mayo 2016
 Incremento:
 Lenguaje (Más soporte a lenguajes)
 Notificaciones (Mejores estilos de notificaciones).
 Seguridad

Android 8.0 Oreo 2017

 Iconos adaptativos.
 Activación automática del Wi-Fi cuando lleguemos a casa.
 Incorporación del Project Treble. (Se cambia la arquitectura de Android para separar la
capa del sistema operativo de la capa de los drivers del fabricante)

Andoid 9.0 PIe 2018

 Navegación por gestos


 Comportamiento predictivo del uso de aplicaciones, batería del dispositivo y brillo de
pantalla
 Mejoras en las notificaciones. (Se muestran fotos o stickers en la propia notificación)

Android 10 2019

 Modo oscuro en todo el sistema


 Soporte para operar con banda de redes 5G y reconocimiento facial 3D
 Introducción de una nueva función llamada Bubbles (Notificaciones de burbuja)
 Control por intensidad de presión en pantalla
 Modo escritorio. (Permitirá replicar el contenido de la pantalla del teléfono inteligente en
un monitor externo mediante interfaz propia

Android 11 2020

 Rediseño de iconos de la interfaz


 Integración de nuevo centro de control de electrodomésticos conectados
 Soporte para ángulo de pantalla en móviles plegables
 Mejoras en el Asistente de Google con la voz. (El sistema podrá leer lo que se muestra en
pantalla)
 Conexión inalámbrica para Android Auto

Retos de desarrollar Apps

¿Cómo se desarrolla una aplicación móvil?

https://www.youtube.com/watch?v=kHs2jtICA44

Material Design para Android

https://developer.android.com/guide/topics/ui/look-and-feel?hl=es-419

Retos de desarrollar apps

Aspectos clave:

-Que la app esté disponible en variedad de dispositivos.

-**Versiona miento de sistemas operativos: **La cantidad de versiones que existen para android

-Versión mínima aconsejada: KitKat

-Densidad del dispositivo: Interfaz de usuario según los tamaños del dispositivo.

-Rendimiento: Uso de memoria y uso de CPU.


-Calidad: Las opciones disponibles para desarrollar en android para tener una mejor toma de
decisiones en base a nuestro conocimiento del sistema operativo. Independiente del lenguaje de
programación.

-Workflow y Métricas de diseño: Establecidas y muy importantes. Hay que tener claras sus
versiones, su evolución y el flujo de trabajo.

-Conocer qué lenguajes de programación a nuestro alcance y el entorno de desarrollo y las


ventajas que trae utilizar un entorno oficial de desarrollo de aplicaciones IDE.

-Testing de aplicaciones, su lógica, su flujo.

En resumen:

Para poder desarrollar en android se necesita conocer el sistema operativo en si y ciertas reglas
que google-android pone a nuestra disposición para desarrollar correctamente una app.

 Disponibilidad: En cuantos dispositivos va a correr nuestra app puede ser que sobre un
smartwatch en android tv en un teléfono o tableta
 El rendimiento: Se refiere a que dispositivos que tengan un mínimo de ram cpu y rom para
que pueda funcionar bien nuestra app
 Conocer los diferentes tipos de versiones que hay en android
 **La Regla de Android es: Que la app haga lo que dice que hace
 Seguir un Workflow (flujo de trabajo)
 Las métricas de diseño

Las 7 métricas que importan en las apps móviles

1. Usuarios Activos
2. Uso de la aplicación
3. Largada de la sesión (¿Cuántos minutos tiempo utilizan la aplicación?)
4. Retención
5. Coste de adquisición del cliente (CAC)
6. Ingresos medios por cliente o average revenue per user (ARPU)
7. Vida útil o customer lifetime value (LTV)

Retos de desarrollar apps

<h4>Disponibilidad</h4>

Uno de los primeros retos es la disponibilidad de la aplicación, es decir, la gamma de dispositivos


en la que nuestra aplicación va a funcionar correctamente. Ya sean teléfonos, tabletas, relojes
inteligentes, etc.

<h4>Rendimiento</h4>
Es una parte muy importante ya que hay que evitar problemas como cierres inesperados o que la
aplicación se quede congelada.

<h4>Calidad</h4>

Se necesita ofrecer un producto de calidad que funcione de forma correcta en la mayor cantidad
de dispositivos posibles.

<h4>Cómo superar estos retos</h4>

 Conocer el sistema operativo (Android)


 Fragmentación de dispositivos
 Versiones del sistema operativo
 Consumo de recursos
 Que la aplicación haga lo que promete
 Workflow y métricas de diseño

<h4>Otras bases técnicas de Android</h4>

 Lenguajes de programación
 Entorno de desarrollo (IDE)
 Testing
 Tienda de aplicaciones
Tipos de dispositivos Android y Soporte

Existen muchos dispositivos que tiene Android como sistema operativo, como celulares, tabletas,
relojes, televisiones, etc. Todos con sus distintas posibilidades y requerimientos.

<h4>Compatibilidad</h4>

 Compatibilidad con el dispositivo: Android puede correr en una gran variedad de


hardware y el SO debe ser capaz de ejecutarse completa y correctamente en todos ellos.
También debe poder ejecutar las aplicaciones que se encuentren la Play Store.

Por esta gran variedad es que siempre se debe verificar si el dispositivo cuenta con las
características necesarias para ejecutar correctamente la aplicación. Si cuenta con cámara,
almacenamiento suficiente, micrófono, GPS, etc.

 Compatibilidad con la aplicación: Esto se refiere a que la aplicación sea funcional en todos
los dispositivos, donde cada uno tiene diferentes tamaños y formatos de pantalla y en
todas se debe de poder usar la aplicación.
 Características del hardware: Cada aditamento de hardware tiene su
propio identificador para acceder a él.
 Versión de Android
 Configuración de pantalla
 minSdkVersion: Versión mínima que tendrá soporte la aplicación.
 targetSdkVersion: Versión a la cuál está dirigida la aplicación.
Lista de funciones de Android Enterprise:
https://developers.google.com/android/work/requirements?hl=es-419

Android Developers: https://developer.android.com/guide/topics/manifest/uses-feature-


element?hl=es-419#features-reference

 Compatibilidad con el Dispositivo, esto trata en que la aplicación funcione completamente


y perfectamente con nuestro dispositivo (hardware, que no haya errores).
 Para cumplir la compatibilidad con la aplicación debe tener:
 Características del Hardware, el hardware debe cumplir con los requisitos de la aplicación
(si la aplicación ocupara la cámara frontal, el hardware debe tener una cámara frontal).
 Versión de Android, la versión Android debe ser compatible con nuestra aplicación
 Configuración de pantalla, (cuadrado, redondos, etc)

Android lo podemos encontrar en una variedad de dispositivos:

 Teléfonos
 Tablets
 Wear OS
 Android Auto
 Android TV
 Chromebook
 etc.

Por su gran disponibilidad, debemos tener en cuenta un concepto llamado: COMPATIBILIDAD:

 Compatibilidad con el dispositivo al ser un SO Open Source, casi cualquier hardware puede
correr android. De este modo debemos fijarnos si el dispositivo posee Play Store, siendo
esta la prueba más eficaz de que podremos correr nuestras aplicaciones;

Revisa muy bien que el dispositivo que vas a comprar posea la tienda de aplicaciones, y los
aditamentos necesarios para el buen funcionamiento de tu app.

 Compatibilidad con la aplicación así como hay cosas buenas, también existe un lado
negativo de la gran cantidad de dispositivos que corren Android. Preguntas como el
tamaño de la pantalla, la resolución, características del hardware, versión, etc. Son las que
deberás hacerte para que tu aplicación pueda ejecutarse de manera óptima.

Afortunadamente Google tiene unas features que priorizan la privacidad del usuario. Por lo que
cada vez que requieras acceder a algo específico del hardware, deberás pedir un permiso al
usuario por medio de un identificador que se mostrará en un dialogo en pantalla.

Existe una documentación que te muestra cuales son los features de hardware a los que puedes
acceder:

Android Enterprise feature list | Google Developers

Minsdk version y targetsdk version: desde tu app, tu decides el API mínimo para el cual le darás
soporte. Así mismo, tendrás una versión con API objetivo, para la cual estará centrada tu app.
Que se debe tener en cuenta para crear una app en Android

Características del Hardware, el hardware debe cumplir con los requisitos de la aplicación (si la
aplicación ocupara la cámara frontal, el hardware debe tener una cámara frontal).

 Los permisos para acceder a estos recursos (memoria, contacto, etc)


 El mercado al que te dirijas y trabajar en base a eso (gama baja, gama media, gama alta)
 Cantidad de fragmentación en pantalla (dar soporte a la gran cantidad de forma y tamaños
de las pantallas en los dispositivos)
 El mínimo y el máximo de la versión de Api a la que darás soporte.

(ej: Desde “minSdkVersion 15” hasta “tarjetSdkVersion 26”)

Activity

Son las actividades de la aplicación, únicamente el activity es la pantalla de una aplicación.

Una actividad se va a componer solamente de dos cosas:

 **Archivo Java **(clase activity o alguna de sus derivados que son heredados)
 Layout (interfaz gráfica).

Ciclo de vida de una actividad:

 Created (onCreated); es cuando la actividad está siendo creada pero no es visible.


 Started (onStart); la actividad ya está creada y empieza a ser un tanto visible.
 Resumed (onResume); es el ciclo de vida máximo de una actividad, cuando ya está al todo
visible y toda creada.
 Paused (onPause); es parcialmente visible, normalmente sucede cuando llamamos a otra
actividad y la primera actividad se queda pausada o congelada.
 Stopped (onStop); se esconde, cuando sales de tu actividad principal para cambiarla por
otra, esta se esconde.
 Destroyed (onDestroy); es realizado con el botón de back, es como si toda esa actividad se
rompiera y tiene que volver a pasar por el metodo onCreated.

Clase java/Kotlin + Layout XML = Activity

Ciclo de vida de una Activity.

 onCreate() -> Create: Se crea la activity (No la clase), Bundle savedInstanceState guarda el
estado de la primer activity que creo la segunda activity. Se debe definir la lógica de
negocio que debe realizar la activity cuando interactue con el usuario.
 onStart() -> Started: La activity está visible.
 onResume() -> Resumed: La activity está (running) lista para interactuar con el usuario.
 onPause() -> Paused: Parcialmente vicible, está a punto de ser enviada a segundo plano,
debido al lanzamiento de otra activity. Si se vuelve a visualizar la activity se llama a
onResume().
 onStop() -> Stopped: la activity se va a ocultar (al precionar home, al superponerse otra
activity que oculte a la principal), va a ser detenida, pero sigue en la memoria RAM, se
deben guardar los estados que quieras recuperar al onRestart().
 onRestart() -> Started: Se pueden recuperar los estados guardados en onStop()
 onDestroy() -> Destroyed: La actividad es destruida (cuando se presiona el botón back), al
volver a lanzar la activity, reinicia por el proceso de onCreate().

Ciclo de vida de una actividad:

 Created (onCreated)
 Started (onStart)
 Resumed (onResume)
 Paused (onPause)
 Stopped (onStop)
 Destroyed (onDestroy)
Fragments

Fragment: Permite trabajar el contenido de la app como si fueran contenedores que


contiene una porción de interfaz gráfica, viven dentro de las actividades, el ciclo de
vida del fragment depende del ciclo de vida de una activity.

FragmentManager: Manejador de fragments, GetSupportFragmentManager().


Transaction: Reemplazar a un fragment por otro, hacer todo o nada, commit o
rollback.
Commit: Confirmación de la transacción.
 El ciclo de vida de un Fragment depende del ciclo de vida de un activity.
 Nos permiten trabajar el contenido de una aplicación en forma de contenedores, es
decir una porción de la interfaz.
 Una de las utilidades es la reutilización de porciones de interfaz.
 El cambio de fragments es llamado una transacción. Luego de esto se debe hacer un
commit para que se vea reflejado en la aplicación.
Intent

Cuándo estamos desarrollando una aplicación será muy común tener un flujo de
“ventanas” es decir más de un Activity conectadas entre sí. Los Intents nos servirán para
unir componentes de una aplicación, y podemos tener dos casos específiamente:

El que ya mencionamos, unir Activity’s dentro de la aplicación

Unir Activity’s que viven en diferentes aplicaciones

Los primeros se llamarán Explícitos

Los segundos Implícitos

Además hablando de Flujos en una aplicación notarás que Android tiene un botón especial.
El Botón de Back.

Este botón lo que hará será navegar en retroceso del flujo de la aplicación.

Tenemos otro que se introdujo en versiones recientes de Android:

Botón up.

Este está situado en la parte superior de la aplicación donde se encuentra el Toolbar y lo que hace
es navegar en Jerarquía del flujo de la aplicación. Se llama Up porque lo que hace es regresar al
nivel superior de donde provino.
Esos flujos pueden ser controlados a tu conveniencia para unir con más Activity’s usando Intent’s.

Services

Ejemplo de servicios

1. Spotify (sonar música mientras estoy en otra app)


2. Play store (descarga una app mientras estoy en otra app)
3. Rappi
4. WhatsApp (videollamada continua, aunque esté en otra app)

Services: (siempre background) Apagado ejecutada en segundo plano

“los servicios son todas esas funciones que se ejecutaran cuando tengamos el teléfono apagado,
por ejemplo, si estamos en Instagram, y el teléfono este apagado seguirá entrando las
notificaciones y cuando encademos el teléfono y entramos a la aplicación esta estará actualizada.”

Más sobre Services

Broadcast

Link: https://developer.android.com/reference/android/content/BroadcastReceiver
BroadcastReceiver

Public methods

final void abortBroadcast()

Sets the flag indicating that this receiver should abort


the current broadcast; only works with broadcasts
sent through Context.sendOrderedBroadcast.

final void clearAbortBroadcast()

Clears the flag indicating that this receiver should


abort the current broadcast.

final boolean getAbortBroadcast()

Returns the flag indicating whether or not this


receiver should abort the current broadcast.

final boolean getDebugUnregister()

Return the last value given


to setDebugUnregister(boolean).

final int getResultCode()


Retrieve the current result code, as set by the
previous receiver.

final String getResultData()

Retrieve the current result data, as set by the


previous receiver.

final Bundle getResultExtras(boolean makeMap)

Retrieve the current result extra data, as set by the


previous receiver.

final BroadcastReceiver.PendingResult goAsync()

This can be called by an application


in onReceive(Context, Intent) to allow it to keep the
broadcast active after returning from that function.

final boolean isInitialStickyBroadcast()

Returns true if the receiver is currently processing


the initial value of a sticky broadcast -- that is, the
value that was last broadcast and is currently held in
the sticky cache, so this is not directly the result of a
broadcast right now.

final boolean isOrderedBroadcast()

Returns true if the receiver is currently processing an


ordered broadcast.

abstract void onReceive(Context context, Intent intent)

This method is called when the BroadcastReceiver is


receiving an Intent broadcast.

IBinder peekService(Context myContext, Intent service)

Provide a binder to an already-bound service.

final void setDebugUnregister(boolean debug)

Control inclusion of debugging help for mismatched


calls to Context.registerReceiver().

final void setOrderedHint(boolean isOrdered)

For internal use, sets the hint about whether this


BroadcastReceiver is running in ordered mode.

final void setResult(int code, String data, Bundle extras)


Change all of the result data returned from this
broadcasts; only works with broadcasts sent
through Context.sendOrderedBroadcast.

final void setResultCode(int code)

Change the current result code of this broadcast;


only works with broadcasts sent
through Context.sendOrderedBroadcast.

final void setResultData(String data)

Change the current result data of this broadcast; only


works with broadcasts sent
through Context.sendOrderedBroadcast.

final void setResultExtras(Bundle extras)

Change the current result extras of this broadcast;


only works with broadcasts sent
through Context.sendOrderedBroadcast.

Los broadcast o transmisiones, transmisores, estarán siempre alerta a lo que se produzca en el


sistema operativo (batería baja, wifi disponible, llamadas entrantes, etc)

La composición de una app Android:

 Código fuente, está conectado con manifest.


 Manifest; esta encargado de todo lo que tenga que ver con el dispositivo móvil.
 Android Device.

Otro ejemplo

Broadcast

Los broadcast receivers son los receptores de trasmisiones, estos receptores están siempre alerta
de lo que sucede en el sistema operativo.

El archivo Manifest se encarga de tener declarado todo lo que tenga que ver con el dispositivo
móvil y se encarga de comunicar el código fuente de la aplicación con el hardware del dispositivo.
En este archivo también es donde están definidos los broadcast receivers.

Ejemplos de broadcasts: bateria baja, llamada entrante, mensaje entrante, wifi disponible, carga
conectada, etc.

A partir de estos broadcast podemos lanzar mensajes o características de nuestra aplicación


cuando ocurran ciertas cosas.
Código de una alarma:

Android Manifest

Se encarga de tener todo declarado todo lo que tenga que ver con el dispositivo
Esta alerta

El código fuente está conectado con el android manifest y el android manifest es la capa que tiene
contacto directo con el hardware del móvil.

Este el código de una alarma :


Asynctask

Link: https://developer.android.com/reference/android/os/AsyncTask

estaba destinado a permitir un uso adecuado y fácil del subproceso de la interfaz de usuario. Sin
embargo, el caso de uso más común fue para la integración en la interfaz de usuario, y eso
causaría fugas de contexto, devoluciones de llamada perdidas o fallas en los cambios de
configuración. También tiene un comportamiento inconsistente en diferentes versiones de la
plataforma, acepta excepciones de doInBackground, y no brinda mucha utilidad en comparación
con el uso Executordirecto de s.

AsyncTask está diseñado para ser una clase auxiliar Thready Handler no constituye un marco de
trabajo genérico. Idealmente, AsyncTasks debería usarse para operaciones cortas (unos pocos
segundos como máximo). Si necesita mantener los subprocesos en ejecución durante largos
períodos de tiempo, se recomienda encarecidamente que use las diversas API proporcionadas por
el paquete, java.util.concurrentcomo Executor, ThreadPoolExecutory FutureTask.

Una tarea asincrónica se define mediante un cálculo que se ejecuta en un subproceso en segundo
plano y cuyo resultado se publica en el subproceso de la interfaz de usuario. Una tarea asíncrona
se define por 3 tipos genéricos, llamados , Paramsy Progress, Resulty 4 pasos, llamados
onPreExecute, y .doInBackgroundonProgressUpdateonPostExecute
IDE Oficial de Android

Es el IDE oficial de Android, está basado totalmente en el entorno IntelliJ IDEA, es el más
recomendado pues está diseñado totalmente para desarrollar aplicaciones móviles muy rápido.

En mi experiencia he podido observar toda la evolución que este IDE ha tenido y cada cambio ha
traído sus gratos beneficios. Desde que nació y trajo la sorpresa de tener como motor constructor
de aplicaciones a Gradle, de quien sabrás más al respecto en las próximas clases.
Como ya te conté Android Studio tiene características exclusivas para móviles que te hacen mucho
más sencillo construir y probar tus apps.

Un Dispositivo Virtual (Emulador) para probar tus apps

Este es una simulación de un dispositivo real de Android, los hay en muchas de sus variables,
teléfonos, tablets, smart watch, Android tv. En él podrás hacer la mayoría de las cosas que
ejecutas en un dispositivo real. Siendo de gran ayuda para testear tus aplicaciones en dispositivos
específicos.

Puedes ejecutar gestos, tomar fotografías, cambiar la dirección del teléfono, simular una llamada
entrante así como también simular geolocalizaciones etc. Es muy flexible y muy rápido de
habilitar.
Nos permite construir para todos los dispositivos

Android Studio cuenta con una distribución de archivos modular permitiéndonos construir una
aplicación compatible para cada tipo de dispositivo manteniendo los proyectos separados
haciendo personalizable el código separado para cada uno.

Instant Run hará que correr tus apps sea muy rápido

La primera vez que corras una proyecto grande de Android notarás que tomará bastante tiempo, y
esto es porque es una gran cantidad de archivos los que se necesitan para construir el ejecutable.
Uno de los horrores para los desarrolladores era que este tiempo que tenían que esperar era cada
vez que decidían correr la aplicación y esto es siempre una gran constante cuando estás
desarrollando, siempre deseas ir viendo el resultado del código que programas.

Ahora con Instant Run será mucho más sencillo, la primera vez tomará tiempo compilar la
aplicación para correrla pero después este IDE inteligente reconocerá solamente los cambios que
ocurrieron y solamente esos será los que compile, reduciendo muy notablemente el tiempo.
Github y Control de versiones integrado

Cuando trabajamos en equipo en proyectos de desarrollo usar git es obligatorio y una de las
plataformas más conocidas es Github, Android Studio tiene una herramienta integrada para el
manejo de versiones que únicamente tienes que activar.

Es un entorno gráfico sencillo y muy accesible de usar, que nos ahorrará un par de minutos en
teclear comandos. (La verdad es que amo los comandos, pero a muchos les agrada esta parte de
Android Studio).
Depuración Integrada

Android Studio tiene un sin fin de aditamentos que te ayudarán a construir aplicaciones mucho
más rápido, desde el autocompletado de código, los accesos directos, así como la depuración
integrada que vemos a continuación:

Android Monitor / Android Profiler

Próximamente conocido como Android Profiler Es un monitor de rendimiento de apps que nos
permite dar seguimiento del consumo de CPU, Batería y memoria de tu aplicación, nos permite
analizar solicitudes de red, etc.

Como ves es muy conveniente usar Android Studio, pues está totalmente enfocado al desarrollo
con Android, si desarrollarás apps móviles definitivamente deberás usar este IDE.

Qué es y Cómo funciona Gradle


Gradle es un sistema de compilación que reune en un uno solo las mejores prestaciones de otros
sistemas de compilación. Está basado en JVM (Java Virtual Machine), lo que significa que puedes
escribir tu propio script en java, y que Android Studio lo entenderá y lo usará.

Lo mejor de gradle es que es un plugin, lo que facilita su actualización y su exportación de un


proyecto a otro. Esto significa que puedes tener tu propio lenguaje de programación y
automatizar el proceso de compilación en un solo paquete (de la misma manera que un jar en
caso de java) y poder distribuirlo al resto del mundo.

¿Por qué google ha creado Gradle?

Google ha creado uno de los sistemas de compilación más avanzados del mercado para permitir a
todos los usuarios escribir sus propios scripts sin necesidad de aprender ningún nuevo lenguaje,
disminuyendo asi la curva de aprendizaje y permitiendo llegar a un mayor público la programación
en Android.
¿Qué ventajas tiene Gradle?

 Permite reutilizar facilmente código.


 Hace sencilla la tarea de configurar y personalizar la compilación.
 Permite la distribución sencilla de código al resto del mundo, y fomenta el trabajo en
equipo.
 Gestiona las dependencias de forma potente y cómoda (está basado en Maven).
 Permite la compilación desde consola, lo que nos puede hacer más sencilla la tarea de
compilación en sistemas sin el entorno de desarrollo montado.
 Lo más importante es que hace increíblemente fácil la creación de diferentes versiones de
la aplicación, por ejemplo para hacer múltiples versiones para móbiles o tables, versiones
de pago o gratuitas, etc..

Como podemos ver, siempre hay mucho más detrás de un simple botón.

Otro ejemplo

Gradle, es una herramienta o un asistente que hace más rápida la construcción de proyectos de
desarrollo (Gradle suele ser más vista en java). apk

Las principales funciones de Gradle:

 Integrar dependencias
 Crear un sistema de archivos
 Generar un ejecutable

Datos sobre Gradle:

 Esta basado en Groovy


 Usa Domain Specified Languaje – JSON

Entonces, Gradle integra dependencias a nuestro código, compila el código y empaqueta nuestras
aplicaciones. Apk
Archivo principal

Apk = significa Aplication pack


Ejemplo:

Generación de un apk en Android

APK es la extensión de los archivos ejecutables en Android su significado es application package,


generarlo tiene un proceso interesante y se lleva a cabo bajo un proceso de compilación.

Te explicaré a pasos cómo es que se genera un archivo apk.

1. El compilador de Android convierte tu código fuente a un tipo de bytecode pero más


eficiente para la máquina virtual de Android estos son archivos .dex.
2. Gradle empaqueta los archivos .dex y todos los recursos que usaste en la aplicación,
imágenes, audios, videos, etc. generando un .apk

3. Gradle firma tu apk resultante usando una keystore.


4. Se puede generar un apk a modo de solo pruebas o general un apk listo para ser lanzado a
la tienda, para cada caso será el tipo de keystore que debas usar.
O
5. Como detalle notarás que al ejecutar el empaquetado intervendrá zipalign quien generará
una versión optimizada del .apk para el teléfono
Google Play Services

Son todos los servicios de aplicaciones de google para interconectarlas con nuestras apps,

Requisitos:

 Instalar el .apk de Google Play Services.


 Incluir la librería del servicio que vayas a usar.

por ejemplo:

 Integrar login con Google


 Analytics
 Soporte con wareables
 Google Mapas

Para que puedan funcionar se necesita la librería del servicio que se necesite trabajando en
conjunto con el APK.

Otro ejemplo:

Google play services todo el tiempo se actualiza se encarga de los cambios en el sistema como
logotipos y performance en apps

No funcionan a través de interfaz grafica todo el tiempo en background

APIS de Google Play Services

Lo que verás a continuación es una relación de todos los servicios de Google que tienes disponible
para integrar a tus proyectos Android como librerías:

Link para más información: https://developers.google.com/android/guides/setup?hl=es-419


Lenguajes para programar en Android

Hay varios lenguajes que podemos usar para el desarrollo de app en android uno de ellos y el mas
antiguo es Java, también existe otro lenguaje que trabaja de forma nativa y es Kotlin en este
resuelve muchos problemas que java aun no puede resolver, también tenemos JS que se trabajan
en muchos Frameworks como Reactive Native, Ionic que se ocupan para sustituir el Xml que
ocupamos en Java y Kotlin para esquematizar la interfaz Gráfica.

Tenemos otro entorno de desarrollo que es Xamarin que se basa en el Lenguaje C sharp que lo que
intenta hacer es hacer app totalmente nativas tanto para ios como para android, web y de
escritorio.

Y por ultimo tenemos NativeScript que es parecido a Ionic pero presume ser un poco mas rápido y
eficiente.

los lenguajes para andorid

java - en android esta unido con xml para las interfaces

kotlin en android esta unido con xml para las interfaces

react native - en android utiliza html y css para las interfaces (Java - kotlin)

ionic- en android utiliza html y css para las interfaces (JavaScript)

xamarin en android (C#)

especifico

<h4>Java</h4>

Es un lenguaje con mucha comunidad y soporte, así como librerías de terceros. Es el lenguaje que
más tiempo se lleva usando en Android. Se desarrollan las interfaces con XML…

<h4>Kotlin</h4>

Resuelve muchos problemas que tiene Java, como excesivas líneas de código y punteros nulos. Es
fácil de aprender e interoperable con Java. Las interfaces también funcionan con XML.

<h4>React Native</h4>

Permite ahorrarnos el código XML y desarrolla las interfaces con tecnologías web por lo que son
muchos más portables a otros ambientes, pero igual el control de esta es mediante Java o Kotlin.

<h4>Ionic</h4>

Es recomendable para proyectos pequeños, trabaja enteramente con lenguajes web, nada de Java
o Kotlin. Es básicamente una aplicación web incrustada en una aplicación nativa.

<h4>Xamarin</h4>

Funciona con C# y es sencillo de aprender, presume de entregar aplicaciones nativas tanto para
Android como para iOS.
JAVA KOTLIN JAVA SCRIPT REACT IONIC XAMARIN
NATIVE

Xamarin su motor principal es: C Sharp

Qué es Material Design

Material Design son las métricas de diseño de aplicaciones fueron construidas por Google y traídas
a Android a partir de la versión 5.0 Lollipop.

Específicamente lo que se introdujo es un


tema nuevo, nuevos widgets y nuevas API’s
de desarrollo.

Un tema nuevo que ofrece dos versiones


obscuro y claro, que es dependiendo del
tema que le quieras dar a tu proyecto.
Sobre los widgets nuevos, entendamos widgets por elementos de la interfaz gráfica. Tenemos los
siguientes:

 Tarjetas
 Listas de Tarjetas
 Una nueva Toolbar
 Bottom Bar
 Nuevos botones de acción
 Editores de texto con efectos
 Etc.

Material Design está basado en el manejo real y físico de materiales, como son especialmente
hojas de papel, además que este, permite jugar con las sombras para crear efectos
tridimensionales, la integración de animaciones es tan realista que se comportarán de acuerdo a
las leyes de la física, por lo tanto para general esto último tenemos API’s de desarrollo que se
integraron para trabajar con efectos y animaciones que hagan más interactivo el diseño.

Materiales:

Link:

https://m3.material.io/

https://dribbble.com/

Widgets de interfaz gráfica


Flutter la nueva forma de hacer interfaces en Android y iOS

Flutter es el nuevo SDK de Google creado para diseñar interfaces nativas iOS y Android. Utiliza el
lenguaje de programación Dart y fue creado para programadores de interfaces móviles. Esto es el
comienzo de lo porvenir en lo que será el frontend mobile.

Hoy crearemos un hola mundo con Flutter para iOS y Android.


1. Elige un Editor de Código

Puedes trabajar con Flutter usando un editor de código y la línea de comandos, así como también
en múltiples editores como IntelliJ IDEA, Visual Studio Code, etc… Mi recomendación es que
utilices Android Studio funciona desde la versión 3.0.

2. Instala el plugin de Flutter y Dart

Lo siguiente que tienes que hacer es instalar en Android Studio el plugin de Flutter y Dart puedes
hacerlo yendo a Preferences > Plugins en mac o en Windows/Linux File > Settings > Plugins

En la ventana de Plugins selecciona Browse repositories, escribe flutter y da click en install.

Un botón como este:

Selecciona que deseas instalar el plugin de Dart y después te pedirá reiniciar el IDE.

3. Descarga el SDK de Flutter


Puedes descargarlo de este enlace (https://docs.flutter.dev/get-started/install )según el sistema
operativo que uses.

Descomprimelo y sigue las instrucciones.

4. Si usas mac, abre el emulador de iOS

Flutter nos da la posibilidad de reutilizar el código de una interfaz y usarlo en iOS, para esto
deberás tener Xcode 9 o superior instalado y configurado.

Abre el emulador poniendo la siguiente línea de comandos en la terminal:

5. Abre el emulador de Android

Para abrir el emulador de Android puedes hacerlo desde el IDE Android Studio Android Studio >
Tools > Android > AVD Manager. Si no tienes un device, créalo y si ya lo tienes solamente
arráncalo.

6. Crea un proyecto Flutter en Android Studio

Una vez que ya tienes los dos plugins: Flutter y Dart estarás listo para crear un nuevo proyecto de
Flutter, ve a File > New Flutter Project
Escribe el nombre de la aplicación, en mi caso usé: flutter_app.

Selecciona el SDK, el cuál corresponde a la carpeta zip que descargaste en el punto 3.


Espera mientras se crea el proyecto. Puede demorar un poco.
Cuando termine verás del lado izquierda la composición del proyecto, el archivo principal que
contiene la interfaz de usuario es main.dart

En la parte superior izquierda deberás ver encendidos los emuladores iOS y Android que iniciamos
en pasos anteriores.
Arranca el proyecto dando play y seleccionando el emulador de tu preferencia, y verás corriendo
una aplicación que te muestra el número de veces que pulsas el Floating Action Button.

iOS y Android respectivamente.

Consideraciones para trabajar con Hardware en Android

NOTAS:

El hardware en android es uno de sus fuertes y ésto es porque android nos permite tener acceso a
todo el hardware del dispositivo, podemos tener acceso a la camará, cualquier dispositivo físico
que se conecte por usb, el micrófono, bocina, botones físicos.

Android nos provee de clases especiales desde la parte nativa para poder acceder a ellos, entonces
consumirlos y utilizarlos y construir nuestras propias aplicaciones que manipulen el hardware de
diferente tipo de teléfonos android.
A partir de android marshmallow siempre tenemos que solicitar permisos de forma dinámica, en
android ya se solicitaban permisos, pero ahora lo hacemos cada vez que el usuario va a utilizar esa
especificación de hardware desde la aplicación.

Podemos hacer aplicaciones que se sincronicen con otros dispositivos, pero generalmente siempre
tendremos que instalar en el desarrollo de la aplicación, tendremos que instalar la librería que nos
permite tener la comunicación con ese hardware, por sí solo el proyecto no funcionará.

OTRO EJEMPLO:

Consideraciones para trabajar con Hardware en Android

En Android es posible acceder a todo el hardware del dispositivo (botones, cámara, micrófono,
etc.) mediante clases especiales nativas respectivas para nuestras aplicaciones.

A partir de Android 5.0 se solicitan permisos de manera dinámica, pidiendo permiso cuando se van
a usar por primera vez.

Para el hardware adicional que se conecte al dispositivo se necesita usar la librería o SDK para
poder comunicarte con el dispositivo externo y usarlo en tu aplicación.

RESUMEN

Podemos agregar nuevo hardware como por ejemplo proyectos de arduino, nvidia jet o raspberry
pie, pero necesitamos las librerías para que se integren a nuestro proyecto.

OTRO RESUMEN

Se puede acceder y utilizar al hardware del dispositivo, considerando que desde la versión Android
6 Marshmallow, se solicitará permiso para manipular el hardware del dispositivo Android.

Es posible acceder a un hardware externo conectado al dispositivo, pero el proveedor tendrá que
proporcionar el SDK para instalar la librería y poder establecer la comunicación de la aplicación
con ese hardware.

SDK: es el acrónimo de “Software Development Kit” (Kit de desarrollo de software). El SDK reúne
un grupo de herramientas que permiten la programación de aplicaciones móviles.

Este conjunto de herramientas se puede dividir en 3 categorías:

1) SDK para entornos de programación o sistemas operativos (iOS, Android, etc.)


2) SDK para el mantenimiento de aplicaciones
3) SDK de marketing y publicidad
Almacenamiento
Niveles de Almacenamiento y tipos
 Interna(el del teléfono).
Tipos de almacenamiento:  Externo(sd card).
 Share Preference(datos primitivos).
1.- Interno (del dispositivo movil):  Bases de datos.
 Conexión a Web Service.
2.- Externo (SD Card expandir memoria del dispositivo): Validar que el dispositivo tenga o no la SD
Card.
Niveles de almacenamiento:

1.- File (clase de java): Incluir y dejar disponible en el celular, txt, png, etc etc, puede vivir en la
memoria interna o externa.

2.- SharedPreference: Se compone a partir de datos primitivos del tipo clave-calor, vivira en el
dispositivo y dentro del paquete de la aplicacion.

3.- Bases de datos (SQLite): tipos de datos complejos, trabaja la información en relaciones de
datos, dentro del paquete de la aplicacion, encriptar en la SD Card,

4.- Web service: Persistencia traspasa la aplicacion por medio de internet, base de datos interna
y/o externa en otro servidor, el dispositivo requiere tener conexion a internet.

Trabajar con aplicaciones OnLine y OffLine.

File y SharedPreferences

1re ejemplo:

File y Shared Preference

1er Nivel “Files”: Crea un archivo de cualquier tipo. Se puede trabajar de forma nativa con la clase
“file” en Java/Kotlin.

2do Nivel “Shared Preference:” Son mas complejos y ocupa una estructura Xml File y trabaja de
modo clave/valor.

2do ejemplo

SharedPreferences permite guardar datos en el formato key-value en un archivo XML.

File permite crear archivos de cualquier tipo con capacidad de guardar información con nuestro
propio formato.
Aquí se debe guardar los datos

También se puede trabajar

Se instala
Se ingresa el modo

Ahora se agrega la edit


Content Providers Bases de Datos y Network

Datos más complejos

Motor de base de datos que utiliza Android, internamente.

Base de Datos: Para trabajar con datos estructurados, complejos y relacionales. Se almacenan
dentro del dispositivo, pero se puede almacenar externamente. Aunque, puede que la información
se vea vulnerable. Por lo que, los datos se deben encriptar para proteger la información.

SQLite es un motor de base de datos que emplea Android. En la cual, las aplicaciones pueden
guardar su información con las preferencias de los usuarios con data más extensa, a comparación
de Shared Preferences.

Los datos viven, mientras la aplicación viva. En caso, se desinstale la app, lo datos se perderán.

Content Provider (Proveedor de Contenido): Permite acceder a las bases de datos de otras
aplicaciones que estén proveendo contenido. Ej. Consumir datos de los contactos del teléfono.
No requieren de conexión a internet.

Web Service: Los datos se pueden almacenar también en una base de datos que se encuentra en
alguna parte de internet. Antes, es necesario identificar si el dispositivo puede acceder a internet.
Además, podemos crear validaciones para limitar la cantidad de datos a consumir. Permite,
trabajar con aplicaciones off-line.

Los servidores deben estar siempre online para que los datos estén disponibles. Para ello, se
puede usar plataformas Cloud. Por ej. Azure, Amazon Web Service, Firebase, etc.

Otro ejemplo

Los Content Providers (proveedor de contenido para otras aplicaciones) nos ayudan a definir datos
más complejos que estén disponibles a otras aplicaciones, como por ejemplo:

Tenemos dos aplicaciones y necesiten tener comunicación de datos una con la otra, esto es muy
beneficioso ya que no utilizan la Red de Internet, son datos en modo Offline.
Entonces para que las dos apps compartan datos no necesitan estar conectadas a internet, pueden
usar un content providers como intermediario para acceder a la base de datos local que vive en el
teléfono.

Desafortunadamente al desinstalar la aplicación estos datos se borran y cuando la instales otra vez
estos datos empiezan desde cero.

En cuanto a Network podemos usar un servidor, dará una persistencia mayor a los datos, será una
forma de backup.

Como funciona el network, la Aplicación móvil se conectará al servidor a través de una URL que se
conoce como un endpoint que accederá al webservice, envía la solicitud al servidor si quiere
enviar datos y el servidor la almacena y le regresa una respuesta a la app móvil. Si la app móvil
está solicitando un conjunto de registros de clientes, el servidor hace su consulta a su base de
datos interna y le devuelve una cantidad de registros de clientes, y la app lo único que hará será
mostrar datos.

El servidor necesitará estar siempre Online, de lo contrario la aplicación ya no tendrá acceso a esos
datos.

Podemos contratar intermediarios que nos ayuden a mantener online nuestra aplicación
funcionando, podemos usar:

Firebase, Azure, Amazon Web Services, ibm, etc.

Otra explicación

Content Providers Bases de Datos y Network

<h4>Bases de datos</h4>

La forma de trabajar con bases de datos es con SQLite, está diseñado para dispositivos con
hardware limitado y es muy flexible. El almacenamiento es solo accesible durante el ciclo de vida
de la aplicación, cuando se desinstale la aplicación los datos se perderán. Se recomienda para
datos complejos y relacionados entre sí.

<h4>Content Providers</h4>

Sirven para proveer datos accesibles para diferentes aplicaciones, lo que hace este método es
tener una conexión a una base de datos del sistema operativo y el content provider ofrece
métodos a las aplicaciones para crear, eliminar, consultar o actualizar la base de datos.

<h4>Network</h4>

Este método va más allá del ciclo de vida de la aplicación, ya que los datos son almacenados en un
servidor que de una persistencia a los datos. La aplicación, mediante internet, realizará peticiones
al servidor a través de un WebService y el servidor le devolverá la información que solicitó. El
servidor siempre debe estar en línea para que no se pierda la persistencia.
Tipos de Testing en Android y UI Test

Llevar un proceso de Testing en nuestras aplicaciones debe ser un proceso rigurosamente


obligatorio, testear tus aplicaciones hará tus usuarios reciban mayor calidad en el producto que les
estás proporcionando.

Existen algunos tipos de pruebas que podemos ir ejecutando progresivamente a nuestras apps.

 Pruebas de unidad local


 Pruebas instrumentadas
 Pruebas de interfaz de usuario

Éstas se pueden ver ubicadas en la siguiente pirámide desde la base hasta la punta:

Las pruebas de unidad local son test pequeños que a medida que vas generando código lo vas
probando rápidamente en tu computadora. También puedes programar código automatizado que
ejecute una prueba.

Las pruebas de instrumentación principalmente las deberás ejecutar en el dispositivo y son


básicamente pruebas donde integras los test anteriores a fin de que módulo a módulo la
aplicación se vaya comportando adecuadamente, aquí testeamos que los módulos, servicios, etc.
funcionen en conjunto.

Las pruebas de interfaz de usuario son totalmente enfocadas en el flujo de la interfaz de usuario,
con esto nos aseguramos que las tareas que debe realizar el usuario en la aplicación funcionen
como se espera.

Android Studio te ayudará a llevar los procesos de Testing que requieren tus apps, posee
herramientas que nos ayudan a lograr esto. Investiga productos, frameworks, etc. que te ayudan a
ejecutar cualquiera de los tipos de pruebas que vimos hace un momento, compartelos en la
sección de comentarios.
TIPOS DE TESTING EN ANDROID

Es un paso que NO SE PUEDE OMITIR ya que este garantiza la calidad de nuestra app en los
diferentes tipos de dispositivos, los tipos de prueba son:

Locales: Son pequeños test que a medida que se va generando código se va probando.

Instrumentación: Principalmente se prueban en dispositivos físicos y verificamos que los servicios


trabajen bien en conjunto.

Interfaz de Usuario: Son enfocadas a la interfaz de usuario y a su flujo.

Tienda de Aplicaciones Android

Google Play Store es la tienda oficial de aplicaciones android, en ella encontrarás todo el catálogo
de aplicaciones que puedes instalar en tu dispositivo.

Como desarrollador móvil te interesará entrar y dejar disponibles tus aplicaciones para que todo el
mundo pueda conocer tu trabajo. El único requisito para lograr esto es obtener una cuenta de
desarrollador de Google Play. Para ello deberás:

1. Registrarte en este enlace https://play.google.com/apps/publish/signup/


2. Aceptar el acuerdo de distribución para desarrolladores, lo puedes consultar aquí:
https://play.google.com/about/developer-distribution-agreement.html
3. Pagar la única tarifa de registro de $25 USD al día de hoy.
4. Completar los datos de la cuenta.

Una vez hecho esto te dará acceso al Google Play Console


(https://play.google.com/apps/publish/?account=7750131643547052717#AppListPlace) y estarás
listo para publicar tus aplicaciones.

En la Google Play Console podrás administrar todas las fases de publicación de tu app, además de
probar y recopilar datos antes de lanzar o incluso una vez que ya lo hiciste, puedes asignar precios
y manejar informes de ventas, ver y administrar comentarios de tus usuarios, tener estadísticos y
datos para entender y mejorar la estabilidad de tu producto. Todo esto ofrece la consola de
Google Play entre muchas otras cosas más.

También podría gustarte