miércoles, 3 de abril de 2019

Máquina virtual

Una máquina virtual se crea con un software especial que emula a un ordenador real con todos sus recursos y componentes.
En computación, virtualización se refiere a crear una versión virtual de cualquier cosa, así sea un dispositivo de almacenamiento, recursos de red o un sistema operativo. Este tipo de prácticas no son solo útiles para profesionales y amantes de la tecnología, ya que ofrece soluciones para todo tipo de usuarios, permitiéndote probar distintas cosas en un solo ordenador.

Una de las formas más comunes en las que se usa la virtualización es para ejecutar dos sistemas operativos lado a lado, gracias al uso de las llamadas “máquinas virtuales“.

¿Qué es una máquina virtual?

Una máquina virtual es un software que emula un ordenador justo como si fuese uno real. Todo esto sucede en una ventana dentro de tu sistema operativo actual como cualquier otro programa que uses. La idea de este tipo de software es que puedas ejecutar sistemas operativos como si fuesen una aplicación, mientras este cree que está usando el hardware de un ordenador físico común. Cada vez que quieras usar este sistema operativo puedes abrir el software de virtualización y “encender” tu máquina.Resultado de imagen para android maquina virtual

Instalación:

Luego de descargar los dos archivos anteriores, deberian tener dos comprimidos.

Descomprimimos el SDK. Yo recomiendo colocarla en C: para que sea mas facil acceder y sepamos bien donde esta. Al descomprimir el sdk, veremos dos carpetas.. una de ellas es el sdk y la otra es un entorno de desarrollo, la segunda no nos sirve por lo que podemos borrarla. La primera la renombramos a sdk o la dejamos asi si quieren (eso queda a gusto de cada uno). Luego la movemos a C: (como digo, yo la coloco acá, para saber bien donde esta y acceder sin problemas).

Ahora al descomprimirla veremos los siguientes archivos:

Ahora procedemos a ejecutar el SDK Manager.exe, al hacerlo veremos una ventana como la siguiente:
 

Aquí descargaremos todas las librerías para poder programar android. Seleccionamos las plataformas que usaremos, en mi caso descargue todo menos las versiones 3.0 de android, simplemente porque no trabajo esas versiones. Si se programa para versiones anteriores a esta, la aplicación correrá sin problemas.

Bien ya teniendo todo eso.. podemos proceder a descomprimir el archivo de eclipse que descargamos (lo pueden colocar donde quieran, incluso dentro de la misma carpeta sdk, queda a gusto de cada uno).

Ejecutamos eclipse.exe nos preguntara una ruta donde queremos que se guarden los proyectos, dejamos la que esta (también pueden cambiarla si lo desean).

Ya asi pueden usarlo, pero aun no para programar android, necesitamos instalar un plugin.


Instalación plugin android en Eclipse:

Para instalar el plugin vamos a Help>Install New Software...
Ahora veremos una ventana como esta:
Hacemos click en el botón Add y nos saldrá una nueva ventana donde nos pedirá el nombre y la dirección del plugin. En nombre ponemos por ejemplo Android y en Location lo siguiente:


Código:
https://dl-ssl.google.com/android/eclipse/Al darle en OK escaneara lo que puede descargar y cuando termine nos saldrá una ventana como la siguiente:
Ya solo queda darle a Next y cuando pida aceptar la licencia, lo hacemos y listo. Al finalizar pedirá reiniciar eclipse, lo hacemos y ya tenemos todo preparado para programar android.

Ahora solo queda configurar las maquinas virtuales para poder probar nuestra aplicación sin tener que instalarla en nuestro móvil.


Creación de Maquina Virtual:

(las imágenes de esta sección son mías y las tome desde linux, pero es exactamente igual para windows)

Vamos a Windows>Android Virtual Device Manager, al hacerlo veremos una ventana como la siguiente:

En la imagen anterior se ven dos maquinas virtuales, esas ya las tenia creada, a ustedes les saldrá blanca esa sección. Para crear una maquina virtual hacemos click en New... y veremos ahora una ventana como la siguiente:
 

Aquí debemos completar los campos dependiendo del tipo de maquina que deseamos crear, tenemos que tener en cuenta, la versión de android, el tamaño de pantalla principalmente.

Completando los campos se vería algo así:
Bien, al darle a OK nos creará la maquina virtual (esto puede tardar varios segundos, no se asusten). Cuando este creada veremos que ya nos sale en la lista de Maquinas Virtuales:
Ahora si, tenemos todo listo para programar. Podemos crear una aplicación y probar a ver si anda sin necesidad de usar nuestro móvil.

lunes, 1 de abril de 2019

Estructuras de carpeta Android

ANDROID

PASOS PARA CREAR EL PRIMER PROYECTO ANDROID EN ECLIPSE.
 Menú de opciones: File -> New -> Android Application Project.
En este diálogo especificamos el nombre de la aplicación y proyecto (pueden ser iguales) y el nombre del paquete java donde se almacenarán los archivos java que creemos (normalmente la url de su empresa al revés).
Ahora empezaremos a presionar el botón next para pasar a otras configuraciones de nuestra aplicación, por el momento dejaremos todos los valores por defecto en cada una de los diálogos que aparece (son 5 diálogos actualmente), en el último diálogo debe aparecer el botón "Finish" el cual presionamos.
El ADT nos genera todos los directorios y archivos básicos para iniciar nuestro proyecto:
No haremos en este momento un análisis del significado y objetivo de cada uno de estos directorios y archivos generados, sino a medida que avancemos con este curso iremos viendo en forma puntual y profunda.
La interfaz visual de nuestro programa para Android se almacena en un archivo XML en la carpeta res, subcarpeta layout y el archivo se llama activity_main.xml. En esta carpeta tenemos creada nuestra primer pantalla.
Al seleccionar este archivo el ADT nos permite visualizar el contenido en "vista de diseño (Graphical Layout)":
Si seleccionamos la otra pestaña podemos visualizar el archivo activity_main.xml en formato de texto:
El ADT ya insertó un control de tipo RelativeLayout que permite ingresar controles visuales alineados a los bordes y a otros controles que haya en la ventana (más adelante analizaremos este layout)
Ya veremos que podemos modificar todo este archivo para que se adapte a la aplicación que queremos desarrollar.
Luego contenido en el control RelativeLayout hay otro control de tipo TextView que es básicamente una etiqueta o label que mostrará en pantalla el valor almacenado en la propiedad text.
Podemos modificar directamente el archivo xml o en "vista de diseño" modificar los valores de las propiedades. Elegimos nuevamente la pestaña "Graphical Layout" y seleccionamos el TextView con el mouse y vemos que en la parte derecha de la pantalla aparece una ventana llamada "properties":
properties
Y estando seleccionado el TextView buscamos la propiedad Text y cargamos: "Mi primer programa para Android" y presionamos enter, podemos ver que se actualiza la vista:
properties
Con esto ya podemos probar nuestra primer aplicación para un dispositivo Android. SELECCIONAMOS con el mouse en la ventana de la izquierda (Package Explorer) el proyecto001 y presionamos el ícono de Run (triángulo verde) o desde el menú. Seleccionamos que se ejecute como aplicación "Android Application". Ahora se abrirá el AVD(Android Virtual Device) esto tarda bastante tiempo, es muy importante recordar que luego de ver ejecutándose el programa NO debemos cerrar el AVD para que la próxima ejecución se inicie más rápido (podemos minimizar el AVD)
Ahora podemos ver nuestra primer aplicación corriendo en el emulador de Android:
AVD con programa Android en ejecucion
Como hemos visto el ADT nos genera en forma automática todas las carpetas y archivos básicos que necesitamos en un principio. En el siguiente concepto podremos empezar a programar verdaderamente. El único objetivo de este ejercicio es recordar los pasos para crear un proyecto.

