Cómo obtener un informe de comportamiento para el reporte de errores en MacOS

A la hora de notificar errores de software a una compañía o desarrollador es muy importante aportar información sobre qué estaba sucediendo en la máquina cuando se produjo el error

Este informe de comportamiento se puede obtener de forma muy sencilla en MacOS.

Lo primero que debemos hacer es abrir la aplicación Monitor de actividad. Esta aplicación se encuentra en Aplicaciones/Utilidades o también la podemos encontrar fácilmente a través de SpotLight.

Una vez abierta debemos pulsar el botón de menú llamado Acciones que se encuentra dentro de la barra de herramientas. Al pulsar este botón se desplegará un menú. En ese menú debemos seleccionar la opción Diagnóstico del sistema.Al seleccionar esa opción nos aparecerá un diálogo avisando del contrato de privacidad ya que ese informe incorporará información personal sobre el usuario y las aplicaciones en uso. Más concretamente el texto que aparece en el diálogo es el siguiente:

Esta herramienta genera archivos que permiten a Apple investigar sobre problemas con tu ordenador y ayuda a mejorar los productos de Apple.

Estos archivos pueden contener información personal que se haya encontrado en tu dispositivo o que esté relacionada con tus cuentas de iCloud y que incluye, por ejemplo, tu nombre, el número de serie de tu dispositivo, el nombre de tu dispositivo, los dispositivos periféricos que tengas conectados, tu nombre de usuario, tu dirección de correo electrónico, los ajustes de tu cuenta de correo electrónico, nombres y rutas de archivos, las sugerencias de Siri, la dirección IP de tu ordenador e información de la conexión de red.

Apple hace uso de esta información de acuerdo con lo establecido en su política de privacidad (www.apple.com/es/privacy) y no la comparte con ninguna otra empresa.

Al usar esta herramienta y enviar los resultados a Apple, aceptas que Apple utilice el contenido de dichos archivos para mejorar sus productos.

Una vez aceptado el contrato de privacidad comenzará el proceso de generación del informe. Este proceso podrá tardar varios minutos.

Una vez terminada la generación del informe se abrirá Finder en una carpeta donde se almacena información de varios servicios del sistema. En ella deberá haber un fichero comprimido con un nombre parecido a este: sysdiagnose_2023.10.12_07-43-27+0200_macOS_MacBookPro18-4_23A344.tar.gz.

El fichero es pesado (entre 50Mb y 600Mb dependiendo de la actividad en el momento de generarlo) por lo que si se ha de enviar a Apple o a otra compañía será necesario utilizar algún servicio para compartir ficheros pesados.

Este fichero comprimido contiene ficheros logs con información de las aplicaciones que han sido ejecutadas en los últimos días por lo que es importante indicar la hora y minuto en la que sucede el error para que los desarrolladores puedan encontrar el problema.

Actualizado el script de VoiceOverTranslator

El script de AppleScript de VoiceOverTranslator ha sido actualizado incluyendo un script extra que nos permite traducir el contenido que tengamos almacenado en el portapapeles.

Ahora podemos selecciona un bloque de texto completo y utilizando las funciones de la API de GoogleTrans obtener una traducción a nuestro idioma preferido.

Puedes obtener estos dos scripts en el repositorio de Tyflos Accessible Software para VoiceOverTranslator.

Cómo utilizar el emulador de Android fuera de Android studio

Los entornos de desarrollo para dispositivos móviles como Xcode o Android studio incluyen alguna herramienta para poder probar los proyectos en desarrollo sin necesidad de tener un dispositivo físico. Esta herramienta simula el comportamiento de un dispositivo físico. En el caso de Android studio esta herramienta se conoce como emulador de Android y viene incluido en el Android SDK que se instala junto a Android studio.