Las estructuras de carpetas de un proyecto Android.



SRC FOLDER/Bajo la organización de paquetes, esta carpeta tiene todo el código de fuente. Estarán ubicadas todas las clases Java de la aplicación.

GEN FOLDER/Aquí es donde se genera el código para todos los recursos definidos en la carpeta res. Así es como se puede acceder a los diseños y controles definidos dentro de su código.

ANDROID PRIVATE LIBRARIES/Almacena las librerías externas que utilices para todo lo que vas a trabajar de Android (Librerias Android). 

ASSETS FOLDER/En esta carpeta irían todos los recursos extra que puedes usar y que no sean de Android, por ejemplo fuentes y archivos multimedia.

BIN FOLDER/Es una área de ensayo para preparar sus archivos para ser empaquetados en su APK.

LIBS FOLDER/Puede contener las librerías de Java externas(ficheros.jar) que utilice nuestra aplicación. Normalmente no incluiremos directamente aquí ninguna librería, si no que haremos referencia a ellas en el fichero build.gradle.

RES FOLDER/Contiene todos los ficheros de recursos necesarios para el proyecto imágenes , layouts, cadenas de texto, etc. Los diferentes tipos de recursos se pueden distribuir entre las siguientes subcarpetas:


/res/drawable/Contiene las imágenes y otros elementos gráficos usados por la aplicación. Para poder definir diferentes recursos dependiendo de la resolución y densidad de la pantalla del dispositivo se suele dividir en varias subcarpetas:
/drawable(recursos independientes de la densidad)
/drawable-ldpi(densidad baja)
/drawable-mdpi(densidad media)
/drawable-hdpi(densidad alta)
/drawable/xhdpi(densidad muy alta)
/drawable-xxhdpi(densidad muy muy alta)

/res/LAYOUT/Contiene los ficheros de definición XML de las diferentes pantallas de la interfaz gráfica. Para definir distintos layouts dependiendo de la orientación del dispositivo se puede dividir también en subcarpetas:
/layout (vertical)
/layout-land(horizontal)

/res/MENU/Contiene la definición XML de los menús de la aplicación.

/res/VALUES/Contiene otros ficheros de XML de recursos de la aplicación, como por ejemplo de cadenas de texto(strings.xml),arrays(styles.xml), colores(colors.xml), arrays de valores(arrays.xml), tamaños (dimens.xml), etc. 

ANDROIDMANIFEST.XML/Este archivo lo podríamos comparar con un Web.config o App.config de otros lenguajes, aquí se almacenan todas las configuraciones relacionadas a la aplicación. También se deben definir cada una de las actividades, servicios y permisos que necesitamos para correr nuestra app, entre otras cosas.

LOS ARCHIVOS XML EN UN PROYECTO ANDROID
Como sabrás XML es uno de los estándares más utilizados en la actualidad para codificar información. ... Entre otras cosas es utilizado para definir Layouts, animaciones,AndroidManifest.xml,etc. Una de las mayores fortalezas de la plataforma Android es que se aprovecha el lenguaje de programación Java y sus librerías.
                 EJEMPLO DE PROGRAMA XML
Vamos a ver más en detalle la estructura de un documento XML bien formado. Para ello, emplearemos un ejemplo básico que mostramos a continuación, donde describimos las partes que lo forman. Es conveniente resaltar que todo componente de un documento es un objeto, y que a cada objeto del árbol se le denomina nodo:
Documento XML
Como se puede apreciar en la imagen anterior, el ejemplo estaría formado por:
(1) Un prólogo (opcional), en el que se especifica que se trata de un documento XML y del tipo de codificación utilizado (en este caso UTF-8 para representar un carácter Unicode o identificador único). Dentro de este prólogo se podrá establecer un DTD que describe los elementos, atributos, notaciones y entidades para utilizar en el documento, o un esquema XML, similar a un DTD, pero que permite asociar tipos de datos con elementos.
Ejemplo de DTD interno:
Ejemplo de creación de esquema XML:
Ejemplo de documento XML asignado al XML esquema:
(2) Elemento o nodo raíz (obligatorio), que formará el cuerpo del documento, y que englobará al resto de elementos hijos declarados. Dicho elemento será padre del resto de elementos, y sólo es posible establecer un elemento raíz por documento XML.
(3) Elementos hijos o nodos rama del elemento raíz, que a su vez estarán formados por nodos hijos (nodo final o también llamado hojas), donde se establecen las cadenas de texto. Para añadir un atributo al elemento declarado (información extra sobre el elemento donde se implemente), bastará con definirlo de la siguiente manera:
     ARCHIVOS TIPO CLASE EN JAVA
Un proyecto Java podemos considerarlo como una serie de carpetas ordenadas y organizadas de acuerdo con una lógica para mantener organizado el código. Un proyecto suele constar de archivos .java, archivos .class y documentación.
.
EJEMPLO:
Los archivos .java contienen el código fuente (entendible por humanos) que en un momento dado podemos modificar con un editor de textos y suelen encontrarse en carpetas de nombre src (source). Los archivos .class contienen el bytecode (no entendible por humanos pero sí por la máquina virtual Java) y suelen encontrarse en carpetas de nombre bin (binary).
La organización de los archivos en carpetas y la presencia de otros adicionales depende del entorno de desarrollo que utilicemos. Además, Java introduce un esquema organizativo a través de paquetes (packages) que comentaremos más adelante.
Para trabajar con proyectos en la mayoría de entornos, incluido BlueJ, debemos tenerlos en un soporte grabable accesible (por ejemplo en una carpeta de nuestro disco duro). No es válido por tanto un cd, dvd, unidad remota restringida o carpeta del disco duro con restricciones. El motivo es que los entornos de desarrollo trabajan grabando información en la carpeta del proyecto que se encuentre activo. Por tanto un soporte no escribible no es adecuado. Si queremos trabajar con un proyecto contenido en un cd o dvd, primero lo copiaremos a nuestro disco duro y después lo abriremos para trabajar con él 
Vamos a crear nuestro primer proyecto. Para ello conviene crear primero una carpeta donde ir almacenando los proyectos que vayamos creando. Hazlo en la ruta que te parezca más adecuada. Nosotros usaremos C:/ProyectosCursoJava. Pulsamos en el menú Project -> New Project y buscamos la carpeta donde vamos a guardar el proyecto.
               Donde pone “Nombre de archivo” escribiremos ProyectoP1 o cualquier otro nombre que nos parezca adecuado.
 A continuación, en el lateral izquierdo pulsamos sobre New Class y donde nos solicita nombre para la clase (Class Name) escribimos “Ejemplo” y pulsamos aceptar. Nos aparecerá un icono con el nombre “Ejemplo” y rayas transversales. Ese icono representa una clase. Discutiremos qué es una clase en Java un poco más adelante, por ahora simplemente pensaremos que una clase es código Java. Ahora vamos a ejecutar una pequeña prueba. Pulsa sobre el botón “Compile” y el rayado que aparecía deberá haber desaparecido.
--------------------->
COMPILADO
¿Qué hemos hecho en este proceso? Al crear la clase, hemos creado un archivo denominado Ejemplo.java. Al pulsar sobre “Compile”, hemos transformado el código que contenía ese archivo en bytecode y hemos creado el archivo Ejemplo.class. ¿Pero qué código hemos compilado si no hemos escrito nada? Efectivamente, no podríamos compilar algo vacío. La explicación radica en que cuando se crea una clase vacía BlueJ la crea con un código por defecto, digamos que un ejemplo muy básico de código que ya es compilable. Vamos a comprobar lo que hemos dicho sobre los archivos: para ello vamos al explorador de archivos y nos dirigimos a la ruta donde tenemos guardado el proyecto.