Este emulador, en las últimas versiones de Android studio, se ejecuta por defecto dentro del entorno de Android studio. Pero podemos necesitar ejecutar el emulador de Android fuera del entorno de Android studio. Las razones pueden ser muy variadas: el acceso al emulador no es muy accesible dentro de Android studio, el consumo de recursos de Android studio y el emulador pueden superar los recursos disponibles en la máquina que estemos utilizando, puede que queramos ejecutar una aplicación Android en nuestra máquina para realizar alguna tarea, etc. En cualquier caso es de agradecer que podamos acceder al emulador desde fuera de android studio.

Accediendo al emulador

El emulador de Android está dentro de las herramientas del SDK de Android. Es un comando de la Terminal por lo que podemos acceder a él desde la terminal de Mac o Linux o el CMD de Windows.

El SDK de Android se puede instalar de forma individual junto a las Platform-tools de Android. Al instalar Android studio también se instalará el SDK de Android. Dentro de ese SDK encontraremos una carpeta llamada emulador.

El emulador simula un dispositivo virtual que ejecuta una versión de Android. La creación y administración de dispositivos virtuales se realiza dentro de Android studio pero una vez creado el dispositivo virtual no tenemos por qué seguir utilizando el emulador dentro de Android studio.

Para abrir el emulador debemos conocer qué dispositivos virtuales están disponibles y conocer el nombre exacto con el que el sistema identifica a cada dispositivo virtual. 

Ejecutando el siguiente comando se listarán los dispositivos virtuales disponibles.

emulator -list-avds

A la hora de escribir este artículo en mi máquina se encuentran los siguientes dispositivos:

pixel3a-api31
pixel6a-api33

Conociendo el nombre exacto de los dispositivos virtuales podemos, por ejemplo arrancar el Pixel6A ejecutando el siguiente comando en la terminal:

emulator -avd pixel6a-api33

Tras introducir el comando se abrirá el entorno de emulación de Android y se cargará la imagen de Android correspondiente a la API 33 que es Android 13.

Accediendo a la gestión del dispositivo

Una vez esté funcionando el emulador de Android podemos utilizar la herramienta ADB para gestionar varios elementos del dispositivo virtual al igual que haríamos si conectásemos un dispositivo Android físico a nuestra máquina.

El ADB, también conocido como Android Debug Bridge, también se instala con las platform-tools de Android.

 Con el ADB podemos enviar órdenes o enviar archivos a nuestro dispositivo Android.

Veamos algunos comandos sencillos que se pueden realizar con ADB.

Lista de dispositivos conectados

Con el comando adb devices se mostrará una lista de dispositivos conectados a nuestra máquina incluyendo los dispositivos virtuales que están siendo ejecutados en el emulador.

Enviar un fichero al dispositivo

Para enviar un fichero al dispositivo debemos ejecutar el siguiente comando:

adb push rutaDelFicheroAEnviar rutaDeDestinoEnElDispositivo

Enviar un fichero desde el dispositivo a nuestra máquina

Con el siguiente comando el dispositivo enviará un fichero a nuestra máquina:

adb pull nombreDelFicheroARecuperar rutaDeNuestraMaquinaParaElFichero

Instalar un APK

Con el siguiente comando instalaremos un paquete de aplicación (APK) en nuestro dispositivo:

adb install nombreCompletoDelFicheroAPK

Desinstalar una aplicación

Con el siguiente comando desinstalaremos un APK del dispositivo:

adb uninstall nombreCompletoDelAPK

Acceder a la terminal del dispositivo

Con el siguiente comando accederemos a la Shell o terminal del dispositivo para poder realizar ciertas operaciones de gestión:

adb shell

Reiniciar el dispositivo

Con ADB también podemos realizar varios tipos de reinicio en el dispositivo.

Para hacer un reinicio normal el comando es:

adb reboot

Y para hacer un reinicio con bootloader el comando es:

adb reboot bootloader

También podemos activar el modo recovery:

adb reboot recovery

Problemas para ejecutar los comandos

Si al intentar ejecutar el comando adb o emulator la terminal o el CMD nos da un mensaje de error indicando que no se encuentra el fichero o comando esto indica que las carpetas de las platform-tools de android no están incluidas en el path de nuestra máquina. Para poder ejecutar estos comandos bien podemos incluir todo el path hasta la carpeta concreta donde está el comando adb o emulator o bien incluir estas rutas en la variable path de nuestra máquina.

Qué es Docker

En la actualidad tanto para el uso profesional como el personal existen 3 principales plataformas o sistemas operativos para los ordenadores de escritorio: Linux, Windows y MacOS. Estas 3 plataformas publican actualizaciones y nuevas versiones para que todas las personas puedan acceder a una versión más optimizada y segura de su entorno de trabajo. Esta premisa debería permitir que una aplicación o proyecto software se pueda ejecutar en cualquier ordenador que esté corriendo la misma plataforma para la que se diseñó la aplicación pero esto no es así.

Dentro de un ordenador que está ejecutando una de las 3 plataformas que hemos mencionado antes se ejecutan multitud de procesos, programas de apoyo y se disponen de distintas librerías que hacen de herramientas de apoyo a otras aplicaciones. Cada proceso, librería y programas de apoyo también tienen sus correspondientes actualizaciones y nuevas versiones. Unido a todo esto se ha de mencionar que tanto Windows, MacOS y Linux permiten al usuario personalizar ciertas características y configuraciones que permiten al usuario optimizar su máquina a su gusto o necesidad. Por ejemplo, la configuración y personalización de un ordenador dedicado a hacer de servidor web para miles de usuarios es muy distinta a la configuración de un ordenador que se utiliza en casa para tareas educativas, ócio y personales.

En mi máquina funciona

Dentro de la ingeniería del software es muy habitual que la persona encargada del desarrollo de un proyecto no pueda utilizar el ordenador que se utilizará como servidor en producción por lo que tendrá que configurar su ordenador de trabajo con una configuración lo más semejante posible a la que tendrá ese servidor en producción. Esto casi siempre es imposible debido tanto a las diferencias en el hardware como en las posibles diferencias entre versiones y configuraciones del conjunto de librerías, procesos y programas de apoyo entre una máquina y otra.

En un primer momento la industria del software optó por el uso de máquinas virtuales pero esto implicaba que los equipos dedicados al desarrollo fuesen más potentes que los equipos de producción ya que la ejecución de una máquina virtual requería tanta potencia como la máquina anfitriona y la virtualizada.

Con el cambio de arquitectura de proyectos monolíticos a proyectos con microservicios la situación mejoró. En lugar de tener que utilizar una maquina completa para ejecutar toda la aplicación empaquetada en un único ejecutable (arquitectura monolítica) se pasó a la arquitectura de microservicios en la que un proyecto software completo se divide en muchos módulos pequeños y cada uno de estos módulos sólo se encarga de resolver uno de los problemas existiendo una comunicación interna entre cada uno de los microservicios que forman un proyecto completo.

Con este nuevo paradigma el uso de una máquina virtual para desarrollar un microservicio era innecesario ya que el microservicio requería de muy poca potencia para su ejecución tanto simulada durante el desarrollo como durante su explotación en producción. Era necesario la aparición de un nuevo método de virtualización que permitiese la ejecución de un microservicio que requiera sólo los recursos mínimos necesarios para su correcta ejecución y que al ejecutarse ya incluya todo lo necesario sin necesidad de depender de la máquina que lo ejecute. Nace Docker, un sistema de virtualización muy pequeño especializado en la ejecución de microservicios.

De esta forma un desarrollador instala Docker para crear sus entornos de ejecución y desarrollar su microservicio. Una vez desarrollado puede instalar Docker en la máquina de producción, trasladar el microservicio desarrollado y ejecutarlo en la máquina final. Como Docker facilita que el microservicio se ejecute siempre con la misma configuración en cualquier máquina ya no sucede el problema de que en la máquina de desarrollo todo iba bien y en producción todo va mal.

En conclusión podemos decir que Docker es una herramienta que permite ejecutar programas y aplicaciones de forma aislada, sin que se afecten entre sí. Es como una caja virtual que contiene todo lo que un programa necesita para funcionar correctamente. Esto facilita la instalación, ejecución y distribución de aplicaciones en diferentes máquinas.

Qué es Fastlane

Dentro del desarrollo de software es habitual que los entornos de desarrollo incluyan muchas herramientas para realizar tareas relacionadas con el mantenimiento y la publicación de una aplicación software. Pero la mayoría de estas herramientas integradas en los entornos de desarrollo funcionan de forma manual requiriendo una completa atención por parte de la persona que está desarrollando el software.

La automatización de procesos dentro de la ingeniería del software se ha demostrado como uno de los caminos más beneficiosos para aumentar la productividad y la fiabilidad del software. Por esta razón han ido apareciendo multitud de herramientas que permiten realizar más tareas y procesos que los entornos de desarrollo y, sobre todo, automatizar estos procesos.

¿Qué es Fastlane?

Fastlane es una de estas herramientas que permiten automatizar muchos de los procesos y tareas relacionadas con el desarrollo de software para iOS y Android.

Esta herramienta creada por Felix Crause consiste en un conjunto de servicios y aplicaciones ejecutadas desde la línea de comandos (CLI) utilizando lenguaje Ruby y permite automatizar muchos de los procesos que se realizan con Android Studio y Xcode.

Entre las diversas tareas que permite automatizar Fastlane están las siguientes:

  • Creación de capturas de pantalla para la tienda de aplicaciones
  • Despliegue de la app dentro de entornos de betatesting como Test flight.
  • Publicación del proyecto en la tienda de aplicaciones
  • Firma de paquetes de software para la distribución del proyecto
  • Ejecución de planes de tests

Como todas estas automatizaciones se ejecutan desde la línea de comandos es muy fácil incluir scripts de la Terminal para realizar comprobaciones o actualizaciones de recursos para la distribución de nuestro proyecto software.

En futuros artículos veremos algunas de estas automatizaciones con más detalle.

La instalación de fastlane es muy sencilla y su uso consiste principalmente en la ejecución de ciertos comandos de Terminal en la propia carpeta raíz de nuestro proyecto software. Este uso de la Terminal hace que el uso de Fastlane resulte más accesible que utilizar ciertas herramientas visuales incluidas en Xcode o Android studio.

Puedes obtener documentación, ejemplos y más información en la página oficial de Fastlane.

Cómo descargar extensiones de Chrome

El navegador web Chrome, al igual que hace Firefox, utiliza extensiones para ampliar la funcionalidad que nos ofrece este navegador web a los usuarios.

Estas extensiones están programadas con tecnologías propias de aplicaciones Web como son HTML, CSS y Javascript.

Dentro de las distintas posibilidades que nos ofrecen las extensiones de Chrome son las de utilizar Chat GPT, gestionar mejor las descargas, realizar evaluaciones automáticas de accesibilidad o descargar elementos que no se pueden descargar de forma sencilla.

La extensión CRX Extractor

Una de estas tareas de descargar que no se pueden hacer de forma sencilla es la de descargar extensiones de Chrome desde su tienda de extensiones y la solución pasa por utilizar una utilidad en forma de extensión para poder descargarla.

Lo primero que debemos hacer es desde Chrome instalar la extensión CRX Extractor desde la Store de extensiones de Chrome.

Una vez instalada la utilidad y tras haberla activado podemos utilizarla mientras examinamos otra extensión en la Store de Chrome.

Esta utilidad nos permite descargar una extensión en formato CRX (propio de Chrome) o en formato ZIP para poder examinar cómo está construida la extensión.